Основы алгоритмизации и программирования на языке Паскаль
..pdfБлок-схема:
|
Начало |
__^ |
|— <Ч' |
£ = 1 0 ,3 0 |
/ |
F = £*1.8+32
*
£ ,F
В блоке модификации (блок оператора For) ука зывается параметр цикла к, его начальное и конечное значения.
(^ ^ ^ К о н е ц ^ ^ )
Программа этого примера:
Program DemoFor; |
|
Var к: integer; |
|
F: real; |
|
Begin |
|
Writeln (‘ Температура |
’); |
For k:=10 to 30 do |
|
Begin |
{начало тела цикла} |
F:=k*1.8+32; |
|
Writeln(*no Целъсию=’,к:3,’По Фаренгейту=F:6:2);
End; |
{конец тела цикла} |
End. |
|
Переменная цикла в операторе For может изменяться в противоположном направлении - убывать, т.е. с шагом h = - 1. Для этого зарезервированное слово То надо заме нить на DownTo.
Пример 5.5. Вывести на экран символы американского стандартного кода обмена информацией (ASCII) в порядке убывания кода.
Program DemoASCII;
Var i: integer;
Begin |
|
|
Writeln (‘ |
Таблица |
ASCII ’); |
For i:=255 |
downto |
0 do |
Writeln(‘Kod символа-’,i:3,’ Символ-’, chr(i));
End.
Стандартная функция Chr(i:byte):char возвращает сим вол из ASCII с кодом i. Например, Chr(82)=R.
Тело цикла содержит единственный простой оператор Writeln, поэтов операторные скобки (Begin-End) необяза тельны. Результатом работы программы будет таблица:
Код символа-255 Символ-I
Код символа-148 Символ- Ф
Код символа-82 Символ- R
Пример 5.6. Найти наибольшее число из N вводимых с пульта чисел. Обозначим это максимальное число - Мах.
Алгоритм выбора наиболыпего/наименыпего из множе ства чисел основан на последовательном сравнении двух чисел. Наибольшее из них присваивается переменной Мах.
Первоначально за максимальное число принимается очень маленькое значение, например Мах = -1 Е + 5, так, чтобы на первом шаге переменная Мах приняла первое вводимое число.
Минимальное значение находится аналогично, в каче стве первоначального наименьшего значения принимается очень большое число, например Min = IE + 5.
Блок-схема:
Программа имеет вид
Program Мах;
Var i, N: integer;
A, Max: real;
Begin
Max:=-lE+5;
Write('Beedume количество чисел-);
Readln(N);
For i:=l to N do
Begin
Write('Beedume i=r, i:2,' число A=);
Readln(A);
I f A>Max then Max:=A;
End;
Writeln('max= \Max:6:2);
End.
Контрольные вопросы и задания
1.Понятие циклического алгоритма. Какие данные необ ходимы для организации цикла. Что такое параметр цикла?
2.Операторы для организации циклических процессов.
3.В чем отличие операторов цикла While и Repeat?
4.В каких случаях предпочтительнее использовать для организации цикла оператор Fori Что записывается в заго ловке этого оператора?
5.Алгоритм табулирования функции. Вывод результа тов табулирования в формате таблицы.
6.Составить программу, вычисляющую значения к первых членов арифметической прогрессии: ai+1 = ai + 2,
аг = 5, к = 10.
Лекция 6
Подпрограммы
6.1.Подпрограммы, их назначение
иклассификация
Подпрограмма - это часть программы, оформлен ная определенным образом, к которой можно обра щаться из разных точек программы любое число раз. При этом подпрограмма каждый раз решает одну и ту же задачу, но с разными значениями исходных данных.
Возможность применения подпрограмм относит язык программирования к классу процедурных языков.
Подпрограммы обеспечивают возможность реализации принципов структурного программирования, заключаю щихся в следующем:
-программа разбивается на множество мелких под программ;
-каждая подпрограмма отлаживается отдельно, неза висимо от других подпрограмм;
-подпрограмма может быть использована в основном блоке программы, в любой другой подпрограмме и быть включенной в библиотеку готовых подпрограмм.
Структурное программирование привело к идее разделе ния труда программиста. Каждый программист выполняет отдельный модуль, не зная общих размеров проекта. Он мо жет использовать программы, созданные другими програм мистами, иногда не зная даже их внутреннего устройства.
Наличие подпрограмм позволяет вести разработку программ сверху вниз - такой подход называется нисхо дящим программированием. Сначала выделяется не сколько подпрограмм, решающих самые глобальные зада чи (например, организация ввода данных, главная часть и завершение), потом каждая из них детализируется на более низком уровне, разбиваясь, в свою очередь, на небольшое число других подпрограмм, и так до тех пор, пока вся про грамма не окажется реализованной. Надо отметить, что небольшие подпрограммы значительно проще отлаживать, а это повышает надежность всей программы.
Важная характеристика подпрограммы - это возмож ность их повторного использования. Чтобы подпрограмма при обращении к ней выполнялась каждый раз с новыми данными, она записывается в общем виде. Имена (иденти фикаторы) в основной программе и в подпрограмме не за висят друг от друга.
В языке Паскаль существует два вида подпрограмм: процедура (Proctdure) и функция {Function).
Все подпрограммы подразделяются на стандартные (встроенные) и определенные пользователем.
Стандартные (встроенные) подпрограммы мы уже встре чали, они являются частью языка и вызываются по имени без
предварительного описания. Стандартные |
процедуры |
и функции представляют собой программы, |
написанные |
в машинных кодах и хранящиеся в специальных библиотеках (стандартных модулях). Доступ к этим библиотекам можно организовать из своих программ. Эти стандартные подпро граммы вызываются и подключаются к программам пользо вателя посредством указания их имени.
Примеры вызова стандартных процедур и функций:
1.Write(xi, Х2, ...рсп) - стандартная процедура, в скоб ках записываются параметры вывода.
2.SIN(x) - стандартная функция, в скобках стоит один параметр (аргумент математической функции sin х).
3.ClrScr - стандартная процедура, параметры отсут ствуют.
Формат обращения к стандартной подпрограмме имеет вид <имя подпрограммы> [(<список параметров>)];
6.2.Подпрограммы пользователя
Наряду с возможностью использования встроенных подпрограмм Паскаль предоставляет возможность созда ния собственных, пользовательских подпрограмм. Правила «хорошего тона» в программировании предполагают ис пользование подпрограмм пользователя. Это обеспечивает возможность реализации принципов структурного про граммирования.
При вызове подпрограмм пользователя работа основ ной программы на некоторое время приостанавливается, и начинает работать вызванная подпрограмма. Она обраба тывает данные, переданные ей из основной программы. После завершения работы подпрограммы результаты счета явно (функция) или неявно (процедура) возвращаются в основную программу.
Передача данных из основной программы в подпро грамму и возврат результата выполнения в программу осуществляются с помощью параметров.
Параметр - это переменная, которой присваивается некоторое значение из определенного заранее диапазона значений.
Различают два вида параметров:
-формальные - параметры, определенные в заголов ке подпрограммы;
-фактические - это выражения, задающие конкрет ные значения при обращении к подпрограмме.
При обращении к подпрограмме ее формальные пара метры замещаются фактическими, переданными из основ ной программы. Механизм передачи параметров рассмот рим ниже.
6.3.Оформление и вызов процедур
Процедура (Procedure) имеет такую же структуру, как и программа. А вот структура заголовка процедуры имеет другой синтаксис:
Procedure <имя>. (<список описаний формальных параметров>);
Название «формальные» эти параметры получили в связи с тем, что в этом списке заданы только имена для обозначения исходных данных и результатов работы про цедуры, а при вызове подпрограммы на их место будут подставлены конкретные значения имен.
Вызов процедуры в основной программе осуществля ется по формату
<имя процедуры> (<список фактических параметров>);
Вызов процедуры помещается в той точке программы, где необходимо выполнить процедуру.
Пример 6.1. Рассмотрим пример оформления и вызова процедуры для вычисления площади треугольника, задан ного длинами своих сторон а, Ь, с по формуле Герона:
s = VP (P - а)(р - Ь)(р - с), |
(6.1) |
а+Ь+с
где р = —
Назовем процедуру Surface. Имена переменных (иден тификаторы) выберем в соответствии с формулой (6.1).
Procedure Surface (a, b, с : real; Var S: real);
V__________ |
Y |
J \____ ..____) |
|
Y |
входные выходные
Ч_______ ^ ________/
Формальные параметры
Var р: real; Begin
p:=(a+b+c)/2;
S:=SQRT(p*(p-a) *(p-b) *(p-c));
End;
Блок-схема подпрограммы оформляется следующим образом:
В нашем случае формальными параметрами являются
а, Ь, с, S.
Формальные параметры описываются в заго ловке процедуры с указанием типов и могут содер жать входные и выходные параметры.
Входные параметры - это параметры, значения кото рых передаются в процедуру из основной программы. У нас это длины сторон треугольника (а, Ь, с).
После выполнения процедуры результаты ее, называе мые выходными параметрами, передаются в основную программу в то место, откуда был сделан вызов процеду ры. А затем продолжается выполнение основной програм мы. Перед выходными параметрами в списке формальных параметров стоит зарезервированное слово Var. У нас вы ходной параметр один. Это S - площадь треугольника.
В простейшем случае заголовок процедуры может и не содержать формальных параметров.
Между формальными и фактическими парамет рами устанавливается строгое соответствие по сле дующим пунктам:
-по количеству параметров;
-по типам соответствующих параметров;
-по расположению параметра в списке.
Процедура не может выполниться сама. Ее необходимо вызвать (обратиться к ней) по имени и указать фактиче ские параметры в строгом соответствии с формальными параметрами.