- •ПРЕДИСЛОВИЕ
- •1.1. История и классификация языков программирования высокого уровня
- •1.2. Первое (знакомство с Паскалем
- •Задания
- •Лекция 2
- •2.1. Некоторые сведения о системе ТУрбо-Паскаль
- •2.2. Способы описания языка программирования
- •Лекция 3
- •3.2. Типы данных
- •4.1. Структура Паскаль-программы
- •4.2. Арифметические операции, функции, выражения Арифметический оператор присваивания
- •Форматы процедуры write
- •Задания
- •1. Что будет напечатано программой
- •если последовательно вводятся три числа: 36, -6, 2345?
- •5.2. Функции, связывающие различные типы данных
- •Задания
- •Теперь посмотрим, как это программируется наТЛаскале.
- •Здесь
- •<параметр цикла>::= <имя простой переменной порядкового типа>
- •Задания
- •7.1. Подпрограммы-процедуры
- •7.2. Подпрограммы-функции
- •7.4. Рекурсивные подпрограммы
- •8.1. Что такое рекуррентная последовательность
- •8.2. Программирование вычислений рекуррентных последовательностей
- •Задания
- •Задания
- •6. Вывод результата.
- •Теперь будем составлять подпрограммы.
- •Задания
- •12.2. Операции над множествами
- •12.3. Примеры использования множеств
- •Красивая программа! К сожалению, ею нельзя воспользоваться для
- •В этой программе использована функция определений размера файла:
- •.Fiiesize(<HMH файловой переменной>);
- •Задания
- •14.2. Работа с файлами записей
- •Задания
- •15.2. Связанные списки
- •Лекция 16
- •16.1. Организация внешних подпрограмм
- •16,2. Создание и использование модулей
- •распечаткой текста программы с подробными комментариями.
- •выполнения следующих операции над обыкновенными дробями вида -q
- •(Р — целое, Q — натуральное):
- •1) сложение;
- •2) вычитание;
- •3) умножение;
- •4) деление;
- •5) сокращение дроби;
- •7) функции, реализующие операции отношения (равно, не равно,
- •Используя этот модуль, решить задачи:
- •При разработке модуля рекомендуется такая последовательность
- •Задания
- •Приведем текст программы целиком.
- •ЗАДАНИЯ ПО ТЕМЕ “ЛИНЕЙНЫЕ АЛГОРИТМЫ”
- •ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА
- •Сортировка массивов
- •ЗАДАЧИ ПО ТЕМЕ “ОБРАБОТКА СТРОК”
- •ЗАДАНИЯ ПО ТЕМЕ “МОДУЛИ”
- •ЗАДАНИЯ ПО ТЕМЕ “ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ”
- •Задачи, предлагавшиеся на школьных олимпиадах по программированию (Пермская область)
- •Учебное издание
|
Форматы процедуры write |
|
I |
— выводится десятичное представление величины I, начиная с по |
|
зиции расположения курсора. |
|
|
Значение I Оператор |
Результат |
|
134 |
write (I) |
134 |
287 |
w rite(I, I, I) |
287287287 |
I :P — выводится десятичное представление величины I в крайние правые позиции поля шириной Р.
Значение I |
Оператор |
|
Результат |
134 |
Write (I |
6) |
134 |
312 |
Write ((I |
+ I) |
7) ____624 |
R — в поле шириной 18 символов выводится десятичное представле ние величины R в формате с плавающей точкой. Если R > 0.0, исполь зуется ф орм ат__#. ##########Е*##. Если R < 0.0, то формат имеет
вид _ - # .##########Е*##. |
|
|
Значение R |
Оператор |
Результат |
715.432 |
Write (R) |
___7. 1543200000Е+02 |
- 1 .919Е+01 |
Write(R) |
_ -1 .9190000000Е+01 |
R:Р — в крайние правые позиции поля шириной Р символов выво дится десятичное представление значения R в нормализованном фор мате с плавающей точкой. Минимальная длина поля вывода для по ложительных чисел составляет 7 символов, для отрицательных — 8 символов. После точки выводится, по крайней мере, одна цифра.
Значение R Оператор Результат
511.04Write(R:15) 5 .110400000Е+02
46.78 W rite(-R:12) -4.67800Е+01
R:Р: Q — в крайние правые позиции поля шириной Р символов вы водится десятичное представление значения R в формате с фиксиро ванной точкой, причем после десятичной точки выводится Q цифр (о %Q < 24), представляющих дробную часть числа. Если Q = 0, то ни дробная часть, ни десятичная точка не выводятся. Если Q > 24, то при выводе используется формат с плавающей точкой.
Значение R Оператор Результат
511.04 Write(R 8 4) 511.0400
-46.78 Write(R 7 2) „-46.78
Ch:P — в крайнюю правую позицию поля шириной Р выводится значение Ch.
Значение Ch |
Оператор |
|
|
Результат |
||
’ X’ |
|
Write |
(Ch3) |
|
„ X |
|
’ ! ’ |
|
Write |
(Ch2, |
Ch |
4) _ ! ____ ! |
|
S — начиная с позиции курсора выводится значение S. |
||||||
Значение S |
|
Оператор |
Результат |
|||
’ Day N’ |
|
Write(S) |
Day N |
|
||
’ RRDD’ |
W rite(S, |
S) |
RRDDRRDD |
|||
S:P — значение S выводится в крайние правые позиции поля шири |
||||||
ной Р символов. |
Оператор |
|
|
Результат |
||
Значение S |
|
|
|
|||
’ Day N’ |
|
Write(S |
|
10) |
|
_____ Day N |
’ RRDD’ |
|
Write(S |
|
5, S |
5) |
.RRDD.RRDD |
В — выводится результат выражения В: true или false, начиная с
текущей позиции курсора. |
|
|
Значение В |
Оператор |
Результат |
True |
Write (В) |
True |
False |
W rite(В, |
Not В) FalseTrue |
В:P — в крайние правые позиции поля шириной Р символов выво
дится результат булевского выражения. |
|
||
Значение В |
Оператор |
|
Результат |
True |
Write (В |
6) |
True |
False |
Write (В |
6, Not В |
7) .F a lse ___ True |
4.4.Управление символьным выводом на экран в ТУрбо-Паскале
Использование для вывода на экран только процедур write и writeln дает программисту очень слабые возможности для управле ния расположением на экране выводимого текста. Печать текста мо жет производиться только сверху вниз, слева направо. Невозможен возврат к предыдущим строкам, стирание напечатанного текста, из менение цвета символов и т.д.
Дополнительные возможности управления выводом на экран дают процедуры и функции модуля CRT.
Для установления связи пользовательской программы с модулем пе ред разделами описаний должна быть поставлена строка:
Uses CRT
Для работы с модулем CRT необходимо познакомиться со следую щими понятиями: режимы экрана, координаты на экране, текстовое окно, цвет фона и цвет символа.
Режимы экрана. Во-первых, вывод на экран может происходить в текстовом или графическом виде (на графических дисплеях). Мы здесь будем говорить только о текстовом выводе.
Дисплеи бывают монохроматические (черно-белые) и цветные. Мо нохроматические дисплеи могут работать только в черно-белом ре жиме; цветные — как в черно-белом, так и в цветном. Кроме того, текстовые режимы различаются по количеству символьных строк и столбцов, умещающихся на экране.
В модуле CRT каждый режим имеет определенный номер, за ко торым закреплено символическое имя (описанная константа). Список таких констант приведен в табл. 1 Приложения 1.
Для установки режима экрана используется процедура
T extM od e(<H O M ep р е ж и м а > ) .
При обращении к процедуре <номер режима> может задаваться как числом, так и именем соответствующей константы. Например, экви валентны два оператора:
TextMode(l);
TextMode(CQ40);
Как правило, исходный режим экрана, устанавливаемый “по умол чанию” , — СО80 (на цветных дисплеях).
Координаты позиции. Каждая символьная позиция на текстовом экране определена двумя координатами (Х ,У ). Х-коордйната — по зиция в строке. Крайняя левая позиция в строке имеет X = 1. У- координата — номер строки, в которой находится символ. Строки ну меруются сверху вниз.
Например, в режиме 80 х 25 символ в верхнем левом углу имеет координаты (1; 1); символ в нижнем правом углу — (80; 25); символ в середине экрана — (40; 13).
Для установления курсора на экране в позицию с координатами (Х ,У ) в модуле CRT существует процедура:
GoToXY(X, Y)
после очистки экрана, то чистое окно будет иметь черный цвет (по умолчанию), а назначенный цвет фона будет устанавливаться в тех позициях, в которые выводятся символы.
Вот пример программы, в которой по очереди откроются 4 окна, и каждое из них “зальется” разным фоновым цветом:
Uses Crt; {Example2.pas}
Begin
Windov(l, 1, 40, 12);
TextBackGround(White); ClrScr;
Window(41, 1, 80, 12);
TextBackGround(Red); ClrScr;
Windov(l, 13, 40, 25);
TextBackGround(LightRed); ClrScr;
Window(41, 13, 80, 25);
TextBackGround(Green); ClrScr;
End.
По следующей программе на экран выведутся номера первых пят надцати цветов разной окрашенности (в соответствии со своим цве том) на белом фоне в середине экрана.
Uses Crt; {Example3.pas}
Var I Byte;
Begin
TextBackGround(White);
ClrScr;
GoToXY(l, 12);
For I := 0 To 14 Do
Begin
TextColor(I);
Write(I 5)
End
End.
Кратко опишем еще несколько процедур управления текстовым эк раном из модуля CRT. Все эти процедуры не имеют параметров.
Процедура ClrEOL. Стирает часть строки от текущей позиции кур сора до конца этой строки в окне. При этом положение курсора не Меняется.
Процедура DelLine. Уничтожает всю строку с курсором. Нижние строки сдвигаются на одну вверх.
Процедура InsLine. Вставляет пустую строку перед строкой, в ко торой стоит курсор.