Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмизация и программирование. Практическое пособие
.pdf
11
Задание 3
1. Изучив строение программы My1, напишите свою програм-
му My1а, аналогичную данной в примере 1.
2. Назначьте в своей программе значение одной константе.
Опишите по две переменные целого и вещественного типа. Присвойте описанным переменным значения с помощью операторов
присваивания, при написании арифметических выражений руководствуйтесь правилами данного пункта.
3. Используйте для конструирования арифметических выра-
жений целые и дробные числа, константы, а также встроенные
функции языка Паскаль.
4. Попробуйте присвоить целой переменной дробное значение.
5. Сохраните программу My1а на Вашем носителе инфор-
мации.
4. Комментарии. Операторы ввода и вывода
4.1. Комментарий — неисполняемая часть программы, игнорируется транслятором. Рекомендуется для собственных пометок: описания цели программы, ее структуры, основных обозначений, входных и выходных данных.
Комментарий заключается в знаки {…} или (*…*), внутри
которых можно помещать любой текст, в том числе и на русском
языке.
Примеры операторов с комментариями:
a:=/3; {используем встроенную константу }
k,l:integer; (*описание 2 целых переменных*)
4.2. Операторы ввода служат для введения значений пере-
менных непосредственно с клавиатуры компьютера. В списке
ввода может быть одно или несколько имен переменных, разделенных запятыми. Все используемые переменные должны быть
описаны в блоке описания переменных var. При работе оператора ввода пользователь набирает на клавиатуре столько чисел,
сколько переменных в списке ввода, причем для целых переменных набираются целые значения, для вещественных — целые
числа или десятичные дроби. Вводимые числа разделяются про-

12
read(список вводимых переменных);
readln(список вводимых переменных);
Оператор ввода
без перевода строки
Оператор ввода
с переводом строки
write(список вывода);
writeln(список вывода);
Оператор вывода
без перевода строки
Оператор вывода
с переводом строки
белами. После последнего вводимого значения данного оператора ввода нужно нажать клавишу <Enter>.
Существуют два варианта оператора ввода:
В первом случае по окончании ввода курсор останется в той
же строке экрана, где осуществлялся ввод чисел. Во втором случае по окончании ввода курсор на экране будет переведен на новую строку.
4.3. Операторы вывода служат для выведения на экран текстов и значений переменных. Выводимый текст в операторе вывода заключается в кавычки, например: ’Введите два целых
числа ’, ’Rezultat:’. В окно вывода будут выведены указанные в примере тексты, но без кавычек.
Содержание выводимого текста транслятором игнорируется,
для компьютера это просто набор символов. Элементы вывода
(тексты в кавычках и имена переменных) разделяются запятыми.
Переменные из списка вывода должны быть обязательно описаны
в блоке описания переменных var. У каждой выводимой переменной должно быть значение, заданное либо оператором присваивания, либо оператором ввода с клавиатуры.
Существуют два варианта оператора вывода:
Второй оператор отличается от первого переводом курсора на
экране на новую строку по окончании данного вывода.
4.4. Вернемся к примеру 1. При выполнении данной програм-
мы в окнах вывода и ввода не появляется никаких сообщений, так
как в этом примере нет ни одного оператора вывода и ввода. Рас-

13
program My2;
const
a=4;
g=9.8;
var
b:integer; (*целое*)
c,d,f:real; {веществ.}
begin
b:=a+1;
c:=g*2+7;
d:=sin(9)/8;
d:=abs(d);
write(’Введите число ’);
readln(f);
f:=f-b;
writeln(’f=’, f);
end.
Оператор назначения имени
Заголовок блока констант
Оператор назначения константы
Оператор назначения константы
Заголовок блока переменных
Оператор описания переменной
Оператор описания переменных
Заголовок блока операторов
Оператор присваивания
Оператор присваивания
Оператор присваивания
Оператор присваивания
Оператор вывода текста
Оператор ввода переменной
Оператор присваивания
Оператор вывода текста и значения
Конец программы
четы, заданные в программе, производятся в оперативной памяти,
там же остаются и результаты, пользователь об этом не уведомляется. Чтобы наладить диалог с выполняемой программой примера 1, дополним ее операторами ввода и вывода. Допишем новые операторы в текст программы My1 в конце операторного
блока (перед end.).
Пример 2:
По сравнению с программой из примера 1 в текст двух операторов описания переменных добавили комментарии и в конец
операторного блока добавили пять операторов (два оператора
ввода, два оператора вывода и оператор присваивания).
Добавленные комментарии игнорируются транслятором и на
выполнение программы не влияют, они нужны как пояснения или
напоминания пользователю. Рассмотрим работу пяти добавленных в программу операторов:
1) write(’Введите число ’); — оператор вывода текста. Программа в ходе выполнения откроет окно вывода в нижней части экрана, будет выведена надпись Введите число.
Обратите внимание на пробел между словом число и кавыч-
кой, закрывающей текст. Это сделано для того, чтобы курсор на

14
экране сдвинулся на одну позицию, и последующий ввод или вывод не сливался с выведенным текстом;
2) readln(f); — оператор ввода числа. В этом месте выполнение программы остановится, откроется окно ввода в нижней строке экрана, и компьютер будет ожидать ввода числа.
Пользователь должен набрать в окне любое вещественное число
и нажать клавишу <Enter>, завершая ввод. Введенное значение
присвоится переменной f, а также отобразится в окне вывода. По
окончании ввода строка ввода закроется.
Далее в программе можно использовать переменную f с данным значением или в дальнейшем присваивать ей другие значения с помощью операторов присваивания или ввода.
В данном операторе ввода была использована команда
readln, а не read, поэтому по окончании ввода числа курсор
будет переведен на новую строку экрана, и новый ввод или вывод
начнется с новой строки.
Предшествующий оператор вывода текста не связан с данным
оператором ввода, так как компьютер не понимает значения выводимого текста, для него это лишь набор символов. Оператор
вывода write перед оператором ввода readln является под-
сказкой пользователю о том, что в данный момент нужно набирать на клавиатуре число и вводить его.
В одном операторе ввода могут вводиться значения нескольких переменных, тогда оператор будет выглядеть следующим
образом:
readln(f,c,d); — пользователь должен будет ввести с
помощью клавиатуры три числа через пробел, а затем нажать
клавишу <Enter>. Переменной f будет присвоено значение первого числа из введенных, переменной c — второго, переменной
d — третьего;
3) f:=f-b; — оператор присваивания, уже описанный ра-
нее, в нашем примере он приведен для того, чтобы показать, что
значение переменной, введенное оператором ввода read можно
впоследствии менять с помощью операторов присваивания или
нового ввода. В данном операторе присваивания значение переменной f уменьшится на величину переменной b;
4) writeln(’f=’, f); — оператор вывода, в списке выво-
да поясняющий текст ’f=’ и вывод численного значения пере-

15
менной f. Использование команды writeln, а не write нужно для того, чтобы после вывода результата вычислений курсор
перешел на новую строку на экране.
Вывод результата вычислений является естественным завершением большинства расчетных программ, а поясняющий текст
’f=’ является не обязательным, но он помогает пользователю
понять, что за число выведено на экран. Еще разумнее в поясняющем тексте писать не имя переменной, а смысловое наполнение в
соответствии с условиями решаемой задачи, например:
writeln(’Сумма вклада ’, f);
writeln(’Объем воды в бассейне ’, f);
В операторе вывода можно вывести одновременно несколько
значений переменных и поясняющих текстов, например:
writeln(’Координаты точки ’, c, ’,’ d); — будет выведен поясняющий текст и два числа, разделенные текстом
(запятой).
Задание 4
1. Откройте программу My1, добавьте в нее комментарии и
операторы ввода и вывода из примера 2. Назовите новую программу My2 и сохраните ее.
2. Запустите программу My2 на выполнение. Введите значение переменной в окне ввода. Изучите работу операторов вывода.
3. Постройте по аналогии с My2 свою программу My2а. Задайте операторы описания двух целых и двух вещественных переменных. Дополните операторы описания одним—двумя комментариями. Организуйте ввод с помощью клавиатуры одного
целого значения, затем ввод двух вещественных значений для
описанных переменных.
4. Измените введенные значения переменных с помощью операторов присваивания, используя встроенные функции, арифметические действия и сами переменные.
5. Организуйте вывод значений всех переменных, описанных в
программе.
6. Сохраните текст программы, дайте команду на выполнение. Введите все необходимые значения, изучите выведенные
результаты.

16
program My3;
uses CRT;
var
b:real;
begin
write(’Введите число ’);
readln(b);
b:=b+random;
writeln(’Получилось ’,b);
end.
Оператор назначения имени
Блок подключения модуля
Заголовок блока переменных
Оператор описания переменной
Заголовок блока операторов
Оператор вывода текста
Оператор ввода переменной
Оператор присваивания
Оператор вывода текста и значения
Конец программы
5. Подключаемые модули
5.1. Подключаемые модули — это дополнительные библиотеки
языка Паскаль, которые позволяют расширить набор стандартных функций. Например:
CRT — модуль, позволяющий использовать для ввода и выво-
да специальное текстовое окно;
GraphABC — модуль, дающий возможность работать с гра-
фическими объектами и выводить их на экран в специальном
графическом окне.
Ознакомиться с полным набором подключаемых модулей
можно с помощью Основного меню командой Помощь — При-
меры.
5.2. Подключаются дополнительные модули с помощью блока
uses, который располагается после названия программы перед
назначением констант и описанием переменных.
Пример 3:
В этом примере подключен модуль CRT, который направляет
ввод и вывод в специальное текстовое окно:
1) write(’Введите число ’); — оператор вывода текста в текстовое окно;
2) readln(b); — оператор ввода, программа останавливается и ждет ввода с клавиатуры, введенное число появляется в текстовом окне и присваивается переменной b;

17
3) b:=b+random; — оператор присваивания, добавляет к
введенному числу случайную дробную часть;
4) writeln(’Получилось ’,b); — оператор вывода в
текстовое окно поясняющего текста и нового значения переменной b.
Задание 5
1. Откройте программу My2a, запустите ее на исполнение, запомните, как отображаются ввод и вывод данных.
2. Добавьте в программу подключение модуля CRT, аналогично примеру 3. Изучите ввод и вывод в текстовое окно. Назовите
новую программу My3a и сохраните ее.
3. Вызовите из Основного меню Помощь — Примеры,
ознакомьтесь с некоторыми возможностями подключаемых модулей, запуская программы-примеры:
Модуль ABCObjects
gr_MovingObjects.pas — движение случайно сгенери-
рованных объектов.
Модуль GraphABC
Brown_Moving.pas — броуновское движение.
Fractal_c.pas — фракталы.
Модуль VCL
TrackBar.pas — изменение цвета панели (модель RGB).
Graph3D.pas — визуализация трехмерных поверхностей.
6. Переменные символьного и строкового типа.
Операции с ними
В предыдущих разделах и примерах программ мы разобрали
работу с константами и переменными целого и вещественного
типа. В ходе выполнения программы таким константам назначались, а переменным присваивались или вводились численные значения. В языке Паскаль существуют и другие типы
данных, в этом пункте мы рассмотрим два из них: символьный
и строковый.
6.1. Все символы, которые можно использовать в Паскале,
пронумерованы и сведены в специальную таблицу (кодовая таб-
лица ASCII). В нее входят латинские и русские буквы, цифры,

18
знаки операций, скобки и специальные символы (например, звуковой сигнал или перевод строки). Всего символов 256, пронумерованы они от 0 до 255. С клавиатуры можно набрать многие
символы из кодовой таблицы, но не все. К тем символам, которых нет на клавиатуре, можно обратиться по их номеру в кодовой
таблице.
6.2. Переменная символьного типа (их еще называют литерами или литерными переменными) имеет значение какого-либо
одного символа из кодовой таблицы. Оператор описания символьной переменной выглядит следующим образом:
a:char;
В одном операторе можно описать несколько символьных пе-
ременных:
a,b,c,d:char;
Оператор присваивания для символьной переменной строится
аналогично оператору присваивания целой или вещественной переменной, возможны два варианта его организации:
1) справа от знака присваивания помещается сам символ в кавычках:
a:= ’x’;
b:= ’4’;
c:= ’+’;
2) справа от знака присваивания помещается специальный
знак # и номер символа в кодовой таблице:
d:= #65;
Этим способом можно присвоить символьной переменной лю-
бой символ с клавиатуры, а также иные знаки из таблицы.
6.3. При вводе значения символьной переменной с помощью
оператора ввода символ набирается на клавиатуре без кавычек.
Оператор ввода выглядит совершенно так же, как для целой или
вещественной переменной:
read(а);
При выводе символьной переменной с помощью оператора
вывода
write(а);
на экране появляется значение символьной переменной а, т. е. изо-
бражение символа без кавычек (в нашем примере это символ х).
6.4. Переменная строкового типа имеет аналогичный смысл,
что и символьная, с той разницей, что значение символьной пере-

19
a:string;
b:string[4];
Оператор описания строковой
переменной неопределенной длины
Оператор описания строковой
переменной длиной четыре символа
менной — это один символ, а строковой — несколько символов
подряд (в частности, один). При описании переменной строкового типа возможны два варианта:
В первом случае описана строковая переменная a неопреде-
ленной длины, ее значением может стать введенная оператором
read или присвоенная последовательность символов любой
длины.
Во втором случае задана максимальная длина строки (в данном случае — 4, но может быть любое натуральное число). Если
в операторе присваивания или ввода переменной b будет назначен набор символов большей длины, чем задана в описаниии, то
строка будет урезана до четырех первых символов:
b:=’ромашка’; — переменной b присвоится значение
’рома’, так как в нашем примере при описании задана макси-
мальная длина строки b, равная четырем символам.
Если число символов меньше заданного при описании строковой
переменной, то дополнительных символов добавляться не будет.
6.5. Кроме строковых и символьных переменных можно на-
значать аналогичные константы, при этом набор символов справа
от знака = помещается в кавычки:
a=’x’;
b=#65;
c=’Начало цикла’;
6.6. В Паскале существуют различные операции с символь-
ными и строковыми переменными. Мы разберем одну из них —
сложение строк.
Знаком операции сложения строк служит обычный знак +, а
действие заключается в том, что к первой строке символов дописывают вторую. В этой строковой операции в качестве слагаемых
могут участвовать символьные и строковые переменные, константы и отдельные символы в кавычках:

20
a,b,c:string;
. . .
a:=’ро’
b:=’ман’
c:=a+b;
Описаны три строковые переменные произвольной длины
Переменной a присваивается значение ро
Переменной b присваивается значение
ман
Сумма двух строк будет строкой ’роман’,
это значение присвоится переменной c
a:string[5];
. . .
a:=’по’+’ливерпуль’;
Переменная описана как строка
длиной пять символов
Сумма двух строк будет строкой
’поливерпуль’, но она будет
урезана до пяти символов. Строковой переменной a присвоится значение полив
program My4;
uses CRT;
const
a=’Маша’;
var
b:char;
c,d:string;
f:string[3];
begin
write(’Введите сим-
вол’);
readln(b);
c:=’Вася’;
d:=a+b+c;
writeln(’получилось’,d);
f:=#136;
f:=f+c;
writeln(’а теперь’,f);
end.
Оператор назначения имени
Блок подключения модуля
Заголовок блока констант
Оператор назначения константы
Заголовок блока переменных
Оператор описания переменной
Оператор описания переменных
Оператор описания переменной
Заголовок блока операторов
Оператор вывода
Оператор ввода
Оператор присваивания
Оператор присваивания
Оператор вывода
Оператор присваивания
Оператор присваивания
Оператор вывода
Конец программы
Если строковой переменной фиксированной длины присваивается более длинная строка символов, то она обрезается до заданной длины, например:
Пример 4:
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
