Слайд 2
План лекции
Понятие алгоритма
Примеры алгоритмов
Свойства алгоритмов
4. Способы записи алгоритмов
4.1.
Словесное описание алгоритмов
4.2. Графическое описание алгоритмов. Блок-схемы.
4.3. Запись алгоритма
на алгоритмическом языке
4.4. Запись алгоритма на языке программирования.
5. Основные алгоритмические конструкции
5.1. Линейный алгоритм
5.2. Разветвленный алгоритм
5.3. Циклический алгоритм
Слайд 3
Понятие алгоритма
Алгоритм - это четкая последовательность действий, направленная
на достижение поставленной цели или решения задачи.
Исполнитель алгоритма –
тот кто (что) будет осуществлять выполнения алгоритма.
Слайд 4
Пример алгоритма
Алгоритма нахождения середины отрезка при помощи циркуля
и линейки.
Алгоритм деления отрезка АВ пополам:
Поставить ножку циркуля в
точку А;
Установить раствор циркуля равным длине отрезка АВ;
Провести окружность;
Поставить ножку циркуля в точку В;
Провести окружность;
Через точки пересечения окружностей провести прямую;
Отметить точку пересечения этой прямой с отрезком АВ.
Слайд 5
Свойства алгоритмов
Дискретность. Алгоритм должен представлять процесс решения задачи
как последовательное выполнение простых шагов. При этом для выполнения
каждого шага алгоритма требуется конечный отрезок времени.
Определенность (детерминированность). Каждое правило алгоритма должно быть четким, однозначным.
Результативность. Алгоритм должен приводить к решению за конечное число шагов.
Массовость. Алгоритм должен быть применим для некоторого класса задач, различающихся лишь исходными данными.
Понятность. Алгоритм должен быть понятен исполнителю.
Правильность. Выполнение алгоритма дает правильные результаты решения поставленной задачи.
Слайд 6
Способы записи алгоритмов
Используются следующие способы представления алгоритма:
на естественном
языке;
в графическом , в виде блок-схем;
на алгоритмическом языке;
на языке
программирования, в виде программы.
Слайд 7
Способы записи алгоритма
Задача 1. Составить алгоритм расчета площади
прямоугольника по заданным сторонам А и B.
A
B
S=A*B
Слайд 8
Словесная форма записи алгоритма
Ввести значение стороны А прямоугольника;
Ввести
значение стороны B прямоугольника;
Рассчитать S=A*B;
Вывести значение площади прямоугольника S.
Слайд 9
Графический способ записи алгоритмов
Блок-схема - это графический способ
представления алгоритма, каждое действие при этом изображается в виде
последовательности связанных блоков.
Слайд 11
Графический способ записи алгоритмов
Ввод А,B
Вывод S
S=A*B
конец
начало
Слайд 12
Программирование и запись алгоритмов
Программа обычно представляет собой некоторый
алгоритм
в форме, понятной для исполнителя (например, компьютера).
Процесс написания
программ называют программированием.
Язык программирования — набор правил, предназначенный
для записи программ.
Слайд 13
Программирование и запись алгоритмов
Транслятор — программа, которая принимает
на вход
программу на одном языке (он в этом
случае называется
исходный язык, а программа — исходный код), и преобразует
её в программу, написанную на другом языке (соответственно,
целевой язык и объектный код).
В качестве целевого языка наиболее часто выступают языки
низкого уровня (например Ассемблер), так как они наиболее
удобны (с точки зрения производительности) для
последующего исполнения.
В качестве исходного языка следует понимать языки высокого уровня (например Pascal, C, Basic).
Слайд 14
Программирование и запись алгоритмов
Языки программирования по способу трансляции
могут быть
разделены на компилируемые и интерпретируемые.
Компилятор осуществляет перевод
всей исходной программы
в эквивалентную ей результирующую программу на языке
машинных команд.
Интерпретатор анализирует и тут же выполняет (собственно
интерпретация) программу покомандно.
Слайд 15
Запись на алгоритмическом языке
Алгоритмический язык (также русский алгоритмический
язык, РАЯ) — язык программирования, используемый для записи и изучения
алгоритмов.
алг Площадь прямоугольника (арг цел A,B, рез цел S)
дано | A>0 , B>0
надо | S = A*B
нач
| ввод A,B;
| S:=A*B;
| вывод "S = ", S;
кон
Слайд 16
Запись алгоритма на языке программирования Паскаль
Program z1 (input,
output);
Var
a,b,s : integer;
Begin
writeln (‘Введите стороны А и B’);
read
(a, b);
s:=a*b;
write (‘S=‘,s,’ кв.см.’)
End.
Слайд 17
Основные алгоритмические конструкции
Базовыми алгоритмическими конструкциями являются:
Линейные
Разветвленные
Циклические
Слайд 18
Линейный алгоритм
Линейным называется алгоритм, в котором все этапы
решения задачи выполняются строго последовательно.
Линейный алгоритм выполняется в естественном
порядке его написания и не содержит разветвлений и повторений.
Слайд 19
Структура линейного алгоритма
Действие 1
Действие 2
Действие N
. . .
Слайд 20
Пример линейного алгоритма
Задача 2. Составить алгоритм нахождения суммы
трех чисел А, B, C.
Program z2 (input, output);
Var
a,b,c,s :real;
Begin
writeln (‘Введите А, B и C’);
read (a, b, c);
s:=a+b+c;
write (‘S=‘,s)
End.
Ввод А,B,C
Вывод S
S=A+B+C
конец
начало
Слайд 21
Разветвленный алгоритм
Разветвленным алгоритмом называется такой алгоритм, в котором
выбирается один из нескольких возможных путей (вариантов) вычислительного процесса.
Ветвью
алгоритма называется каждый подобный путь.
Слайд 22
Полная разветвленная алгоритмическая структура
Действие 1
Действие 2
. . .
условие
.
. .
да
нет
Слайд 23
Неполная разветвленная алгоритмическая структура
Действие 1
. . .
условие
. .
.
да
нет
Слайд 24
Пример разветвленного алгоритма
Задача 3. Составить алгоритм нахождения корней
квадратного уравнения.
ax2+bx2+c=0
1) Ввести a, b, c;
2) Рассчитать D=b2-4ac;
Если D>0
перейти к шагу 6;
Выдать сообщение «Действительный корней нет»;
Перейти к шагу 8;
Вычислить ;
Вывести x1 и x2 ;
Конец.
Слайд 25
Ввод a,b,c
Вывод x1, x2
D=b2-4ac
D
output);
Var
a,b,c,d,x1,x2 :real;
Begin
writeln (‘Введите a, b и c’);
read (a, b, c);
d:=b*b-4*a*c;
if d<0 then
writeln (‘Действительных
корней нет ‘)
else
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
write (x1,x2)
end
End.
начало
конец
Слайд 26
Циклический алгоритм
Циклический алгоритм реализует повторение некоторых действий. Иными
словами циклические алгоритмы включают в себя циклы.
Циклом называется последовательность
действий, выполняемых многократно, каждый раз при новых значениях параметров.
Слайд 27
Структура циклов с предусловием
Тело цикла
Коррекция управляющей переменной
. .
.
Управляющая переменная не достигла конечного значения
. . .
да
нет
Слайд 28
Вывод a
a=1
t=0
t=t+3
a=a*2
Задача 4. Одноклеточная амеба каждые три
часа делится
пополам. Сколько амеб будет
через 3, 6, 9, … 300
часов.
Program z4 (input, output);
Var
t, a :integer;
Begin
a:=1;
t:=0;
while t<=300 do
begin
t:=t+3;
a:=a*2;
writeln (a)
end
End.
начало
конец
t<=300
да
нет
Слайд 29
Структура циклов с постусловием
Тело цикла
Коррекция управляющей переменной
. .
.
Управляющая переменная достигла конечного значения
. . .
да
нет
Слайд 30
Вывод d
d=1
s=5
d=d+1
s=s*1,1
Задача 5. Спортсмен, начав тренировки, в
в первый
день пробежал 5 км. Каждый сле-
дующий день он увеличивал
дневную норму
на 10% от предыдущего дня. Через сколько
дней он будет пробегать в день более 25 км.?
Program z5 (input, output);
Var
d : integer;
s : real;
Begin
s:=5;
d:=1;
repeat
d:=d+1;
s:=s*1.1;
until s>25;
write (d)
End.
начало
конец
s>25
да
нет
Слайд 31
Структура циклов с параметром
Тело цикла
. . .
. .
.
Коррекция управляющей переменной от начального до конечного значения с
шагом
Слайд 32
Вывод s
s=0
s=s+x
Задача 6. Найти сумму чисел натурального ряда
от 1 до 10.
Program z6 (input, output);
Var
s,x :integer;
Begin
s:=0;
for x:=1 to 10 do
s:=s+x;
write(s)
End.
начало
конец
x=1,10,1
Слайд 33
Вопросы
- Дайте определение понятию алгоритм.
- Какие свойства
алгоритмов Вам известны?
- Что означает понятность, определенность (детерминированность), результативность,
массовость, дискретность алгоритма ?
- Какие способы записи алгоритма Вам известны?
- Что Вы понимаете под понятием исполнитель алгоритма?
- Что такое программа?
- Что такое программирование?
- Какие основные алгоритмические структуры вам известны? Приведите примеры.
- Что такое блок-схема алгоритма?
- Запишите блок-схему алгоритма для нахождения произведения четных чисел от 2 до 20.
- Что такое алгоритмический язык?
- Что Вы понимаете под термином транслятор?
- Чем интерпретатор алгоритмического языка отличается от компилятора?