Операторы ввода read и readln
Синтаксис операторов:
READ (V1,V2, ...,VN);
READLN (V1,V2, ...,VN); READ LINE (читать строку)
где V1, V2, …, VN – список переменных
Оператор ввода обеспечивает чтение данных из стандартного файла INPUT и присвоение прочитанных значений соответствующим переменным в порядке их следования. Типы вводимых значений должны соответствовать типу соответствующих переменных.
В качестве элементов списка ввода можно использовать только переменные вещественного, целого и символьного типов. Вводимые значения отделяются друг от друга пробелами или располагаются на строках разного уровня.
Оператор READLN выполняет действия, аналогичные оператору READ, но после ввода последней переменной из списка ввода осуществляется переход к началу новой строки файла INPUT. Оператор READLN без списка ввода реализует переход к началу новой строки.
Пример 1: Пусть дан фрагмент программы. PROGRAM VVOD; VAR K, M, N: INTEGER; A1,A2,X,Y:REAL; BEGIN READ (A1,K,M); READ (X,Y,N); READ (A2) END. | Протокол работы: 2 10 15 2,5 8,3 1 4,8 В результате выполнения операторов READ переменные примут значения: А1=2; К=10 и т. д. |
ОПЕРАТОРЫ ВЫВОДА WRITE И WRITELN
Синтаксис операторов:
WRITE (E1,E2, ...,EN);
WRITELN (E1,E2, ...,EN); WRITE LINE (писать в строку)
где E1, E2, ..., EN - список выводимых выражений.
Оператор вывода осуществляет вывод значений выражений, указанных в списках вывода, в стандартный файл OUTPUT. Вид печатаемой единицы данных определяется типом соответствующего выражения.
Оператор WRITELN выполняет те же действия, что и оператор WRITE, но после вывода последнего выражения из списка вывода осуществляется переход на новую строку. Для того чтобы пропустить на экране строку нужно использовать оператор WRITELN без параметров, т. е. WRITELN.
При выводе на экран нескольких чисел в строку они не отделяются друг от друга пробелами.
Пример: WRITE (‘ЯП Паскаль’,5*3); WRITELN (7<10); WRITELN (sqr(4)); | Протокол работы: ЯП Паскаль15TRUE |
УПРАВЛЕНИЕ ФОРМОЙ ВЫВОДА ДАННЫХ
Если программиста не устраивает стандартная форма вывода, то он использует средства управления печатью (указатели форматов вывода). Для этого в Паскале используют две положительные целые величины:
– ширина поля вывода (количество позиций на экране, отводящихся для вывода данного выражения), которая указывается через двоеточие после соответствующего выражения в операторе вывода;
– точность представления (количество цифр в дробной части числа), которая указывается через двоеточие после ширины поля вывода.
В этом случае оператор вывода имеет вид:
WRITE(LN) (E1:M1:N1,E2:M1:N1, ...,EN:MN:NN);
где MI (I=1,N) – это ширина поля вывода,
NI (I=1,N) – точность представления.
Если ЕI – выражение типа CHAR, то выводится символ и столько пробелов перед ним, чтобы общее количество знаков равнялось ширине поля.
Если ЕI – типа INTEGER, то печать производится аналогично типу CHAR.
Если ЕI – типа REAL и не задана точность представления, то число выдается в экспоненциальной форме.
Если ЕI типа BOOLEAN, то печатается TRUE или FALSE и перед ними печатается столько пробелов, какова общая ширина поля.
WRITE (‘a’:3); WRITELN (2:1,5<7,2>7:8); | Протокол работы: _ _А2TRUE_ _ _FALSE |
ОПЕРАТОР ПРИСВАИВАНИЯ
Синтаксис оператора:
V:=E;
где V – переменная, Е – выражение.
Оператор присваивания выполняется следующим образом: вычисляется значение выражения Е, стоящего в правой части оператора, и это значение присваивается переменной V, стоящей в левой части.
При использовании оператора необходимо помнить, что тип выражения должен соответствовать типу переменной.
Допускаются следующие различия типов:
1) Переменной вещественного типа можно присвоить значение целого типа.
2) Переменной целого типа можно присвоить значение ограниченного типа.
Пример:
Вычислить процент выполнения плана выпуска продукции по предприятию.
PROGRAM PRIMER1;
USES CRT;
VAR
P,F,PR:REAL;
BEGIN
CLRSCR;
WRITELN (‘Введите план и фактический выпуск продукции’);
READLN (P, F);
PR:=F/P*100;
WRITELN (‘План выпуска продукции составляет:’,P:5:2);
WRITELN (‘Фактический выпуск продукции составляет:’,F:5:2);
WRITELN (‘Процент выполнения плана равен’,PR:6:2)
END.
Задачи для самостоятельного решения:
1. Даны семь чисел, найти их среднее арифметическое.
2. Вычислить дробную часть среднего арифметического трех заданных положительных чисел.
3. Вычислить длину окружности, площадь круга и объем шара одного и того же заданного радиус.
4. Вычислить периметр и площадь прямоугольного треугольника по динам двух катетов.
5. По длине двух сторон треугольника и углу между ними вычислить длину третьей стороны и площадь треугольника.
6. Ввести любой символ языка Паскаль и определить его порядковый номер, а также предыдущий и последующий символы (использовать функции ORD, PRED и SUCC).
БЕЗУСЛОВНЫЙ ОПЕРАТОР
Синтаксис оператора:
GOTO метка;
Безусловный оператор служит для изменения порядка выполнения операторов и для перехода на оператор с меткой, которая указана в этом операторе.
Оператор GOTO следует применять в исключительных случаях; частое его использование затрудняет чтение программы и свидетельствует о невысокой культуре программирования.
С помощью оператора GOTO нельзя:
1. Передать управление во внутрь составного оператора.
2. Передать управление во внутрь оператора цикла.
3. Передать управление во внутрь оператора выбора.
4. Передать управление в процедуру.
5. Передать управление из одной ветви условного оператора в другой условный оператор.
УСЛОВНЫЙ ОПЕРАТОР
Синтаксис оператора:
1. Полная форма
IF условие THEN оператор 1 ELSE оператор 2;
2. Краткая форма
IF условие THEN оператор 1;
оператор 2;
Условный оператор используется при создании программ, в которых в зависимости от проверки какого-либо условия, определяется один или несколько вариантов возможных действий.
Условие – это логическое выражение, которое может принимать значение истина или ложь. Если условие истинно, то выполняется оператор, следующий за словом THEN, т.е. оператор 1; если условие ложно, то выполняется оператор, следующий за словом ELSE, т. е. оператор 2 - для полной формы оператора, либо оператор, следующий за условным - для сокращенной формы.
Для наглядности условный оператор следует записывать, сдвигая альтернативные части по отношению к условию.
IF условие
THEN оператор 1
ELSE оператор 2;
После слов THEN и ELSE могут стоять и условные операторы. Для определения соответствия слов IF и ELSE следует руководствоваться следующим правилом: конструкция ELSE относиться к ближайшему IF, для которого не установлено соответствие.
Например: IF условие 1
THEN IF условие 2
THEN IF условие 3
THEN оператор 1
ELSE оператор 2
ELSE оператор 3
ELSE оператор 4;
Если после слов THEN и ELSE надо выполнить несколько операторов, то для этого используют операторные скобки BEGIN и END. Оператор в этом случае будет называться составным условным оператором.
IF условие
THEN BEGIN
оператор 1;
оператор 2;
……………;
оператор N
END;
Примеры:
1. Вычислить переменную Z в зависимости от условия:
x2, если x< 3
Z= x2-2x+5, если 3≤ x≤ 4
x-2, если x>4
PROGRAM PRIMER2;
USES CRT;
LABEL
1;
VAR
X,Z:REAL;
OTV:CHAR;
BEGIN
1: CLRSCR;
WRITELN (‘Введите произвольное число X’);
READLN (X);
IF X<3
THEN Z:=SQR (X)
ELSE IF X<=4
THEN Z:=SQR(X)-2*X+5
ELSE Z:=X–2;
WRITELN (‘При значении X =’,X:5:2);
WRITELN (‘Значение Z=’,Z:5:2);
WRITELN (‘Будете вводить новые данные (Y/N)?’);
READLN (OTV);
IF (OTV=’Y’) OR (OTV=’y’)
THEN GOTO 1
END.
2. Записать условные операторы.
Задачи для самостоятельного решения:
|
– X, если X< 0
2. – X2, если Х≤0
Y= 0, если 0≤X≤½
X – ½, если Х>½
3. Если Х и Y отрицательные, то каждое из них возвести в квадрат, иначе меньшее из них заменить абсолютной величиной.
4. Даны три числа а, b, c. Найти min из этих чисел и проверить его на равенство 0. Если min=0, то повторить ввод всех трех чисел.
5. Найти остаток от деления целого выражения С=К*(А+В) на 4. Вывести на печать сообщение об остатке. Если остаток равен 0, то выражение С оставить без изменения. Если равен 1 или 3, уменьшить С на величину остатка. Если остаток равен 2, то увеличить С на величину остатка. Новое значение С вывести на печать.
6. Найти корни квадратного уравнения .
7. Написать программу для определения подходящего возраста для вступления в брак, используя следующее соображение: возраст девушки равен половине возраста мужчины плюс 7, возраст мужчины определяется соответственно как удвоенный возраст девушки минус 14. Данные для проверки работы программы задать самостоятельно.
ОПЕРАТОР ВАРИАНТА (ВЫБОРА) CASE
Синтаксис оператора:
CASE выражение OF
список меток 1: оператор 1;
список меток 2: оператор 2;
…………………………….…..;
список меток N: оператор N
[ELSE оператор]
END;
где CASE – вариант или выбор, OF – из, END – конец;
выражение – это выражение любого скалярного типа, кроме REAL.
список меток – это список разделенных запятыми значений выражения или одно из его значений.
Список меток должен содержать хотя бы одно значение выражения, указанного после ключевого слова CASE, следовательно, метки и выражение должны иметь одинаковый тип. Метка - это необязательно целое число и она не описывается в разделе LABEL и на нее нельзя ссылаться в операторе GOTO.
Оператор выбора является обобщением условного оператора, т. е. дает возможность выполнить один из нескольких операторов в зависимости от значения некоторого выражения.
Оператор выполняется следующим образом:
1. Вычисляется значение выражения.
2. Среди меток находится это значение.
3. Выполняется тот оператор, метка которого равна значению выражения.
4. После выполнения оператора управление передается в конец оператора CASE.
Пример:
1. Определить площади различных геометрических фигур:
S=
PROGRAM PRIMER3;
USES CRT;
LABEL
1;
VAR
A,B,H,FI,S,R:REAL;
N:INTEGER;
BEGIN
CLRSCR;
WRITELN (‘Введите значения переменных A,B,H,FI,R’);
READLN (A,B,H,FI,R);
1:WRITELN (‘Введите N от 1 до 5’);
READLN (N);
IF (N<1) OR (N>5)
THEN BEGIN
WRITELN (‘Повторите ввод’);
GOTO 1
END;
CASE N OF
1:S:=A*B;
2:S:=A*H/2;
3:S:=(A+B)*H/2;
4:S:=PI*SQR(R);
5:S:=PI*SQR(R)*FI/360
END;
WRITELN (‘Площадь фигуры равна ',S:7:2)
END.
Задачи для самостоятельного решения:
1. Составить программу, которая переводит числовую оценку знаний учащегося в ее словесный эквивалент (2 – «неудовлетворительно», 3 – «удовлетворительно», 4 – «хорошо», 5 – «отлично»). В случае неправильного ввода дать сообщение «Нет такой оценки».
2. Составить программу, которая бы по введенному номеру времени года (1 – зима, 2 – весна, 3 – лето, 4 - осень) выдавала соответствующие этому времени года месяцы, количество дней в каждом из месяцев.
3. Составить программу, которая выводит на экран меню:
1. Первое
2. Второе
3. Третье
и в зависимости от выбранного пункта выдает одну из надписей: «Получите суп», «Получите картошку», «Получите компот», «Оставайтесь голодными».
Операторы цикла
В языке Паскаль существует 3 вида операторов цикла:
1. Оператор цикла с постусловием;
2. Оператор цикла с предусловием;
3. Оператор цикла с параметром.