Тема 2.2 Алгоритмизация и программирование.
Алгоритмы и свойства алгоритмов.
Современный компьютер способен действовать только по формальным схемам, заготовленным для него человеком. Поэтому, чтобы привлечь компьютер к решению задачи надо выполнить следующие этапы:
1 этап. Постановка задачи.
Формулировка условия задачи.
2 этап. Построение модели.
определить, что является данными;
определить, что является результатом решения задачи и в какой форме он должен быть получен. Указать ограничения;
установить взаимосвязь между исходными данными и результатом (с помощью формул);
формализация задачи (фиксация информационной модели).
3 этап. Разработка алгоритма и программы.
Алгоритм является одним из фундаментальных понятий в информатике.
Алгоритм – последовательность действий, выполнение которых приведет к достижимому результату.
Исполнителем алгоритма может быть человек или автоматическое устройство – компьютеры, роботы, станки, спутники, сложная бытовая техника и даже детские игрушки. Каждый алгоритм создается в расчете на вполне конкретного исполнителя.
Действия, которые может совершать исполнитель, называют системой команд исполнителя. Алгоритм должен содержать только те действия, которые допустимы для данного исполнителя.
Свойства алгоритмов:
• дискретность – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых шагов;
• детерминированность – исполнитель должен выполнять команды алгоритма в строго определенной последовательности, каждое действие, предусмотренное алгоритмом, исполняется только после того, как закончилось исполнение предыдущего;
• однозначность – каждая команда определяет однозначное действие исполнителя;
• понятность – понимание исполнителем команд, в алгоритме используются только команды из системы команд исполнителя;
• результативность (конечность) – алгоритм должен приводить к решению задачи за конечное число шагов;
• массовость – один и тот же алгоритм может применяться к большому количеству однотипных задач.
Типовые конструкции алгоритмов:
• линейная – описание действий, которые выполняются однократно в заданном порядке;
• циклическая – описание действий или группы действий, которые должны повторяться указанное число раз или пока не выполнено заданное условие.
• разветвляющаяся – алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий;
Представление алгоритмов:
1. Словесный способ: При словесном способе алгоритм записывается в виде текста с формулами по пунктам, определяющим последовательность действий.
2. Графический способ (блок-схемы): Блок-схема позволяет сделать алгоритм более наглядным и выделяет в алгоритме основные алгоритмические структуры (линейная, ветвление, выбор и цикл). Элементы алгоритмы изображаются на блок-схеме с помощью различных геометрических фигур. Элементы алгоритма соединены стрелками, указывающими шаги выполнения алгоритма.
3. Формальное представление алгоритмов – это способ записи алгоритмов с использованием алгоритмических языков, либо языков программирования.
Алгоритмический язык – это система правил и обозначений для точной и однозначной записи алгоритмов. Такая запись является формализованной. Это означает, что запись подчиняется строгим требованиям синтаксиса языка.
Язык программирования – это система обозначений и правил для записи алгоритмов, предназначенная для использования на ЭВМ.
Алгоритм, записанный на языке, понятном компьютеру называется программой.
Алфавит языка Турбо Паскаль включает:
1. Буквы - это буквы латинского алфавита от а до z и от А до Z, а также знак подчеркивания _. В Турбо Паскале нет различия между прописными и строчными буквами алфавита, если только они не входят в символьные и строковые выражения.
2. Цифры - арабские цифры от 0 до 9.
3. Специальные символы Турбо Паскаля - это символы: + - * / = ,' . : ; < > [ ] ( ) { } ^ @ $ # .
К специальным символам относятся также следующие пары символов: <=, >=, :=, (* *), (. .).
4. Пробелы и зарезервированные слова - не могут использоваться в качестве идентификаторов.
Программа на ЯП Pascal. Оперирует данными. Каждый элемент является константой (Const) или переменной. Для каждой переменной задаётся тип.
Структура программы на ЯП Турбо Паскаль
Программа на ЯП Турбо Паскаль имеет следующий вид:
Заголовок программы:
Program Имя программы;
Раздел описаний:
Uses – описание подключаемых модулей;
Const – описание постоянных величин;
Var - описание переменных;
Исполняемая часть:
Begin (служебное слово)
Операторы (задаются действия над объектами программы, введенными в разделе описаний)
End. (служебное слово)
Рассмотрим простейшую программу:
Program Example;
Uses Crt;
Const
P = 3.14;
Var
S : Real;
R : Integer;
begin
ClrScr;
Write('Введите радиус круга R= ');
ReadLn(R);
S := P * R * R;
WriteLn('Площадь круга S=',S);
Readln;
end.
Оператор вывода:
Write(‘текст‘) – записать (вывести) на экран текст, заключенный между апострофами.
WriteLn (‘текст‘) – записать (вывести) на экран текст, заключенный между апострофами,
Ln добавляется в конце этого оператора для того, чтобы курсор автоматически переходил на следующую строку при выводе на экран текстов или результатов выполнения программы.
Оператор ввода:
Read (имя переменной) – читать данные с клавиатуры.
ReadLn (имя переменной) – читать данные с клавиатуры, Ln добавляется в конце этого оператора для того, чтобы курсор автоматически переходил на следующую строку при вводе на экран данных.
Если переменных в операторах используется несколько, то они разделяются «,».
Ввод значений переменных осуществляется через пробел. Оператор присваивания: «:=»
Условный оператор.
Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. В Турбо Паскале имеются два вида операторов, и они называются операторами условного перехода или просто условными операторами.
Полная форма оператора условного перехода.
Структура:
IF <условие> THEN <оператор1>
ELSE <оператор2>;
Условный оператор работает по следующему алгоритму:
вначале проверяется <условие>;
если результат проверки <условия> - "истина", условие верно, то выполняется <оператор1>, а <оператор2> пропускается;
если результат проверки <условия> - "ложь", условие неверно, то <оператор1> пропускается, а выполняется <оператор2>.
После оператора, стоящего перед словом ELSE ";" не ставиться.
Неполная форма оператора условного перехода.
Структура:
IF <условие> THEN <оператор1>;
Часть ELSE <оператор2> условного оператора может отсутствовать. Тогда при выполнении <условия> выполняется <оператор1>, в противном случае этот оператор пропускается.
Циклы.
Операторы цикла предназначены для организации повторяющихся действий. В Турбо Паскале существуют следующие виды операторов цикла.
1.Циклы с предусловием
Синтаксис:
WHILE <условие> DO <оператор>;
Оператор работает по следующему алгоритму:
проверяется <условие>;
если <условие> верно, то выполняется <оператор>;
после чего проверка повторяется.
Цикл выполняется пока <условие> истинно.
2. Циклы с послеусловием
Синтаксис:
REPEAT
<оператор>
UNTIL <условие>;
Цикл работает следующим образом: операторы <оператор> выполняется хотя бы один раз, после чего проверяется условие; если условие не верно, <оператор> выполняется еще раз, иначе - выход из цикла.
Цикл выполняется пока условие не верно.
3. Циклы с параметром (со счетчиком)
Синтаксис:
FOR параметр: = Н_З TO К_З DO <оператор>
Оператор FOR работает следующим образом: в начале работы оператора переменная <параметр> получает значение <началь_значение>;
после этого циклически повторяются следующие действия: - если значение переменная <счетчик_цикла> больше значения <конеч_значение>, цикл прекращает свою работу;
- иначе выполняется <оператор> и значение переменной <счетчик_цикла> увеличивается на единицу.
Отладка тестирование и исполнение программы.
Отладка – процесс поиска, исправления ошибок в программе. Тестирование – испытание программы путем введения определенного набора исходных данных, для которого результат работы известен заранее.
Исполнение программы – ввод необходимых данных по условию задачи, получение результатов.
Анализ результатов.
Проверка – соответствие полученных результатов:
- ожидаемому в рамках построения информационной модели задачи;
- соотношение с реальной практикой.
Разберите образец решения задачи на ПК.
ЭТАП 1: Постановка задач.
В группе К студентов. В ноябре им оказали материальную помощь по А руб. каждому, а в декабре по В руб. Определить количество израсходованных денег на материальную помощь в группе.
ЭТАП 2: Построение модели.
Дано:
К - количество студентов;
А - сумма материальной помощи за ноябрь месяц;
В - сумма материальной помощи за декабрь месяц.
Результат: Х- количество израсходованных денег.
Взаимосвязь: Х=К*(А+В)
Этап 3: Разработка Алгоритма и программы.
Словесный алгоритм.
Шаг 1: ввести К, А, В
Шаг 2: вычислить Х:=К*(А+В)
Шаг 3: вывести Х
Шаг 4: конец алгоритма.
Программа.
Program Z1;
Uses Crt;
Var K,A, B,X : real;
Begin
clrscr;
write('Введите значения чисел k, a,b');
readln(k,a,b,);
x:=k*(a+b);
writeln('количество денег ',x:4:2);
readln;
End.
1 этап: Постановка задачи
Вычислить значение функции
2 этап: Построение информационной модели
Дано: Х – значение аргумента
Результат: У – значение функции
Взаимосвязь: Если х>0 то у=sin x иначе y=cos x
3 этап: Разработка алгоритма и программы
Словесный алгоритм:
Шаг 1: ввести х
Шаг 2: если х>0 то у=sin x иначе у=cos x
Шаг 3: вывести у
Шаг 4: конец
Программа.
Program Z2;
Uses Crt;
Var X,Y : real;
Begin
clrscr;
write('Введите значения чисел x');
readln(x);
IF x>0 THEN y:= sqrt(7*abs(x))+sin(x)
ELSE y:= cos(x)/(sqr(x)+2);
writeln(‘y =‘,y:4:2);
readln;
End.
1 этап: Постановка задачи
Вычислить значение функции у=х2+1 на отрезке от -1 до 3, изменяющегося с шагом 0.8.
2 этап: Построение информационной модели
Дано: Х – аргумент функции [-1;3] с шагом 0.8
Результат: У – значение функции
Взаимосвязь: у=х2 +1
3 этап: Разработка алгоритма и программы
Словесный алгоритм:
Шаг 1: х:= -1
Шаг 2: Если x<=3 то шаг 3 иначе шаг 7
Шаг 3: у=х2 +1
Шаг 4: вывести у
Шаг 5: х:=х+0.8
Шаг 6: перейти на шаг 2
Шаг 7: конец
Программа.
Program z-3;
Uses crt;
Var x,y: real;
Begin
Clrscr;
x:= -1;
while x<=3 do begin
y:=sqr (x) +1;
writeln (‘x= ’, x:4:2, ‘y= ‘ , y:4:2);
end;
readln;
end.