logo search
Информатика_ЗО

Программирование

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

На алгоритмическом языке Паскаль любой алгоритм простой (не модульной, не составной) структуры имеет следующий стандартный вид:

Program <имя (заголовок) алгоритма>;

Uses <список подключаемых библиотек, если они нужны>; { комментарии, если нужны }

Label <список меток (имен участков программ), если они нужны>; { комментарии }

Const <список констант (не изменяемых величин), если они нужны>; { комментарии }

Type <список имен и типов структур данных, если они нужны>; { комментарии }

Var <список имен и типов переменных, если они нужны>;{комментарии }

{ < условия задачи и применимости алгоритма > }

{ < цель составления и выполнения алгоритма > }

Begin

<команды ввода входных данных, если они нужны>; { комментарии }

<тело алгоритма (команды управления и преобразования алгоритма)>; { комментарии }

<команды вывода результатов (выходных данных), если они нужны>; { комментарии }

End.

Пример.Программа вычисления объема v правильного цилиндра с радиусом основания r и высотой h.

Program VСil;

Uses Crt { подключение библиотеки ввода/вывода на экран "в звуке и цвете" }

Const pi = 3.14;

Var r, h, v: real;

{ для правильного цилиндра с радиусом основания r и высотой h }

{ вычислить и выдать на экран значение его объема v }

Begin

ClrScr; { команда очистки экрана (от данных предыдущей задачи) }

ReadLn (r, h); { ввод входных параметров }

v:=pi*r*r*h; { вычисление объема по формуле для цилиндра }

WriteLn (‘Вычисленный объем цилиндра равен ’, v) { вывод результата }

End.

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

Обычная запись

Паскаль

Квадрат числа х

sqr(x)

Корень квадратный из x

sqrt (x)

Модуль |х|

abs (x)

sin x

sin(x)

cos x

cos(x)

tg x

tg(x)

ctg x

ctg(x)

arcsin x

arcsin (x)

arccos x

arccos(x)

arctg x

arctg(x)

Натуральный логарифм ln x

ln(x)

Степень числа е = 2, 7... или еx

exp(x)

Остаток от деления целого х на целое у

x mod y

Частное от деления целого х на целое y

x div y

Целая часть числа х (вещественного)

int(x)

Случайное число от 0 до х

rnd(x)

Длина текста х в символах

length (x)

Пример.Результаты применения этих функций: sqrt(9) = 3, abs(–5) = 5, sin(0) = 0, cos(0) = 1, ln(1) = 0, exp(1 ) =e, 23 mod 5 = 3, 20 mod 5 = 0, 23 div 5 = 4, 20 div 5 = 4, int(2.7) = 2, int(2) = 2, rnd(0) = 0.231356, length(‘информ’) = 6.

Порядок выполнения операций (старшинство операций – по убыванию) в языке Паскаль:

вычисление выражений в скобках;

вычисление стандартных функций;

умножение и деление (обозначаются "*" и "/");

сложение и вычитание (обозначаются "+" и "–").

Рассмотрим базовые простые команды языка Паскаль.

Команда описания (заголовка) алгоритма(программы):

Program <имя алгоритма>;,

где <имя алгоритма> – имя, задаваемое составителем программы (краткое, полное, грамотное отражение сути алгоритма).

Ввод– команда ввода в рассмотрение (втело алгоритма) тех или иных входных параметров:

Read (<список вводимых параметров>);

или

ReadLn (<список вводимых параметров>);.

Первая команда вводит данные с текущей позиции экрана (где стоит курсор), вторая – с новой строки экрана.

Вывод– команда вывода на экран тех или иных входных или выходных параметровалгоритма:

Write (<список выводимых параметров>);

или

WriteLn (<список выводимых параметров>);.

Первая команда выводит данные с текущей позиции экрана (где стоит курсор), вторая – с новой строки экрана.

Присваивание– команда изменения текущего значения переменной вида:

<идентификатор> :=<выражение>;,

где <идентификатор> соответствует имени переменной, <выражение> – корректно записанное выражение. Знак ":=" означает последовательное выполнение двух действий: определение текущего значения <выражения> и замена текущего значения переменной, имя которой задано <идентификатором>, на новое значение, равное значению <выражения>.

Команда начала алгоритма(блока) – команда Begin.

Команда завершения алгоритма(блока) – команда End.

Команда вставки комментариевв тексталгоритмаимеет вид:

<комментируемое в программе> {текст комментария}.

Комментировать можно любой объект в программе. Обычно комментируют переменную, структуру данных, команду, группу команд.

Рассмотрим ряд задач, решаемых с помощью массивов.

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

Program SPM1;

Uses Crt;

Var x: array [1..100] of real;

n, i: integer;

s, р: real;

Begin

ClrScr;

WriteLn('Введите размерность массива :'); { приглашение к вводу входного параметра }

ReadLn(n); { ввод входного параметра }

WriteLn('Введите элементы массива:'); { приглашение к вводу массива }

for i:=1 to n do { цикл ввода элементов массива }

begin

write('x[',i,']='); { приглашение к вводу текущего элемента массива}

readln(x[i]) { ввод текущего элемента массива }

end;

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

p:=1; { начальное значение произведение – единица [u1]}

for i:=1 to n do { цикл вычисления суммы и произведения }

begin

s:=s+x[i]; { добавление к сумме очередного слагаемого }

p:=p*x[i] { домножение произведения на очередной множитель }

end;

WriteLn('Полученная сумма равна ', s: 3:3); { вывод полученной суммы }

WriteLn('Полученное произведение равно ', p: 3:3); { вывод полученного произведения }

End.

Пример.Пусть необходимо находить сумму всех нечетных элементов натурального ряда чисел до тех пор, пока эта сумма не превысит значениеn. Слагаемое, при котором эта сумма превыситn– включать в сумму.

"Забудем" временно чисто математическое решение этой задачи – с использованием суммы арифметической прогрессии с шагом 2.

Алгоритм (программа) имеет вид

Program Summa;

Uses Crt; { подключение библиотеки ввода/вывода на экран "в звуке и цвете"}

Var i, n, s: real;

{ для ряда чисел 1, 3, 5, …, }

{ найти и выдать сумму s всех первых чисел ряда, для которых впервые s > n }

Begin

ClrScr; { команда очистки экрана (от данных предыдущей задачи) }

ReadLn (n); { ввод входного параметра }

s:=1; { начальное значение суммы до входа в цикл }

i:=1; { количество просуммированных чисел в начале }

while (s<=n) do { заголовок цикла (проверка условия выхода из цикла) }

begin

i:=i+2; { находим новое слагаемое }

s:=s+i { добавили к предыдущему значению суммы новое слагаемое }

end;

WriteLn (‘Вычисленная сумма равна ’, s); { вывод результата }

End.