Цель работы: научиться разрабатывать блок-схемы и составлять программы. реализующих циклические алгоритмы, изучить циклические операторы for, while, repeat.
Контрольные вопросы:
1. Как называются алгоритмы, в основе которых лежит структура повторения?
2. Сколько операторов цикла вам известно?
3. С помощью каких служебных слов записывается цикл с параметром?
4. Верно ли, что цикл с параметром применяется в тех случаях, когда заранее известно число повторений?
5. Какой тип должен иметь параметр цикла в цикле с параметром?
6. Какой тип должны иметь начальное и конечное значения в цикле с параметром?
7. Как называется цикл, где сначала выполняется оператор, затем проверяется условие?
8. Сколько операторов можно записать между ключевыми словами repeat и until?
9. Какой тип имеет выражение в операторе цикла с постусловием?
10. Почему в цикле с постусловием тела цикла выполняется хотя бы один раз?
Задачи:
Составить программу вычисления суммы некоторых числовых радов:
1. (ответ: e).
2. (ответ: 1/e).
3. (ответ: ln2).
4. (ответ: 2).
5. (ответ: 2/3).
6. (ответ: /4).
7. (ответ: 1).
8. (ответ: 1/2).
9. (ответ: 3/4).
10. (ответ:1/2- /8).
11. Дана числовая последовательность: . Найти сумму отрицательных элементов при . (ответ: -1644128).
12. Дана числовая последовательность: . Найти сумму отрицательных элементов при . (ответ: -0,0346789).
13. Дана числовая последовательность: . Найти сумму отрицательных элементов при . (ответ: -128846,8).
14. Дана числовая последовательность: . Найти произведение членов последовательности от пятого до двадцать пятого. (ответ: 1,555535Е-32).
15. Дана числовая последовательность: . Найти сумму первых пятидесяти членов. (ответ: 3,5158813).
16. После каждого движения поршня разряжающего насоса из сосуда удаляется 20% находящегося там газа. Сколько движений поршня нужно сделать, чтобы достичь давления при начальном давлении ? (ответ: при =1 и =100потребуется 21 движение поршня).
|
17. Шары расположены в форме треугольника так, что в первом ряду находится один шар, во втором- два, в третьем- три и так далее. Сколько рядов удастся построить, если имеется шаров? (ответ: при =105 будет построено 14 рядов).
18. Спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал дневную норму на 10% от результата предыдущего дня. Найти какой путь пробежит спортсмен в 7-й день? (ответ:17,71561 км).
19. Сколько чисел нужно взять в последовательности 1+2+3+4+…, чтобы получить число, больше чем ? (при =252 нужно взять 23 числа).
20. Найти наибольшее число вида , меньшее m, где . (ответ: при =0,5, =2).
Литературы:
Основная литература:
1. Глушаков С.В. TURBO PASCAL Харьков, «Фолио» 2002 г.-492 с.
2. Епанешников А.М. TURBO PASCAL 7.0.М: «Диалог» 2002 г.-367 с.
3. Манежный О.А. TURBO PASCAL М: «Диалектика» 2001г.-446 с.
4. Климова Л.М. PASCAL 7.0/ Практическое программирование. Решение типовых задач- М: «КУДИЦ-ОБРАЗ»,2002 г.-517 с.
5. Немнюгин С.А. TURBO PASCAL 7.0/Учебник. С-П: 2001 г.-491 с.
6. Калдыбаев С.У., Ахмедиярова А.Т. Курс лабораторных работ по программированию на языке Паскаль. Алматы,2003 г. 43 с.
7. Рапаков Г.Г. TURBO PASCAL 7.0 Учебный курс. М: 2002 г.-349 с.
Дополнительная литература:
1. Епанешников В. Программирование в среде Турбо Паскаль 7.0. - М.: ДИАЛОГ-МИФИ, 1993. - 288 с.
2. Матчо Дж., Культин Н. TURBO PASCAL в задачах и примерах. Киев-2002 г.-256 с.
3. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка: Пер. с англ. - М.: Финансы и статистика, 1982. - 151 с.
|
4. Пестриков В.М., Маслобоев А.М. TURBO PASCAL 7.0 изучаем на примерах. М: 2002 г.-456 с.
5. Форсайт Р. Паскаль для всех: Пер. с англ.- М.: Машиностроение, 1986. - 288 с.
6. Фаронов В.В. TURBO PASCAL 7.0/Практика программирования. Учебное пособие.С-П:-2003 г.-1033 с.
7. Юркин А.Г. Задачник по программированию. С-П: «Питер»-2002 г.
Методические указания:
В реальных задачах часто требуется выполнять одни и те же операторы несколько раз. Возможны различные варианты: выполнять фрагмент программы фиксированное число раз, выполнять, пока некоторое условие является истинным, и т. п. Цикл – такая форма организации действий, при которой одна и та же последовательность действий совершается несколько раз (или ни разу) до тех пор, пока выполняется некоторое условие. Операторы цикла определяют действия, которые надо выполнить многократно, и количество их повторений. В связи с наличием вариантов в Паскале существует 3 типа циклов: For, While и Repeat. Если количество повторений заранее известно, то целесообразно использовать оператор For. А если количество повторений определяется условиями – операторы While или Repeat.
Цикл с параметром (со счетчиком) записывается так:
for управляющая переменная:=<начальное значение> to <конечное значение> do <оператор>;
Вместо to возможно слово downto.
Пример: требуется вывести на экран таблицу квадратов натуральных чисел от 2 до 20.
var i: integer;
begin
for i:=2 to 20 do
writeln(i,' ',sqr(i));
end.
При выполнении цикла происходит следующее: переменной i присваивается начальное значение (2), затем выполняется оператор (простой или составной), после этого к i прибавляется 1, и проверяется, не стало ли значение i равно конечному (20). Если нет, то вновь выполняется оператор, добавляется 1, и т. д. В случае, когда вместо to используется downto, все происходит наоборот: единица не прибавляется, а вычитается. Например, следующий цикл выведет ту же таблицу, но в обратном порядке:
|
for i:=20 downto 2 do writeln(i,' ',sqr(i));
На Паскале оператор цикла с постусловием записывается следующим образом: repeat <оператор> until <условие>.
При переводе означает: повторять что-то пока не выполнилось условие. Под обозначением <оператор> здесь понимается либо одиночный, либо последовательность операторов, разделённых точкой с запятой.
Цикл работает следующим образом: выполняется оператор, затем проверяется условие, если оно пока еще не выполнилось, то оператор выполняется вновь, затем проверяется условие, и т. д. Когда условие, наконец, станет истинным выполнение оператора, расположенного внутри цикла, прекратится, и далее будет выполняться следующий за циклом оператор. Под условием, вообще говоря, понимается выражение логического типа.
Пример (подсчет суммы натуральных чисел от 1 до 100):
var i,sum: integer;
begin
sum:=0; i:=0;
repeat
i:=i+1;
sum:=sum+i;
until i=100;
writeln('сумма=',sum);
readln;
end.
Важно заметить, что операторы стоящие внутри цикла repeat (иначе – в теле цикла) выполняются хотя бы один раз (только после этого проверяется условие выхода).
Цикл с предусловием (While) записывается так:
while <условие> do <оператор>;
При переводе означает: пока условие истинно, выполнять оператор. Суть в следующем: пока условие истинно, выполняется оператор. В этом случае оператор может не выполниться ни разу, т.к. условие проверяется до выполнения. Под оператором здесь понимается либо простой, либо составной оператор (т.е. несколько операторов, заключенных в begin... end).
Рассмотрим тот же пример, выполненный с помощью while:
var i,sum: integer;
begin
sum:=0; i:=0;
while i<100 do begin
i:=i+1;
sum:=sum+i;
end;
writeln('Сумма равна=',sum);
readln;
end.
Решение одного варианта: Написать программу, которая вычисляет сумму первых n целых положительных чисел. Количество суммируемых чисел должно вводиться во время работы программы.
Блок-схема: | Описание блок-схемы: 1-блок – начало алгоритма 2-блок – ввод количество чисел (n) 3-блок – начальное значение суммы Summ=0 (только тогда при первом прохождении тела цикла мы получим значение переменной Summ равное первому слагаемому). 4-блок – начало цикла. Счетчик изменяется на единицу при каждом следующем исполнении оператора цикла. 5-блок – с умма постепенно накапливается. При выходе из цикла значение счетчика совпадает с конечным значением, т.е. 6-блок – п ечать полученного результата 7-блок – конец алгоритма |
program summa;
var n: integer;
summ: integer;
i: integer;
begin
write (‘введите количество суммируемых чисел’);
readln (n);
summ:=0;
for i:=1 to n do
summ:=summ+i;
write(‘сумма первых‘,n,’целых положительных чисел’);
writeln (‘равна’,Summ);
end.
Решение задачи: