Тестирование готовой программы




Практическое задание №12

Тема: Программная реализация несложного алгоритма

Цель: изучить на основе готовой программы операторы циклической структуры языка Pascal и научиться составлять программы с использованием операторов цикла «ДО» и «ПОКА».

Оборудование и материалы: практическое задание, компьютер, программа Турбо Паскаль.

 

Теоретические сведения к практическому заданию

Цикл – это многократные повторяемые действия. В Турбо Паскале существует 3 основных вида циклов:

-цикл с параметром

-цикл с предусловием

-цикл с постусловием

Цикл с параметром

Оператор имеет следующий формат: For i:=A to B do S; где

i – счетчик цикла, является переменной порядкового типа данных.

А – начальное значение, В – конечное значение счетчика цикла.

S – тело цикла (повторяющиеся действия).

Цикл работает следующим образом: переменной i присваивается начальное значение A, если A<=B, то выполняется тело цикла S, после чего значение счетчика цикла i автоматически увеличивается на 1 и опять сравнивается с B. Цикл будет повторяться до тех пор, пока значение счетчика i не станет больше B. Если тело цикла S состоит из нескольких операторов, то они заключаются в операторные скобки (begin…end). Если в операторе for.. to последнее значение счетчика цикла меньше первого, то тело цикла не выполняется ни одного раза.

 

Блок-схема выглядит следующим образом:

 

Существует еще одна разновидность цикла с параметром: For i:=A downto B do S; где A>=B

Цикл работает аналогично предыдущему, но после выполнения тела цикла, значение счетчика цикла автоматически уменьшается на 1. Если A<B, то цикл не выполнится ни разу.

Цикл с предусловием

Цикл с параметром следует применять, когда заранее известно, сколько раз необходимо повторить те или иные действия. Однако во многих случаях циклические действия необходимо выполнять пока не будет достигнут определенный результат. В этом случае используются другие разновидности циклов: цикл с предусловием и цикл с постусловием.

Цикл с предусловием (цикл «пока») имеет следующий формат: While условие do S;

В качестве условия можно использовать любое логическое выражение, которое может быть либо истиной (true) ли ложью (false). S – тело цикла.

Сначала проверяется условие, если оно – истина, то выполняется тело цикла S и опять проверяется условие. Цикл будет повторяться до тех пор, пока условие – истина, как только условие станет ложным – происходит выход из цикла. Если изначально условие – ложь, то тело цикла не выполнится ни разу. В отличии от цикла с параметром в этом виде цикла не предусмотрено автоматическое изменение переменной цикла, поэтому в теле цикла S должны быть команды, изменяющие значение переменной цикла. В противном случае при запуске произойдет так называемое зацикливание программы (т.е. выполнение бесконечного цикла).

Если тело цикла S состоит из нескольких операторов, то они заключаются в операторные скобки (begin…end).

Блок-схема выглядит следующим образом:

 

Цикл с постусловием

Формат оператора: Repeat S Until условие; где

S – тело цикла, условие – любое логическое выражение.

Принципиальное отличие оператора repeat...until (повторять до тех пор, пока) от оператора while...do в том, что проверка условия производится не перед началом выполнения оператора, а в его конце, когда решается вопрос, повторить ли еще раз действия. Поэтому тело этого цикла всегда выполняется по крайней мере один раз. Кроме того цикл будет повторяться, когда условие – ложно, как только условие станет истинным – происходит выход из цикла.

Блок-схема цикла с постусловием:

 

Тестирование готовой программы

Цикл с параметром

Задача №1: Найти сумму всех натуральных чисел от 1 до 100

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

Определяем:

Параметр цикла – переменная i;

Начальное значение параметра цикла – i:=1;

Конечное значение параметра цикла – i:=100;

Начальное значение суммы – s:=0;

Рабочий блок – s:=s+i

Проверка окончания цикла – 1<100;

Формула изменения параметра цикла – i:=i+1.

Программа будет выглядеть следующим образом:

 

program zadacha1_12; Название программы
var i, s: integer; Описание переменных
Begin Начало программы
s: = 0; Начальное значение суммы
For i:=1 to 100 do Начало цикла «ДО», указывается начальное значение параметра цикла i=3, конечное значение параметра цикла 100
s: = s + i; Вычисление суммы чисел
writeln(‘сумма от 1 до 100’, ‘=’,s); Вывод искомой суммы
End. Завершение программы

Цикл с предусловием

Program zadacha2_12; Название программы
var i, s: integer; Описание переменных
Begin Начало программы
s: = 0; i:=l; Начальное значение суммы и параметра цикла
while i <=100 do Начало цикла «ПОКА»
begin Начало тела цикла «ПОКА»
s: = s + i; Вычисление суммы чисел
i: = i + 1; Изменение параметра цикла с указанием шага параметра
end; Завершение тела цикла «ПОКА»
writeln('cyммa от 1 до 100', '=', s); Вывод искомой суммы
End. Завершение программы

Цикл с постусловием

Program zadacha3_12; Название программы
var i, s: integer; Описание переменных
Begin Начало программы
s: = 0; i:=l; Начальное значение суммы и параметра цикла
repeat Начало цикла «ПОКА»
begin Начало тела цикла «ПОКА»
s: = s + i; Вычисление суммы чисел
i: = i + 1; Изменение параметра цикла с указанием шага параметра
end; Завершение тела цикла «ПОКА»
until i > n; Проверка условия выхода из цикла
writeln('cyммa от 1 до 100', '=', s); Вывод искомой суммы
End. Завершение программы

Задача №2: составить программу для вычисления значения суммы

.

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

Определяем:

1. Параметр цикла – переменная k;

2. Начальное значение параметра цикла – k:=4;

3. Конечное значение параметра цикла – k:=12;

4. , где S – промежуточная сумма и .

5. Начальное значение промежуточной суммы – S:=0;

6. Рабочий блок – .

7. Проверка окончания цикла – ;

8. Формула изменения параметра цикла – k:=k+1.

 

Program zadacha2_12; Название программы
var k, s, z, x: integer; Описание переменных
Begin Начало программы
if x = 4 then writeln('Нет решения'); else Проверка знаменателя на 0, если знаменатель равен нулю, то выводится текст «Нет решения», если не равен нулю– то выполняется цикл
Begin Начало цикла «ДО»
S:=0 Начальное значение суммы
FORk=4 TO12 do указывается начальное значение параметра цикла k=4, конечное значение параметра цикла 12 и шаг изменения параметра цикла
S=S+x^2*(k+1)/(x-4); Вычисление промежуточной суммы
End; Завершение цикла «ДО»
z=31*x^2+5*S; Вычисление итоговой суммы
writeln('cyммa z = ', z); Вывод искомой суммы
End. Завершение программы

Содержание задания

Задание №1

Составить программу для решения задачи, используя цикл «ДО».

Условие задачи: Написать программу подсчета суммы S первых 1000 членов гармонического ряда 1+1/2+1/3+1/4+...1/N

Программа:

     
 
 

Ответ: _______

Задание №2

Составить программу для вычисления значения суммы (Задача 2), используя цикл «ПОКА»:

Программа:

 
 
 

 

Записать свои данные в таблицу:

 

Значения исходных данных Значения искомых данных
   
   
   

Задание №3

Ответьте на контрольные вопросы к практическому заданию

 

Задание №4

1. Сделайте вывод о проделанном практическом задании.

2. Сдайте отчет преподавателю.

 

 

Контрольные вопросы

 

1. Какая программа называется циклической?

2. Какие существуют циклы в языке Паскаль?

3. Какой формат записи имеет цикл с параметром? Как он работает и в каких случаях применяется?

 

4. Какой формат записи имеет цикл с предусловием? Как он работает.

5. Какой формат записи имеет цикл с постусловием? Как он работает.

 



Поделиться:




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

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


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