Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекция 8. Программирование




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

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

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

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

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

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

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

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

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

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

Begin

<команды ввода входных данных>; {комментарии }

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

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

End.

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

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

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

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

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

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

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

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

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

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

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

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

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

Команда начала алгоритма (блока) – команда 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 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.




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 609; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.022 сек.