66518

Освоение технологии структурного программирования при разработке и создании программы на языке Турбо Паскаль для циклического вычислительного процесса с известным числом повторений

Лабораторная работа

Информатика, кибернетика и программирование

Если число повторений известно заранее до начала повторений то в этом случае всегда используется оператор цикла с параметром for. Такой оператор предусматривает изменение управляющей переменной параметра цикла по правилу прогрессии с шагом 1 и повторное выполнение некоторого...

Русский

2014-08-22

225 KB

0 чел.

ЛАБОРАТОРНАЯ РАБОТА № 3

Освоение технологии структурного программирования

при разработке и создании программы на языке Турбо Паскаль

для циклического вычислительного процесса с известным числом повторений

Цели работы:

1. Освоение методики нисходящей разработки (проектирования) программы методом пошаговой детализации с помощью псевдокода при решении задач с помощью ПК.

2. Освоение методов структурного программирования при разработке и создании программы на языке Турбо Паскаль для циклического вычислительного процесса с известным числом повторений.

3. Овладение выразительными средствами графики языка ТП для повышения читаемости программы.

4. Овладение навыками введения в программу необходимого количества комментариев.

5. Приобретение навыков алгоритмизации и программирования на алгоритмическом языке Паскаль

6. Освоение средств исследования программы.

7. Освоение методики тестирования программы.

Теоретические сведения

Вычислительный процесс, содержащий один или несколько циклов, называется циклическим. Циклы (операторы повторения) предусматривают повторяющееся выполнение некоторых операторов. Если число повторений известно заранее (до начала повторений), то в этом случае всегда используется оператор цикла с параметром for. Такой оператор предусматривает изменение управляющей переменной (параметра цикла) по правилу прогрессии с шагом 1 и повторное выполнение некоторого оператора (в том числе составного) до достижения конечного значения. Цикл с параметром имеет следующий вид:

for <параметр цикла> := <начальное значение> to <конечное значение> do

 <оператор>;

или

for <параметр цикла> := <начальное значение> downto <конечное значение> do

 <оператор>;

Параметр цикла, начальное и конечное значение должны быть одного и того же перечислимого типа и не должны изменяться внутри цикла. Если при спецификации to (downto) начальное значение больше (меньше) конечного значения, то цикл не выполняется. При нормальном выходе из цикла с параметром значение параметра остается неопределенным.

Например, чтобы напечатать в цикле значения параметра цикла, нам понадобится такая конструкция цикла с параметром for (рис. 3.1):

Блок-схему работы цикла for, приведенного на рис. 3.1 можно изобразить как показано на рис. 3.2.

То есть, Вы можете представить себе алгоритм циклической структуры for в виде последовательности таких действий и соответствующих им операторов:

 подготовка цикла: задание начального значения параметру цикла – i := 1;

 проверка, не достигнуто ли конечное значение параметра цикла –i <= 10 (если конечное значение параметра цикла будет равно 0, то тело цикла, т. е. оператор WrietLn(‘i = ’, i) не выполнится и далее будет выполняться оператор, следующий за оператором цикла);

 выполнение тела цикла: действия, которые повторяются в цикле с использованием последовательно изменяющихся значений переменной цикла;

 модификация (изменение) значения переменной цикла на единицу перед каждым новым его повторением. Далее – переход на пункт 2.

При конструировании структуры цикла Вы должны помнить следующие правила:

– оператор в теле цикла может быть простым либо составным (т. е. включать любые операторы языка ТП: простые, условные, циклические и т. д.), или даже пустым, когда точка с запятой «;» ставится сразу за словом do;

– начальное и конечное значения параметра цикла не могут быть типа Real, а только целого или перечислимого типов, при этом шаг параметра цикла всегда постоянен и равен «интервалу» между двумя ближайшими значениями выбранного типа;

– в теле цикла нельзя принудительно изменять переменную цикла;

– при необходимости получения внутри цикла шага отличного от единицы Вы должны ввести дополнительную переменную;

– для получения убывающего параметра цикла вместо слова to ставится downto и, соответственно, меняются местами начальное и конечное значения параметра цикла;

– циклическая структура for используется только в тех случаях, когда наперёд известно количество повторений цикла!

При проектировании алгоритма циклического вычислительного процесса в структурном программировании используется структура цикл, которая в контексте синтаксиса языка ТП для рассматриваемого случая может представляться в виде for-to-do (ЦИКЛ-ОТ-ДО).

И, соответственно, код на языке ТП для (рис. 3.1) будет иметь вид (рис. 3.4):

Рассмотрим последовательно все этапы создания программы циклического вычислительного процесса с известным числом повторений на конкретном примере.

1. Условие задачи:

Вычислить значение конечной суммы:

.

(3.1)

2. Решение задачи в ее предметной области, в данном случае – это высшая математика. Например, при n = 3 выражение (3.1) будет иметь вид:

.

(3.2)

Здесь Вы должны обратить внимание на то, что каждое последующее слагаемое в (3.2) получается из предыдущего домножением на a предыдущего.

3. Проводим нисходящую разработку (проектирование) программы методом пошаговой детализации с помощью псевдокода. Воспользуемся результатами (рис. 1) для получения первой версии алгоритма:

Ввести данные Summa

Выполнить вычисления Summa

Вывести результаты Summa

С учетом требований к «дружественности» интерфейса, детализация псевдокода Ввести данные Summa дает следующее:

Вывести на экран приглашение для ввода a

Ввести a

Вывести на экран приглашение для ввода n

Ввести n

Детализация псевдокода Выполнить вычисления Summa дает следующее:

power присвоить 1

ЦИКЛ ОТ i=1 ДО n

 power умножить на а

 к S добавить power

Детализация псевдокода Вывести результаты Summa дает следующее:

Вывести название и содержимое ячейки S

4. Выполняем структурное программирование с использованием структуры цикл:

BEGIN

 ClrScr; { Очищаем экран }

 Write(‘Введите значение a = ’);

 ReadLn(a);

 Write(‘Введите значение n = ’);

 ReadLn(n);

 { Подготовка к циклу }

 power := 1; { Начальное значение перед умножением на a }

 for i:=1 to n do

   begin

     power := power*a; { Получаем степень а }

     S := S+power;     { Суммируем в S }

   end;

 WriteLn(‘S = ’, S:4:2);

 ReadLn

END.

5. Проектируем структуры данных (их имена и типы). Понятно, что все имена, входящие в (3.1), нужно описать в программе, т.е. S, a, i, n. Кроме того, нам понадобится некоторая переменная, в которой будет храниться текущее значение степени a. Назовем ее power. Поскольку S, a, power могут иметь дробную часть, то их тип выбираем Real. Поскольку i – переменная цикла, n – конечное значение, то их тип не может быть Real, а только перечислимым, поэтому выбираем Integer.

Значит в разделе описаний программы, назовем ее Summa, с учетом требований о необходимости обеспечения удобочитаемости программы и размещения необходимых комментариев, поместим следующие описания:

Var

 S,            { сумма }

 a,            { значение a }

 power : Real; { текущее значение степени a }

 i,            { переменная цикла }

 n : Integer;  { конечное значение цикла }

Вам остается только объединить раздел описаний и раздел операторов, чтобы получить готовую программу.

6. Отладка программы. Отладка программы – это процесс поиска и устранения синтаксических ошибок в готовой программе. Обычно отладка предшествует стадии тестирования. В этом пункте необходимо привести скриншот результата работы готовой программы (см. п. 5 Лаб. раб № 1).

7. Тестирование программы. Цель тестирования всякой программы состоит в том, чтобы убедиться, что она решает действительно ту задачу, для которой предназначена, и выдаёт правильный ответ при любых значениях из области решений. Тестовые данные должны обеспечивать проверку всех возможных условий возникновения ошибок. Подготовьте тестовый пример для своей задачи и вычислите конечный результат с помощью калькулятора, имеющегося в среде Windows.

Тестовый пример для нашей задачи будет включать вычисление S при а=2 и n=3:

S = 2+22+23 = 14.

Теперь Вам необходимо провести исследование Вашей программы и убедиться, что вычислительный процесс действительно является циклическим с помощью дебаггера, то есть отладчика программ (см. п. 7 Лаб. раб № 1). Здесь Вы должны исследовать поведение переменных S, power, i структуры for-to-do (рис. 3.5).

8. Перед защитой лабораторной работы Вам необходимо подготовить отчет (Приложение 2). Перед распечаткой обязательно продемонстрируйте его преподавателю в электронном виде, чтобы избежать ошибок в оформлении!

9. Для защиты лабораторной работы:

9.1. Представить отчет по лабораторной работе в печатном виде.

9.2. Продемонстрировать умение исследовать свою программу.

9.3. Решить любую другую задачу из списка заданий.

9.4. Ответить на вопросы:

9.4.1. Поясните, что такое цикл?

9.4.2. Для чего нужен параметр цикла?

9.4.3. Для чего служит конечное значение параметра цикла?

9.4.4. Поясните логику выполнения циклов:

for ... to ... do  и

for ... downto ... do.

9.4.5. Какие переменные могут использоваться в качестве параметра цикла for? Какие переменные могут использоваться в качестве границ диапазона для параметра цикла for?


ЗАДАНИЯ К

ЛАБОРАТОРНОЙ РАБОТЕ № 32

  1.  Вычислить значение конечной суммы: .
  2.  Вычислить значение конечной суммы: .
  3.  Вычислить значение конечной суммы: .
  4.  Вычислить значение конечной суммы: .
  5.  Вычислить значение конечной суммы: .
  6.  Вычислить значение конечной суммы: .
  7.  Вычислить значение конечного произведения: .
  8.  Вычислить значение конечного произведения: .
  9.  Вычислить значение конечного произведения: .
  10.  Вычислить значение конечного произведения: .
  11.  Вычислить значение конечного произведения: .
  12.  Вычислить значение конечного произведения: .
  13.  Вычислить значение конечного произведения: .
  14.  Вычислить значение конечного произведения: .
  15.  Вычислить значение конечного произведения: .
  16.  Вычислить значение конечного произведения: .
  17.  Вычислить значение конечной суммы: .
  18.  Вычислить значение конечной суммы: .
  19.  Вычислить значение конечной суммы: .
  20.  Вычислить значение конечной суммы: .
  21.  Вычислить значение конечной суммы: .
  22.  Вычислить значение конечной суммы: .
  23.  Вычислить значение конечной суммы: .
  24.  Вычислить значение конечной суммы: .
  25.  Вычислить значение конечного произведения: .

ЦИКЛ ОТ i=1 ДО 10

 Печатать параметр цикла

Рис. 3.3. Псевдокод для цикла for-to-do (ЦИКЛ-ОТ-ДО) для (рис. 3.1)

Рис. 3.4. Код на языке ТП для цикла for-to-do (ЦИКЛ-ОТ-ДО) для (рис.3.1)

for i:=1 to 10 do

 WriteLn(‘i = ’,i);

Рис. 3.1. Конструкция цикла с параметром for

Параметр цикла i

Принимает значения:

1, 2, 3, 4, 5,

6, 7, 8, 9, 10

for i:=1 to 10 do

  WriteLn(‘i = ’, i);

Рис. 3.5. Исследование структуры for-to-do

Начальное значение параметра цикла

Конечное значение параметра цикла

Ключевое слово for

Оператор, повторяемый в цикле десять раз

i <= 10

WrietLn(‘i = ’, i);

Рис. 3.2. Блок-схема цикла for, приведенного на рис. 3.1

i := i+1

i := 1

Истина

Ложь

Задание начального значения параметру цикла

Проверка, не достигнуто ли конечное значение параметра цикла

Тело цикла – только один оператор (либо – составной)

Приращение параметра цикла на 1


 

А также другие работы, которые могут Вас заинтересовать

66170. ДИСКОНТНЫЕ РАСЧЕТЫ В MS EXCEL 564.5 KB
  Выделите для рыночной процентной ставки являющейся константой отдельную ячейку С3 и дайте этой ячейке имя Ставка. Для присваивания имени ячейке или группе ячеек выполните следующие действия: выделите ячейку группу ячеек или несмежный диапазон которой необходимо присвоить имя...
66171. НАКОПЛЕНИЕ СРЕДСТВ И ИНВЕСТИРОВАНИЕ ПРОЕКТОВ В MS EXCEL 182.5 KB
  Сравнить доходность размещения средств предприятия положенных в банк на один год если проценты начисляются m раз в год исходя из процентной ставки j = 95 годовых рис.2 Выясните при каком значении j доходность при капитализации m = 12 составит 15.
66172. РАСЧЕТ АКТИВОВ И ПАССИВОВ БАЛАНСА В ЭЛЕКТРОННЫХ ТАБЛИЦАХ 154 KB
  Изучение технологии расчета активов и пассивов баланса в электронных таблицах. Создать таблицу активов аналитического баланса. В структуре активов баланса выделяются две группы: оборотные активы запасы сосредоточенные в сырье незавершенном...
66174. Правила работы в микробиологической лаборатории. Иммерсионный микроскоп. Шаровидные бактерии. Простые методы окраски 108 KB
  Знание морфологии бактерий имеет большое значение для микроскопического метода лабораторной диагностики инфекционных заболеваний. Изучение морфологии бактерий осуществляется при микроскопии окрашенных микроскопических препаратов.
66175. Основные свойства вирусов и современные методы диагностики вирусных заболеваний 255.5 KB
  Вирусы - мельчайшие микробы («фильтрующиеся агенты»), не имеющие клеточного строения, белоксинтезирующей системы, содержащие один тип нуклеиновой кислоты (только ДНК или РНК). Вирусы, являясь облигатными внутриклеточными паразитами, репродуцируются в цитоплазме или ядре клетки.
66176. З’єднання однопроволочних проводів 2.4 MB
  Мета: Виконати з’єднання однопроволочних проводів різними способами та визначити переваги та недоліки запропонованих способів. Виконати з’єднання однопроволочних проводів за наступними схемами.
66177. Вивчення та заповнення форм технічної документації 181.5 KB
  В господарстві необхідно мати таку документацію: Журнал обліку електрообладнання Журнал обліку освітлювальних приладів і внутрішніх проводок Графік технічних обслуговувань на квартал Графік поточних ремонтів на рік...