Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Программы линейной структурыСтр 1 из 8Следующая ⇒
Раздел 3 Программирование На языке Pascal Лабораторная работа №1 Программы линейной структуры Цель работы: изучить структуру программы на языке Pascal, операторы присваивания, ввода и вывода данных Содержание работы: 1 Структура программы на языке Pascal 2 Операторы языка Pascal 3 Стандартные функции Pascal
Структура программы на языке Pascal Программа на языке Turbo Pascal 7..0 имеет следующие разделы:
В тексте программы могут присутствовать комментарии. Это невыполняемая часть программы, она не компилируется в машинные коды и составляются программистом для пояснения работы программы, её элементов, операторов и т.д.. Комментарии оформляется как произвольный текст, ограниченный с двух сторон фигурными скобками - {…} или звёздочками - * …*. Операторы языка 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:
Эти функции содержатся в памяти среды программирования 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 Формат и назначение операторов вывода данных.
Задание
Содержание отчета 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
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, выполняются последовательно до тех пор, пока результат выражения не примет значение 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. Пример 3 Нахождение факториала числа Х. Fact: =1; while X< =N do Begin Fact: =Fact*X; X: =X+1; end; Пример 4 Генерация случайного числа, не равного 10. while I < > 10 do I: =Random(10) {функция Random(10) генерирует случайное число 0< =I< 10} Оператор цикла с параметром Оператор цикла с параметром начинается со слова for и вызывает повторяющееся выполнение оператора цикла, пока переменной цикла присваивается последовательно возрастающие или убывающие значения. Оператор тела цикла может быть составным оператором. Оператор for имеет два варианта записи: - инкрементный (с возрастанием переменной цикла): for < переменная цикла>: =< начало> to < конец> do < оператор>; - декрементный (с убыванием переменной цикла): for < переменная цикла>: =< начало> downto < конец> do < оператор>; В качестве переменной цикла должна использоваться переменная порядкового типа, объявленная в том блоке, где содержится оператор for. Параметры < начало> и < конец> задаются выражениями, типы которых должны быть совместимы по присваиванию с типом переменной цикла. Когда начинает выполняться оператор for, начальное и конечное значения определяются один раз, и эти значения сохраняются на протяжении всего выполнения оператора for. Оператор, который содержится в теле цикла, выполняется один раз для каждого значения в диапазоне между начальным и конечным значением. Переменная цикла всегда инициализируется начальным значением. Когда работает оператор for, значение переменной цикла (счетчика циклов) увеличивается (в случае инкрементного варианта) при каждом повторении на единицу. Если начальное значение превышает конечное значение, то содержащийся в теле цикла оператор не выполнятся. (Операторы в теле цикла не выполняются ни разу, если конечное значение меньше начального). В случае декрементного варианта цикла значение переменной цикла уменьшается при каждом повторении на единицу. Если начальное значение в таком операторе меньше, чем конечное значение, то содержащийся в теле оператора цикла оператор не выполнятся. (Операторы в теле цикла не выполняются ни разу, если конечное значение больше начального). Если оператор, содержащийся в теле цикла for, изменяет значение управляющей переменной, то это является ошибкой. После выполнения оператора for значение управляющей переменной становится неопределенным.
Пример 5 Инкрементный вариант Вычислить сумму первых N членов разложения в ряд экспоненты ex, где N и X – заданные числа соответственно целого и вещественного типа. Экспонента раскладывается в ряд по формуле Напишем следующий фрагмент программы: Sum: =1; Prod: =1; Fact: =1; {Начальные значения} for I: =1 to N-1 do Begin Fact: =Fact*I; {Факториал I} Prod: =Prod*X; {X в степени I} {Сумма (I+1) члена разложения} Sum: = Sum + Prod/Fact; end; Пример 6 Декрементный вариант Обратный отсчет времени при запуске ракет: WriteLn(‘Начинается обратный отсчет времени’); for Seconds: =10 downto 1 do WriteLn(‘Осталось’, Seconds, ’ сек.’); WriteLn(‘Пуск! ’); Программа выведет числа 10, 9, …, 1 и слово " Пуск". 4 Контрольные вопросы 1 Какие операторы цикла применяются в языке Pascal? 2 Что такое переменная цикла, тело цикла, оператор цикла? 3 Формат и действие оператора цикла с пост условием repeat. 4 Формат и действие оператора цикла с предусловием while. 5 Формат и действие оператора цикла с параметром for. Декрементный и инкрементный структуры оператора.
Задание Вычислить сумму и произведение полученных значений функции. Составить три варианта программы – с операторами repeat, while, for. .
Содержание отчета 1 Название работы. 2 Цель работы. 3 Содержание работы. 4 Постановка задачи для своего варианта. 5 Три программы с разными операторами цикла. 7 Результаты расчёта суммы и произведения - один раз. 8 Письменные ответы на контрольные вопросы. 9 Выводы по работе.
Лабораторная работа № 4 Итерационные циклы Цель работы: изучение алгоритмов и программ, реализующих итерационные циклы. Содержание работы: 1 Итерационные циклы 2 Программа итерационного цикла
Итерационные циклы Циклическая структура программы позволяет производить многократные вычисления группы операторов при изменении одного или нескольких параметров одновременно. В языке Паскаль имеются для этого операторы цикла for, repeat, while. В лабораторной работе №3 были рассмотрены эти операторы для решения задач с арифметическими циклами, в которых известны начальное, конечное значения аргумента и его шаг (приращение). Кроме того, число повторений цикла также было известно или его можно было определить. Популярное:
|
Последнее изменение этой страницы: 2016-05-03; Просмотров: 3027; Нарушение авторского права страницы