|
Оператор цикла с постусловием
Раздел 3 Программирование
На языке Pascal
Лабораторная работа №1
Программы линейной структуры
Цель работы: изучить структуру программы на языке Pascal ,
операторы присваивания, ввода и вывода данных
Содержание работы:
1 Структура программы на языке Pascal
2 Операторы языка Pascal
3 Стандартные функции Pascal
Структура программы на языке Pascal
Программа на языке Turbo Pascal 7..0 имеет следующие разделы:
РАЗДЕЛ ОБЪЯВЛЕНИЙ
| program
| Заголовок программы
| {$…}
| Глобальные директивы компилятора
| uses
| Подключаемые библиотеки (модули)
| label
| Раздел объявления глобальных меток
| const
| Раздел объявления глобальных констант
| type
| Раздел объявления глобальных типов
| var
| Раздел объявления глобальных переменных
| РАЗДЕЛ ПРОЦЕДУР И ФУНКЦИЙ
| Procedure (function)
| Заголовок процедуры (функции)
{тело процедуры}
| РАЗДЕЛ ОСНОВНОГО БЛОКА ПРОГРАММЫ
| begin
end.
| Основной блок программы
|
В тексте программы могут присутствовать комментарии. Это невыполняемая часть программы, она не компилируется в машинные коды и составляются программистом для пояснения работы программы, её элементов, операторов и т.д.. Комментарии оформляется как произвольный текст, ограниченный с двух сторон фигурными скобками - {…} или звёздочками - * …*.
Операторы языка Pascal
Оператором называется элементарная структурная единица программы. Он предназначен как для записи алгоритмических действий по преобразованию данных, так и для задания порядка выполнения действий (операций) программы. Операторы автоматически выполняются в порядке их следования в программе и отделяются друг от друга символом "точка с запятой".
Операторы делятся на:
· простые (не содержат в себе других операторов);
· составные (включают в себя один или несколько дополнительных операторов).
Оператор присваивания
С помощью данного оператора определяется или переопределяется значение переменной языка Pascal – присваивается значение переменной или вычисляется выражение.
Формат (синтаксис) оператора: <имя>:=<выражение>;
Выражение должно быть совместимо по присваиванию с типом переменной.
Примеры:
X:=Pi;
Y:=Sqr(Z*Z+T*T);
Bool:=(I>1) or (I<3);
Операторы ввода данных
Операторы ввода предназначены для ввода исходных данных в программу и имеют вид:
READ(X,Y,Z,...);
READLN(X,Y,Z,...);
где: X,Y,Z,... - имена переменных. Данные операторы обеспечивают ввод данных с клавиатуры и присваивают переменным X,Y,Z,... их значения, вводимые с клавиатуры.
Оператор READLN (X,Y,Z,...) отличается от READ(X,Y,Z,...) тем, что после ввода последней переменной курсор переводится в начало новой строки. Допускается использование оператора ввода без параметров: READLN; , который используется для останова программы.
Операторы вывода данных
Для вывода данных на экран используются операторы:
WRITE (X,Y,Z,...);
WRITELN (X,Y,Z,...);
WRITELN ;
где: X,Y,Z,... - имена переменных, значения которых подлежат выводу
Оператор WRITE(X,Y,Z,...) выполняет вывод на экран значений переменных X,Y,Z,... в одну строку.
Оператор WRITELN (X,Y,Z,...) кроме вывода на экран значений X,Y,Z,..., осуществляет перевод курсора в начало новой строки после вывода последнего значения.
Оператор WRITELN осуществляет пропуск строки, в которой находится курсор, к началу новой строки (выводит пустую строку).
Операторы вывода допускают использование указания о ширине поля, отводимого под значение в явном виде:
WRITE (Y:m:n,X:k:l,...);
WRITELN (Y:m:n:,X:k:l,...);
где m и k - количество позиций, отведенных под запись значения переменных Y и X соответственно; n и l - количество позиций, отведенных под запись дробной части чисел Y и X.
Примеры:
WRITE('Сумма = ',Sum); {вывод на экран текста «Сумма = », затем значения суммы, которое хранится в переменной Sum}
WRITELN('Введите ',I,'-й элемент: ');
WRITELN (t:5:3); - вывод значения t, всего 5 символов, из них 3 – после запятой.
Стандартные функции Pascal
Стандартными функциями языка программирования Pascal приведены в табл. 1
Таблица 1:
Имя функции
| Выполняемая операция
|
|
| ABS(X)
| Вычисляет модуль аргумента х, тип х – вещественный или целый, тип результата совпадает с типом аргумента
| SQR(X)
| Вычисляет квадрат аргумента (х2), тип х – вещественный или целый, результат совпадает с типом аргумента
| SQRT(X)
| Вычисляет корень квадратный из аргумента х (х>0); тип х – вещественный или целый, тип результата вещественный
| SIN(X)
| Вычисляет синус аргумента х (х – в радианах); тип х – вещественный или целый, тип результата вещественный
| COS(X)
| Вычисляет косинус аргумента х (х – в радианах); тип х – вещественный или целый, тип результата вещественный
| | ARCTG(X)
| Вычисляет арктангенс аргумента х (х – в радианах); тип х – вещественный или целый, тип результата вещественный
| | EXP(X)
| Возведение числа е=2,71828 в степень х (ех), тип х – вещественный или целый, тип результата вещественный
| |
|
| EXP10(Х)
| Возведение числа 10 в степень х (10х), тип х – вещественный или целый, тип результата вещественный
| LN(X)
| Вычисляет натуральный логарифм аргумента х (х>0); тип х – вещественный или целый, тип результата вещественный
| LOG(X)
| Вычисляет логарифм по основанию 10 аргумента х (х>0); тип х – вещественный или целый, тип результата вещественный
| Эти функции содержатся в памяти среды программирования Pascal и являются подпрограммами вычисления наиболее используемых функций итерационными методами.
Примеры составления линейной программы
Пример 1 Найти среднее арифметическое трёх чисел - двух целых (X и Y) и одного вещественного (Z) и квадрат среднего арифметического.
Программа:
program Midding;
Var
X, Y: Integer;
Z, Midd, SqrMidd: Real;
Begin
WriteLn('Введите два целых числа X и Y:');
ReadLn(X,Y);
WriteLn('Введите вещественное число Z:');
ReadLn(Z);
Midd:=(X+Y+Z)/3;
SqrMidd:=SQR(Midd)
Writeln('Среднее арифметическое = ',Midd);
Write('Квадрат среднего арифметического = ',SqrMidd);
End.
Описание программы
В заголовке указано имя программы - Midding (среднее), затем словом var открывается раздел описания переменных: X и Y – целые, Z – вещественная. Слово begin открывает основной блок программы, в котором:
▪ оператор WriteLn выводит на экран текст "Введите два целых числа X и Y:";
▪ оператор ReadLn(X,Y)считывает значения чисел, введённых с клавиатуры и присваивает их соответственно целым переменным X и Y;
▪ далее выводится текст "Введите вещественное число Z:",
оператор ReadLn(Z)считывает значение числа, введённого с клавиатуры и присваивает его вещественной переменной Z;
▪ затем оператор присваивания вычисляет среднее значение X,Y,Z и присваивает его переменной Midd, затем аналогично вычисляется квадрат этой величины и присваивается переменной SqrMidd;
▪ оператор Writeln выводит текст "Среднее арифметическое = ",
рассчитанное значение Midd и переводит курсор на новую строку;
▪ оператор Write выводит текст "Квадрат среднего арифметического = " и рассчитанное значение SqrMidd;
▪ оператор end. закрывает основной блок и завершает выполнение программы.
Пример 2Вычислить площадь круга S и длину окружности L по заданному радиусу R.
Программа
program KRUG;
const P=3.14159
Var
R,S,L:Real;
Begin
Read(R);{ввод значения радиуса}
L:=2*P*R;
S:=P*SQR(R);
Writeln(Длина окружности = ',L,'см');
Write('Площадь круга = ',S,'кв.см');
End.
4 Контрольные вопросы
1 Из каких разделов состоит любая программа на языке Pascal?
2 Формат и назначение оператора присваивания.
3 Формат и назначение операторов ввода данных.
4 Формат и назначение операторов вывода данных.
Задание
№ вар
| Задание
|
|
|
| Определить расстояние между двумя точками с координатами (x1,y1) и (x2,y2).
|
| Найти периметр и площадь прямоугольника.
|
| Вычислить:
|
|
|
| Найти площадь поверхности куба по формуле T=6a2
|
| Определить расстояние, пройденное физическим телом за время t, если тело движется с постоянной скоростью v.
|
| Вычислить:
|
| В году примерно 3.156х107сек. Написать программу, которая запрашивает возраст в годах и переводит его в секунды.
|
| Вычислить:
|
| Найти объем цилиндра по формуле: V=pR2H
|
| Найти расстояние от точки с координатами (x,y) до начала координат.
|
| Масса m одной молекулы воды примерно равна 3.0х10-23гр. Кварта воды равна примерно 950 гр. Написать программу, которая запрашивает количество воды в квартах и выводит число молекул в этом количестве воды.
|
| Найти объем куба по формуле V=a3. (с использованием и без использования стандартных функций).
|
| Вычислить:
|
| Написать программу, которая запрашивает количество дней и переводит в недели и дни. Например, 18 дней = 2 недели и 4 дня.
|
| Найти диагональ и площадь квадрата
|
| Вычислить:
|
| Найти площадь боковой поверхности шара: T=4pR2
|
| Вычислить:
|
| Вычислить:
|
|
|
| Написать программу, которая запрашивает время в часах и минутах, после чего переводит в минуты, затем в секунды и выводит результаты на экран.
|
| Вычислить:
|
| Найти площадь всей поверхности цилиндра: T=2pR(R+H)
|
Содержание отчета
1 Наименование, цель и содержание работы.
2 Задание на лабораторную работу согласно варианту.
3 Схема алгоритма, текст программы и результат её работы.
4 Письменные ответы на контрольные вопросы.
5 Выводы по работе.
Лабораторная работа №2
Операторы ветвления: условный оператор, оператор варианта
Цель работы: изучить операторы, используемые для организации
ветвления в программе.
Содержание работы:
1 Условный оператор
2 Оператор варианта
Условный оператор IF
С помощью условного оператора и оператора выбора варианта реализуется операция ветвления алгоритма. С помощью этих операторов проверяется условие ветвления и, в зависимости от его результатов выбирается одно из возможных направлений дальнейших вычислений.
Условный оператор IF позволяет выбрать одно из двух направления расчёта в зависимости от некоторого условия, при этом одна из ветвей может отсутствовать. В качестве условия выбора используется значение логического выражения. Оно может быть простым или сложным. Сложные условия организуются при помощи логических операций AND, OR, NOT.
Формат оператора IF имеет вид:
if <выражение> then
<оператор1>
[else <оператор2>]
Примечание.Выражения в квадратных скобках могут отсутствовать вычисления выражения получается логическое значение типа Boolean. Если результатом является значение TRUE (Истина), то выполняется оператор1, следующий за служебным словом Then (тогда). Если же в результате выполнения получается значение FALSE (Ложь), то выполняется оператор2, следующий Else (иначе). Если часть условного оператора в квадратных скобках (со словом Else) отсутствует, то управление автоматически передается следующему оператору программы.
Условные операторы IFмогут быть вложены друг в друга, количество вложений неограниченно. Следует отметить, что использование в операторе IF после служебного слова thenвторого оператора IF приводит с синтаксически неоднозначной конструкции вида:
if <выражение1> then
if <выражение2> then
<оператор1>
Else
<оператор2>
Компилятор Турбо Паскаль разрешает подобную неоднозначность, интерпретируя этот фрагмент следующим образом:
if <выражение1> then
Begin
if <выражение2> then
<оператор1>
Else
<оператор2>
end;
Таким образом, служебное слово else всегда ассоциируется с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else.
Пример 1:
if X>Y then Если X>Y, то переменной Max
Max:=X присваивается значение Х,
еlseесли нет, то значение Т
Max:=T;
Пример 2:
if X>0 then Если Х>0, то Y вычисляется как
Y:=Sqrt(X); квадратный корень из Х
Пример 3:
if Ch=1 then Если переменная Ch=1,
Begin
X:=Sin(X); то X вычисляется как sinX
WriteLn(‘Sin(x)= ’,X); и выводится на экран,
End
else если нет (Ch≠1), то
Begin
X:=Cos(X); X вычисляется как cosX и
WriteLn(‘Cos(x)= ’,X); выводится на экран
end;
Пример 4 Найти y=max(a,b,c), a,b,c – даны.
if а>b then Если a>b, то переменной max
max:=a присваивается значение a,
еlse если нет, то значение b. Далее вместо
max:=b; а и b используется наибольшая из них -max
if max>c then Если max>c, то переменной
y:=max y присваивается значение max,
еlseесли нет, то значение с
y:=c;
Write(‘y= ’,y);
2 Оператор варианта CASE
Оператор Case (case – случай) производит ветвление программы на произвольное множество ветвей. Из этого множества либо выбирается единственная ветвь, отвечающая одному из заданных условий, либо ни одной, если ни одно из условий не выполняется.
Оператор варианта состоит из выражения (селектора) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else. Селектор должен иметь порядковый тип данных. Строковый тип и длинный целый тип данных являются недопустимыми типами селектора. Все константы выбора должны быть уникальными и иметь порядковый тип данных, совместимый с типом селектора.
Формат оператора Case:
case <селектор> of
<константа_выбора1>: <оператор1>;
<константа_выбора2>: <оператор2>;
...
<константа_выбораN>: <операторN>;
[else <оператор>]
end;
Оператор Сase сравнивает значение селектора со всеми константами (или диапазонами) выбора и ,в случае их выполняет следующий за константой оператор. Если такой константы выбора или такого диапазона выбора не существует и присутствует ветвь else, то выполнятся оператор, следующий за ключевым словом else. Если же ветвь else отсутствует, то никакой оператор конструкции Case не выполняется, а программа автоматически переходит к своему следующему оператору.
Пример 5:
Case Ch of
‘A’..’Z’: WriteLn(‘Латинский алфавит’);
‘А’..’Я’: WriteLn(‘Русский алфавит’);
end;
В случае, когда переменная Ch является одной из A…Z, то на печать выводится текст "Латинский алфавит", а когда Ch является одной из A…Я, то на печать выводится "Русский алфавит".
Пример 6:
Case I of
0, 2, 4, 6, 8: Writeln('Четная цифра');
1, 3, 5, 7, 9: Writeln('Нечетная цифра');
Else
Writeln('Цифра не принадлежит диапазону 0..9!');
end;
Если переменная I равна 0, 2, 4, 6, 8, то выводится текст "Чётная цифра", если переменная I равна 1,3,5,7,9, то выводится текст "Нечётная цифра"
Примечание.Во всех примерах оператор end; означает завершение данного блока операторов, а не всей программы. Конец программы Pascal записывается оператором end. (end с точкой).
3 Контрольные вопросы
1 Назначение условного оператора и оператора варианта.
2 Формат и действие оператора IF.
3 Формат и действие оператора Case.
Задание
Задание по оператору if
№ вар
| Задание
|
|
|
| 1.1 Составить алгоритм и программу нахождения корней уравнения ax2+bx+c=0. Предусмотреть варианты двух, одного корня, а также, когда действительных корней нет.
| 1.2 Вычислить y=max{a,b,min{c,d}}, a, b, c, d – числа.
|
| 2.1 Составить алгоритм и программу вычисления функции y0 (x,y- даны)
| 2.2 Вычислить (x вводится с клавиатуры).
|
|
|
| 3.1 Составить алгоритм и программу вычисления функции (х вводится)
| 3.2 Вычислить: y=min{max{a,b},c}, a, b, c, d – даны.
|
| 4.1 Составить алгоритм и программу вычисления функции, x вводится с клавиатуры.
| 4.2 Вычислить:
(а,b,c,d – вводятся)
|
| 5.1 Составить алгоритм и программу вычисления функции, x, a, b, c – вводится с клавиатуры.
| 5.2 Вычислить y=min{a,b,c}+max{d,f}, где a, b, c, d, f – даны
|
| 6.1 Составить алгоритм и программу вычисления функции, x – вводится с клавиатуры.
| 6.2 Вычислить: (a, b, c, d – вводятся с клавиатуры)
|
| 7.1 Составить алгоритм и программу вычисления функции, x, y – вводится с клавиатуры.
|
|
|
| 7.2 Написать программу, которая в зависимости от введенных А, В и С считает их произведение, если они все положительны; или сумму, если хотя бы одно отрицательно.
|
| 8.1 Известно, что из четырёх чисел a, b, c, d одно отлично от трех других, равных между собой. Найти сумму данного числа с любым из трех оставшихся.
| 8.2 Вычислить:
U = max(x,y)+2*(min(x,y,z)) ( x, y, z – вводится с клавиатуры)
|
| 9.1 Даны координаты двух точек. Определить, какую из осей пересекает отрезок, соединяющий две этих точки.
| 9.2 Найти квадратный корень из числа А (вводится с клавиатуры). Проверить корректность ввода числа.
|
| 10.1 Дан номер года. Найти число дней в этом году.
Указание . В современном (григорианском) календаре каждый год, номер которого делится на 4, является високосным, за исключением тех, которые делятся на 100 и не делятся на 400. Например, 1990 год - не високосный, 2000 год – високосный
| 10.2 Вычислить
(x,y,z,v – вводятся с клавиатуры и принадлежат [-7;7])
|
| 11.1 Логической переменной T присвоить значение TRUE или FALSE в зависимости от того, является натуральное число k кратно 5 или нет
| 11.2 Вычислить
(x вводится с
клавиатуры)
|
| 12.1 Определить и вывести на печать номер квадранта, в котором расположена точка М(x,y), x и y заданные вещественные числа.
| 12.2 Вычислить
(a,b,c,d вводятся
с клавиатуры)
|
|
|
| 13.1 Даны действительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a,b,c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.
| 13.2 Написать программу, которая проверяла бы справедливость неравенства, в результате выводила бы True или False:
|
| 14.1 Время в полете вычисляется по формуле T=S/V, где S – расстояние между пунктами, V – скорость полета самолета. Определить время в полете при отсутствии ветра и при наличии встречного ветра (V1 – скорость ветра).
| 15.1 Написать программу проверки трех введенных чисел на четность/нечетность. Вывести, сколько из них четно, сколько нечетно.
|
| 15.1 Написать программу, которая проверяла бы справедливость неравенства, в результате выводила бы True или False:
(n вводится с клавиатуры)
|
| 16.1 Вычислить
, где x,y,z,a,b-вводятся, причем а,b должны быть кратны 5, иначе выдать соответствующее сообщение
| 16.2 Ввести возраст человека в годах и в зависимости от числа добавить «лет» или «года». Например, 25 лет, 2 года.
|
| 17.1 Вычислить сумму А,В и С, если все они четны, разность, если есть хотя бы одно нечетное.
| 17.2 Найти max(min(a,b);min(c,d)).
|
| 18.1 Найти максимум из трех чисел. Если он больше некоторого числа А, то найти сумму этих чисел, иначе – произведение.
| 18.2 Ввести трехзначное число и найти сумму цифр этого числа.
|
|
|
| 19.1 Вычислить
, где x,y,z,a,b-вводятся, причем а,b четные, иначе выдать соответствующее сообщение
| 19.2 Ввести три числа и определить, есть ли среди них четные и кратные 3 одновременно.
|
| 20.1 Найти среднее арифметическое трех чисел. Если оно больше некоторого числа А, то возвести его в квадрат, иначе удвоить.
| 20.2 Вычислить
|
4.2 Задание по оператору варианта сase
1 Написать программу, которая требует ввода времени дня и, в зависимости от введенного значения, желает доброго утра, доброго дня, доброго вечера или спокойной ночи.
2 Реализовать в программе меню выбора арифметических действий. В зависимости от варианта посчитать значение выражения Y:=X{+|-|*|/}А. Х и А вводятся.
3 Написать программу, которая требует ввода числа месяца и, в зависимости от введенного значения, сообщает номер декады.
4 Написать программу, где ожидается ввод символа с клавиатуры, после чего определяется, является ли этот символ буквой, цифрой или специальным символом.
5 Написать программу, которая ждет ввода первой буквы названия месяца. В зависимости от этого определяет квартал. Учесть: Июнь, Июль – разные кварталы.
6 Реализовать в программе меню выбора логических операций. В зависимости от варианта посчитать значение произвольного выражения, операндами которого являются 0 и 1.
7 Написать программу, которая ждет ввода первой буквы названия месяца. В зависимости от этого определяет время года.
8 Написать программу, которая требует ввода номера месяца, числа и, в зависимости от введенного значения, сообщает, сколько дней осталось до
нового года.
9 Написать программу, которая ждет ввода буквы и, в зависимости от введенного значения, сообщает, является ли буква заглавной или строчной.
10 Написать программу, которая запрашивает ваше имя и рост в сантиметрах, а затем отображает информацию в виде: высокий, средний, низкий.
11 Написать программу, которая ждет ввода знака арифметической операции и, в зависимости от введенного символа, вычисляет значение произвольного арифметического выражения.
12 Написать программу, которая запрашивает ваш возраст в годах, а затем отображает информацию о периоде вашей жизни: детство, отрочество, юность, молодость, зрелость, старость.
13 Написать программу определения цвета в зависимости от введенного числа.
14 Написать программу, которая ждет ввода буквы русского алфавита и в зависимости от этого определяет гласная или согласная. Если согласная, то звонкая или глухая.
Содержание отчета
1 Наименование, цель и содержание работы.
2 Задание согласно варианту.
3 Схема алгоритма, тексты программ.
4 Результаты работы программы.
5 Выводы по работе
Лабораторная работа №3
Арифметические циклы
Цель работы: изучить операторы циклов, используемые для
организации повторяющихся процессов.
Содержание работы
1 Оператор цикла repeat
2 Оператор циклаwhile
3 Оператор циклаfor
Общие сведения
Оператор цикла задает повторное выполнение определенных операторов. Паскаль предусматривает использование трех операторов цикла:
· оператор цикла с постусловием repeat
· оператор цикла с предусловием while
· оператор цикла с параметром for
Если число повторений заранее известно, то подходящей конструкцией является оператор for. В противном случае следует использовать операторы whileили repeat. Для управления повторением операторов можно использовать стандартные процедуры Break и Continue. Break завершает оператор цикла и передает управление первому непосредственно следующему за циклом оператору, а Continue завершает текущую итерацию и продолжает со следующей итерации этого оператора.
Оператор цикла с постусловием
Оператор цикла с постусловием начинается со служебного слова repeat, заканчивается после выполнения условия, следующего за служебным словом until.
Формат оператора:
Repeat
<последовательность операторов>;
until <выражение>;
Результат выражения должен быть булевского типа. Операторы, заключенные между ключевыми словами repeat и until, выполняются последовательно до тех пор, пока результат выражения не примет значение True (т.е. если выражение есть false, то цикл повторяется). Последовательность операторов выполнится по крайней мере один раз, поскольку проверка - вычисление выражения производится в конце цикла, после каждого выполнения последовательности операторов.
При использовании оператора repeat возможно зацикливание программы. Это может произойти, если проверяемое выражение постоянно сохраняет значение False.
Пример 1
Repeat
K := I mod J; {остаток от деления I на J}
I := J;
J := K;
until J = 0;
Цикл выполняется ДО тех пор, пока J (остаток) не станет равно нулю.
Пример 2
Repeat
Write('Введите значение (0..9):');
Readln(I);
until (I >= 0) and (I <= 9);
Цикл выполняется ДО тех пор, пока 0<=I<=9.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|