Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика часть 1.pdf
Скачиваний:
16
Добавлен:
02.05.2015
Размер:
489.96 Кб
Скачать

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

Таблица трассировки программы summa.

Входные данные: 4 7.

Строка

Ход выполнения

a

b

c

3

вход в summa

?

?

?

4

 

4

17

 

5

 

 

 

21

6

вывод: 21

 

 

 

7

выход из summa

 

 

 

Результаты: 21

При входе в программу (строка 3) переменные уже созданы , но еще не приобрели своих значений ( не определены), этот факт отражается в таблице трассировки вопросительными знаками в соответствующих колонках. Выполнение оператора ввода read (a,b) в строке 4 привело к тому, что переменные a и b приобрели соответственно значения 4 и 17, а выполнение оператора присваивания в строке 5 - к вычислению выражения и присваиванию переменной значения 21. Оператор в строке 6 приводит к выводу на экран числа 21, а достижение строки 7 означает выход из программы. Так как мы выходим из программы, элементы данных, которые существовали в ходе ее выполнения, разрушаются, и единственным свидетельством того, что программа выполнена, остается результат, порожденный строкой 7. Разрушение элементов данных показано в таблице трассировки завершением соответствующих колонок.

Занятие 4. Построение (разработка) программ

I. Спецификация

II. Метод пошагового уточнения (нисходящее проектирование) III.Пример разработки программы. Таблица разработки.

I. Для того, чтобы начать писать программу, необходимо знать:

назначение программы - точная, подробная формулировка задачи ;

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

какую информацию программа должна вырабатывать в качестве выходных данных (результата).

Эти сведения составляют спецификацию программы и полностью определяют, что она должна делатть.

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

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

1.Ввод входных данных.

2.Решение поставленной задачи.

3.Вывод результатов.

Далее достаточно сложные шаги, решение которых не очевидно, детализируются - разбиваются на более мелкие шаги. В ходе детализации по мере необходимости вводятся в употребление

9

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

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

-каждый раздел таблицы соответствует одному из этапов детализации;

- символ --> означает «превращается в», -если какое-либо предложение или выражение можно сразу

записать на Паскале, оно так и записывается, без предварительной формулировки;

-если вводятся в употребление новые переменные, они перечисляются в графе “Примечания”.

Пример разработки программы.

Задача: Дан радиус окружности. Найти ее длину. Спецификация

1.Дан радиус окружности. Составить программу для вычисления длины окружности по формуле L=2πr.

2.Входные данные: (вещественное число, радиус окружности), например 5.0

3.Выходные данные: (вещественное число, длина окружности), для данных п.2 - 31.415.

 

Таблица разработки.

 

 

 

Шаги разработки

 

Примечания

work1

 

 

Æ

 

 

begin

 

 

Шаги разработки

Примечания

ввод входных данных

 

вычисление значения выражения

 

вывод результата

 

end

 

 

ввод входных данных

переменная r:real

Æ

 

read (r)

(радиус окружности)

 

 

 

Вычисление значения выражения

переменная L:real

Æ

 

L:=2*pi*r;

(длина окружности),

 

 

pi=3.1415926

 

 

 

вывод результата

 

Æ

 

 

 

write (L)

 

work1

 

Æ

 

 

 

begin

 

 

read (r);

 

L:=2*3.1415*r;

 

write (L)

 

end

 

 

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

 

1

 

Program work1;

 

 

 

2

 

Const pi=3.1415926;

 

3

 

var r,L: real;

 

4

 

begin

 

5

 

read ( r );

 

6

 

L:=2*Pi*r;

 

7

 

write (L)

 

8

 

end.

 

10

Таблица трассировки Входные данные: 5

Строка

Ход выполнения

r

L

4

вход в work1

?

?

5

 

5

 

6

 

 

31.415

7

вывод: 31.415

 

 

8

выход из work1

 

 

Результат: 31.415 Замечание.

1.При выполнении математических вычислений входные данные и результат являются обычно действительными числами. Для этой цели в Паскале имеется вещественный тип real. Вещественные числа в Паскале могут записываться в формате с фиксированной запятой, например, 3.1415926, или с

плавающей 0.31415926e1, где 0.31415926 называется мантисой, а 1 – порядок (e1 означает умножить на 101). Для вещественных чисел определены операции сложения (+), вычитания(-), умножения (*) и деления (/).

2.Число 3.1415926 постоянно и не изменяется в программе. Оно будет одинаково при каждом выполнении программы независимо от входных данных. Поэтому оно вводится как константа с именем pi. Так же как и переменная, константа это элемент данных, который во время выполнения занимает место в памяти программы. Различие состоит в том, что хранимое значение на протяжении выполнения программы в этом случае неизменно. В разделе описания констант, которое начинается со слова const и которое всегда должно предшествовать разделу описания переменных, в общем случае вводится несколько констант. Константа всегда характеризуется какимлибо связанным с ним типом данных. Тип данных определяется значением, которое придается константе.

Задание 1. Вычисления по формулам

Составить подробную спецификацию программы с примерами входных и выходных данных. Разработать программу, используя таблицы разработки. Выполнить трассировку программы. Ввести программу в ЭВМ, сравнить результаты трассировки и работы программы.

1.Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.

2.Даны два действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел.

3.Даны два действительных числа. Найти среднее арифметическое чисел и среднее геометрическое их модулей.

4.Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь.

5.Смешано v1 литров воды температуры t1 с v2 литрами воды температуры t2. Найти объем и температуру образовавшейся смеси.

6.Определить периметр правильного n-угольника, описанного около окружности радиуса r.

7.Три сопротивления R1, R2, R3 соединены параллельно. Найти сопротивление соединения.

8.Определить время падения камня на поверхность земли с высоты h.

9.Дана сторона равностороннего треугольника. Найти площадь этого треугольника.

10.Вычислить период колебания маятника длины l.

11.Определить силу притяжения F между телами массы m1 и m2, находящимися на расстоянии r друг от друга.

12.Дана гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус вписанной окружности.

13.Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.

11

14.Найти площадь кольца, внутренний радиус которого равен r1, а внешний—заданному числу r2 (r2 > r1).

15.Треугольник задан величинами своих углов и радиусом описанной окружности. Найти стороны треугольника. 16.Определить время, через которое встретятся два тела, равноускоренно движущиеся навстречу друг другу, если известны их начальные скорости, ускорения и начальное расстояние между

ними.

 

 

 

 

17.Найти

сумму

членов

арифметической

прогрессии

a,a +d,...,a +(n 1)d по данным значениям а, d, п.

 

18.Вычислить расстояние между двумя точками с координатами

x1, y1 и x2, y2.

19.Найти площадь сектора, радиус которого равен r, а дуга содержит заданное число радиан ϕ.

20.Даны действительные положительные числа а, b, с. По трем сторонам с длинами а, b, с можно построить треугольник. Найти углы треугольника.

Занятие 5. Последовательное выполнение. Разветвление.

I. Составной оператор.

II. Условный оператор (оператор выбора).

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

I. Все операторы в программе summa выполнялись последовательно, один за другим. Языковое средство, обеспечивающее последовательное выполнение в Паскале, называется составным оператором. Общий вид:

begin S1; S2;

...

SN;

end, где begin (начало) и end (конец) - служебные слова, так называемые операторные скобки, S1,S2,...,SN - операторы.

Любая последовательность операторов, объединенная в составной оператор, представляет собой единый, один оператор. Кстати, раздел описания операторов также представляет собой один составной оператор.

II. Условный оператор (оператор выбора) осуществляет выбор из двух возможностей.

Общий вид:

 

 

a) полная форма -

if U then S1 else S2;

b) сокращенная форма -

if U then S1;

 

где if (если), then (то),

else (иначе)

- служебные слова, U -

логическое выражение, управляющее выбором, S1,S2 - операторы. В качестве логических выражений обычно используются отношения. В Паскале предусмотрены следующие операции сравнения: = (равно), <> (не равно), < (меньше), <=(меньше или

равно), > (больше), >= (больше или равно). Выполнение условного оператора (полная форма):

1)вычисляется значение логичесчкого выражения U

2)если U = True , то выполняется оператор S1, а оператор S2 пропускается

3)если U= False, то оператор S1 пропускается и выполняется S2. Выполнение условного оператора (сокращенная форма):

1)вычисляется значение логического выражения U

2)если U = True , то оператор S1 выполняется

3)если U= False, то оператор S1 пропускается.

Операторы S1 и S2 могут быть любыми, в том числе и условными - вложенными в главный условный оператор, например:

if U1 then

if U2 then S1 else

if U3 then S2 else S3. Такие вложения на практике редко применяются из-за того, что конструкция становится громоздкой, тем более, что сложные условия можно строить с помощью

12