Pascal. Lab2. Операторы цикла

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

  1. ЦЕЛИ РАБОТЫ

 

— проверка с помощью ЭВМ понимания порядка выполнения операторов цикла языка Паскаль;

— знакомство с сообщениями транслятора языка Паскаль об обнаруженных ошибках в записи операторов цикла;

— получение практических навыков по отладке операторов цикла.

Задание:

1)   Проанализировать программу TEST2A и по результатам выполнения заполнить таблицу входных и выходных данных.

2)   Рассмотреть программу TEST2B и исправить имеющиеся в ней ошибки.

 

Входные данные Выходные данные
P Q Z S R W
Анализ Выполнение Анализ Выполнение Анализ Выполнение
1 1 1 1 1 1 1 3 3
2 2 2 3 3 5 5 7 7
3 3 3 10 10 14 14 25 25
4 4 4 41 41 30 30 121 121

Текст программы TEST2B:

 

При проверке программы были получены следующие сообщения компилятора об ошибке:

Invalid FOR control variable.

Operand types do not match operator.

Type mismatch.

При устранении ошибок в текст программы были внесены несколько изменений. Исправленный текст программы:

 

 

Индивидуальное задание.

Написать программу, вычисляющую Сумму(F(X,I)), если F(X,I) = Cos(I*X). В программе предусмотреть контроль входных данных. Заполнить таблицу входных и выходных данных, проверяющих ограничение и допустимые значения переменных. Для облегчения создания программы была разработана ГСА программы. Затем по ГСА была составлена сама программа, удовлетворяющая всем вышеперечисленным условиям. При создании программы для увеличения точности были использованы переменные типа EXTENDED. Это было сделано для того, чтобы области вводимых переменных могли быть достаточно большими. При использовании переменных типа REAL компилятор при X>1.3 и n>5 выдавал сообщении об ошибке.

ГСА программы:

lab2 scheme

Текст программы:

 

Таблица входных и выходных данных.

Входные данные Сообщения программы
X EPS N Librarian Program
0.1 0.01 5 4.72905078813801E+00 4.72907500000019E+00
0.1 0.001 5 4.72905078813801E+00 4.72905177638859E+00
0.1 0.0001 5 4.72905078813801E+00 4.72905076388906E+00
0.1 0.00001 5 4.72905078813801E+00 4.72905077188079E+00
999 0.1 5 Overflow!!!
-999 0.1 5 Overflow!!!
1 0.01 15 Overflow!!!
3.1415 0.001 9 9.99999806844545Е-0001 9.99984648844475Е-0001

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *