Лабораторная работа №3. Программирование циклических структур алгоритмов (2 часа)




Цель работы: научиться разрабатывать блок-схемы и составлять программы. реализующих циклические алгоритмы, изучить циклические операторы 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.

Решение задачи:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: