- •Виды и значения алгоритмических блоков
- •Разновидности структур алгоритмов
- •Функция не определена
- •Варианты заданий Разработать алгоритм решения задачи линейной структуры.
- •Разработать алгоритм решения задачи разветвляющейся структуры.
- •Разработать алгоритм решения задачи циклической структуры.
- •Запись некоторых математических функций на языке Паскаль
- •Примеры записи математических выражений на языке программирования Паскаль
- •Варианты заданий
- •Функциональные клавиши
- •Текстовый редактор среды
- •Последовательность разработки программы в интегрированной среде Турбо Паскаль
- •Справочная система
- •Примеры программ, написанных на языке Паскаль.
- •Контрольные вопросы
- •Варианты заданий
- •Контрольные вопросы
- •Оператор if.
- •Варианты заданий
- •Контрольные вопросы
- •Варианты заданий
- •Варианты заданий
- •Контрольные вопросы
- •Варианты заданий
- •Контрольные вопросы
- •1 Оператор тела цикла;
- •Варианты заданий
- •Контрольные вопросы
- •Решение типового примера
- •Варианты заданий:
- •Дополнительные задания
- •Контрольные вопросы
- •В разделе type
- •Решение типовой задачи
- •Варианты заданий:
- •Дополнительные задания
- •Контрольные вопросы
- •Решение типовой задачи
- •Программа
- •Варианты заданий с подпрограммами - функциями:
- •Варианты заданий с подпрограммами – процедурами:
- •Контрольные вопросы
Варианты заданий
Вводится число от 1 до 4, определяющее пору года. Дать название этой
поры года (1 — зима, 2 — весна, 3 — лето, 4 — осень).
Вводится число от 1 до 7, определяющее день недели. Дать название
этого дня (1 — понедельник, 2 — вторник, ..., 7 — воскресенье).
Вводится числа 12, 1, 2, определяющие зимний месяц года. Дать название
этого месяца года (1 — январь, 2 — февраль, 12 — декабрь).
Вводится число от 1 до 10. Дать название этого числа (1 — один, 2 — два,
..., 10 — десять).
Дано натуральное число A (A<20), определяющее сумму денег в рублях.
Дать для этого числа наименование: "рубль", "рубля", "рублей".
Дано натуральное число N (N<100), определяющее возраст человека в
годах. Дать для этого числа наименование: "год", "года", "лет".
Вводится число от 1 до 12, определяющее месяц года. Дать название
этого месяца года (1 — январь, 2 — февраль, ..., 12 — декабрь).
Вводится число от 1 до 20. Дать название этого числа (1 — один, 2 — два,
..., 20 — двадцать).
Вводится числа 3, 4, 5, определяющие весенний месяц года. Дать
название этого месяца года (3 — март, 4 — апрель, 5 — май).
Вводится число от 1 до 10. Дать название этого числа (1 — один, 2 — два,
..., 10 — десять).
Вводится число от 2 до 10. Вывести сообщение: четное или нечетное
введенное число.
Вводится число от – 10 до 10. Вывести сообщение: введенное число
больше 0, меньше 0 или равно 0.
Вводится номер месяца (1, 2, …, 12). Вывести количество дней в
указанном месяце, при ошибочном вводе должно выводиться сообщение
«Ошибка ввода».
Написать программу, которая запрашивает у пользователя номер дня
недели и выводит одно из сообщений: «Рабочий день», «Суббота» или
«Воскресенье».
Контрольные вопросы
Как в Паскале записывается оператор выбора?
Для чего предназначен оператор выбора?
Что такое полная и сокращенная записи оператора выбора?
Какого типа должна быть переменная, значения которой выбирают с помощью оператора CASE?
Лабораторная работа №7
Тема: Циклическое программирование. Оператор FOR
Цель: Разработать схему и программу с использованием оператора цикла FOR
Теоретическая часть.
Циклические вычисления в Паскале реализуются с помощью операторов FOR...TO(DOWNTO)...DO, WHILE...DO или REPEAT...UNTIL.
Особенностью операторов FOR...TO(DOWNTO)...DO является встроенный внутренний счетчик цикла, фиксирующий количество повторений. Форматы записи оператора:
FOR переменная цикла := выражение 1 TO выражение 2 DO
{операторы тела цикла};
или
FOR переменная цикла:=выражение 1 DOWNTO выражение 2 DO
{операторы тела цикла};
В формате: переменная цикла (управляющая переменная, счетчик цикла) - имя переменной целочисленного типа; выражения 1 и 2 — выражения, тип результата которых совпадает с типом переменной цикла; операторы тела цикла — любой исполнимый оператор или блок операторов, заключенных в операторные скобки;. FOR, TO, DOWNTO и DO - ключевые слова.
Ключевые слова TO и DOWNTO определяют особенности выполнения оператора цикла. Если в формате записи указано слово TO, то для выполнения оператора необходимо соблюсти условие «выражение 1» <= «выражение 2». В этом случае переменная цикла последовательно с шагом 1 будет принимать значения от «выражение 1» до «выражение 2». Операторы тела цикла будут многократно выполняться до тех пор, пока переменная цикла меньше или равна значению «выражение 2», и, как только она его превысит, управление будет передано оператору, следующему в программе за конструкцией FOR...TO...DO. Ключевое слово DOWNTO используют в том случае, когда «выражение 1» >= «выражение 2», то есть переменная цикла последовательно с шагом 1 убывает от значения «выражение 1» до значения «выражение 2». При этом операторы тела цикла выполняются до тех пор, пока переменная цикла больше или равна значению «выражение 2».
В инструкции FOR...ТО...DО, если значение «выражение 1» превышает значение «выражение 2» (для инструкции FOR...DOWNTO...DO значение «выражение 2» превышает значение «выражение 1»), операторы тела цикла не выполняются ни разу, а управление сразу же передается оператору, следующему в программе за конструкцией FOR. ..TO(DOWNTO)... DO.
Использование оператора FOR регламентируется следующими правилами.
Переменная цикла, её начальное и конечное значения должны быть одного типа.
При выполнении оператора очередное значение параметра цикла вычисляется автоматически. В частности, для целого типа шаг изменения значения переменной цикла равен 1 при конструкции с TO и -1 при конструкции с DOWNTO.
После служебного слова DO может стоять только один оператор. Если в цикле необходимо выполнить группу операторов, то их заключают в операторные скобки BEGIN...END, образуя составной оператор.
Из конструкции FOR..TO(DOWNTO)...DO peкомендуется выходить после полного завершения цикла (естественный выход). Однако при использовании составного оператора допускается досрочный выход. При досрочном выходе за переменной цикла сохраняется ее последнее значение.
В теле цикла не допускается принудительно изменять значение переменной цикла.
Не разрешается обращаться извне к любому оператору, входящему в тело цикла. Вход в цикл возможен только через его начало, то есть оператор FOR.
Цикл не выполняется вообще, если начальное значение переменной цикла больше (при DOWNTO меньше), чем конечное. В этом случае управление передается оператору, следующему непосредственно за конструкцией FOR..TO(DOWNTO)...DO.
В конструкции FOR..TO(DOWNTO)...DO используется только одна переменная цикла. При наличии вложенных циклов у каждой конструкции FOR..TO(DOWNTO)...DO должна быть своя, отличающаяся от других переменная.
При организации вложенных циклов внутренний и внешний циклы не должны пересекаться. Цикл, который начинается последним, должен завершаться первым:
FOR N := 1 TO 5 DO
BEGIN WRITELN (N:2,'.');
FOR J := 1 TO 5 DO WRITELN (N:2,'.', J:2,'.') END;
Пример 7.1. Дано действительное число х. Вычислить сумму элементов ряда. Число суммируемых элементов ряда (N) вводится во время работы программы с клавиатуры.
.
Схема алгоритма и текст программы.
Program zikl1; {вычисление суммы заданного числа элементов ряда}
uses crt;
var
x,s,a:real;
f:longint;
i,n,k:integer;
begin {начало раздела операторов}
clrscr;
write('введите значение x=');
readln(x);
write('введите значение n=');
readln(n);
{значение первого слагаемого ряда вычисляется до цикла}
a:=x; {значение x в степени (2*1-1)}
f:=1; {значение f=(2*1-1)!=1}
s:=a; {а - значение 1-го слагаемого, s=a}
{к - переменная для изменения знака очередного слагаемого с + на - }
k:=1;
for i:=2 to n do {начало цикла}
begin
k:=- k; {значение (-1) для i-го слагаемого}
a:=a * sqr(x); {вычисление х в степени (2i+1) i-го слагаемого }
f:=f * (2*i-2) (2*i-1); {вычисление факториала i-го слагаемого}
s:=s+k*a/f; {добавление i-го слагаемого к общей сумме }
end; {конец цикла}
{вывод результата на экран}
writeln('при x=',x:4:2,' сумма', n,' элементов =',s:7:5);
readln;
end.
Пример 7.2. Задано число х и натуральное число N. Вычислить произведение N элементов ряда
.
Для вычисления произведения целесообразно использовать рекуррентные соотношения, т.е. каждую дробь в скобках, начиная со второй, выражать через предыдущую. Это позволит существенно сократить объем вычислений. Расчет N! в числителе дроби каждого множителя выполняется в программе в теле цикла по формуле f:=f*n. p:=p*(2+f/a) - формула умножения элементов ряда Р=P1*P2*…*Pi-1 на очередной Pi элемент ряда.
Схема алгоритма и текст программы.
Program zikl2;
{вычисление произведения заданного числа элементов ряда}
uses crt; {указание библиотечных модулей}
var {раздел описания переменных}
x,p,a:real;
f:longint;
i,n:integer;
begin {начало раздела операторов}
clrscr;
write('введите x=');
readln(x);
write('введите n=');
readln(n);
p:=1; {начальное значение произведения}
a:=1; f:=1; {начальные значение числителя и знаменателя дроби}
for i:=1 to n do {начало цикла}
begin
a:= a*x;
f:=f*i
p:=p*(2+f/a);
end; {конец цикла}
{вывод результата на экран}
writeln('при x=',x:4:2,' произведение', n:2,' элементов=',p:7:5);
readln;
end. {конец программы}
