К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 54. Алгоритм и его свойства Алгоритм и его свойства § 55. Простейшие программы Простейшие программы § 56. Вычисления Вычисления
К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 54. Алгоритм и его свойства 2
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Что такое алгоритм? 3 Мухаммед ал-Хорезми (ок. 783–ок. 850 гг.) Алгоритм это точное описание порядка действий, которые должен выполнить исполнитель для решения задачи за конечное время. Исполнитель – это устройство или одушёвленное существо (человек), способное понять и выполнить команды, составляющие алгоритм. Формальные исполнители: не понимают (и не могут понять) смысл команд.
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Свойства алгоритма 4 Дискретность алгоритм состоит из отдельных команд, каждая из которых выполняется за конечное время. Детерминированность (определённость) при каждом запуске алгоритма с одними и теми же исходными данными получается один и тот же результат. Понятность алгоритм содержит только команды, входящие в систему команд исполнителя. Конечность (результативность) для корректного набора данных алгоритм должен завершаться через конечное время. Корректность для допустимых исходных данных алгоритм должен приводить к правильному результату.
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Как работает алгоритм? 5 дискретный объект алгоритм шаг 1 шаг 2 шаг дискретный объект получает на вход дискретный объект в результате строит другой дискретный объект (или выдаёт сообщение об ошибке) обрабатывает объект по шагам на каждом шаге получается новый дискретный объект
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Способы записи алгоритмов 6 естественный язык псевдокод установить соединение пока не принята команда «стоп» принять команду выполнить команду завершить сеанс связи установить соединение пока не принята команда «стоп» принять команду выполнить команду завершить сеанс связи установить соединение нц принять команду выполнить команду кц_при команда = 'stop' завершить сеанс связи установить соединение нц принять команду выполнить команду кц_при команда = 'stop' завершить сеанс связи
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Способы записи алгоритмов 7 блок-схема setConnection; repeat cmd:= getCommand; executeCommand(cmd); until cmd = "stop"; closeConnection; setConnection; repeat cmd:= getCommand; executeCommand(cmd); until cmd = "stop"; closeConnection; программа принять команду установить соединение завершить соединение выполнить команду «стоп»? да нет
К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 55. Простейшие программы 8
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Простейшая программа 9 program qq; begin { начало программы } { тело программы } end. { конец программы } program qq; begin { начало программы } { тело программы } end. { конец программы } комментарии в скобках {} не обрабатываются Что делает эта программа? ? название алгоритма Пример программы
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Вывод на экран 10 program qq; begin write('2+'); { без перехода } writeln('2=?'); { на новую строку} writeln('Ответ: 4'); end. program qq; begin write('2+'); { без перехода } writeln('2=?'); { на новую строку} writeln('Ответ: 4'); end. Протокол: 2+2=? Ответ: 4 Пример программы
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задания 11 «B»: Вывести на экран текст «лесенкой» Вася пошел гулять «C»: Вывести на экран рисунок из букв Ж ЖЖЖ ЖЖЖЖЖ ЖЖЖЖЖЖЖ HH HH ZZZZZ
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Сложение чисел 12 Задача. Ввести с клавиатуры два числа и найти их сумму. Протокол: Введите два целых числа =55 компьютер пользователь компьютер считает сам! 1. Как ввести числа в память? 2. Где хранить введенные числа? 3. Как вычислить? 4. Как вывести результат? 1. Как ввести числа в память? 2. Где хранить введенные числа? 3. Как вычислить? 4. Как вывести результат? ?
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Сумма: псевдокод 13 program qq; begin { ввести два числа } { вычислить их сумму } { вывести сумму на экран } end. program qq; begin { ввести два числа } { вычислить их сумму } { вывести сумму на экран } end. Псевдокод: алгоритм на русском языке с элементами Паскаля. Компьютер не может исполнить псевдокод! !
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Переменные 14 Переменная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы. Значение Имя Поместится? ? Другой тип данных В переменной хранятся данные определенного типа! !
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Имена переменных 15 МОЖНО использовать латинские буквы (A-Z) цифры знак подчеркивания _ заглавные и строчные буквы НЕ различаются НЕЛЬЗЯ использовать русские буквы пробелы скобки, знаки +, =, !, ? и др. имя не может начинаться с цифры Какие имена правильные? AXby R&B 4Wheel Вася PesBarbos TU154 [QuQu] _ABBA A+B
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Объявление переменных 16 Типы переменных: integer{ целая } real{ вещественная } и другие… Объявление переменных: var a, b, c: integer; выделение места в памяти variable – переменная тип – целые список имен переменных
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Тип переменной 17 область допустимых значений допустимые операции объём памяти формат хранения данных для предотвращения случайных ошибок
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Ввод значения в переменную 18 read ( a ); 1. Программа ждет, пока пользователь введет значение и нажмет Enter. 2. Введенное значение записывается в переменную a. 1. Программа ждет, пока пользователь введет значение и нажмет Enter. 2. Введенное значение записывается в переменную a. ! оператор ввода 5 5
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Ввод значений переменной 19 через пробел: через Enter: read ( a, b ); Ввод значений двух переменных (через пробел или Enter). a 25 b 30 a 25 b 30
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Изменение значений переменной 20 var a, b: integer;... a := 5; b := a + 2; a := (a + 2)*(b – 3); b := b + 1; var a, b: integer;... a := 5; b := a + 2; a := (a + 2)*(b – 3); b := b + 1; a ? 5 5 b ? a 5 7*4 28 b
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Вывод данных 21 { вывод значения переменной a} { вывод значения переменной a и переход на новую строку} { вывод текста } {вывод текста и значения переменной c} write( a ); writeln( a ); writeln( 'Привет!' ); writeln( 'Ответ: ', c ); writeln ( a, '+', b, '=', c );
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Сложение чисел: простое решение 22 program Sum; var a, b, c: integer; begin read ( a, b ); c := a + b; writeln ( c ); end. program Sum; var a, b, c: integer; begin read ( a, b ); c := a + b; writeln ( c ); end. Что плохо? ? Пример программы
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Сложение чисел: полное решение 23 program Sum; var a, b, c: integer; begin writeln('Введите два целых числа'); read ( a, b ); c := a + b; writeln ( a, '+', b, '=', c ); end. program Sum; var a, b, c: integer; begin writeln('Введите два целых числа'); read ( a, b ); c := a + b; writeln ( a, '+', b, '=', c ); end. Протокол: Введите два целых числа =55 компьютер пользователь Пример программы
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Снова про оператор вывода 24 a:= 123; write( a:5 ); a:= 123; write( a:5 ); Форматный вывод: Вычисление выражений: writeln ( a, '+', b, '=', a+b ); a+b знаков
К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 56. Вычисления 25
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Типы данных 26 byte { целые } shortint { целые } word { целые } longint { целые – } single { вещественная, 4 байта } real { вещественная, 6 байта } double { вещественная, 8 байтов } extended { вещественная, 10 байтов } boolean { логическая, 1 байт } char { символ, 1 байт } string { символьная строка } Сколько байт в памяти? ?
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Арифметические выражения 27 a:= (c + b*5*3 - 1) / 2 * d; Приоритет (старшинство): 1)скобки 2)умножение и деление 3)сложение и вычитание
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Деление, div, mod 28 Результат деления «/» – вещественное число: a:= 2 / 3; var a: single; … div – деление нацело (остаток отбрасывается) mod – остаток от деления var a, b, d: integer;... d := 85; b := d div 10; { 8 } a := d mod 10; { 5 } var a, b, d: integer;... d := 85; b := d div 10; { 8 } a := d mod 10; { 5 }
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, div и mod для отрицательных чисел 29 write(-7 div 2, ','); write(-7 mod 2); write(-7 div 2, ','); write(-7 mod 2); = (-3)*2 + (-1) В математике не так! ! -7 = (-4)*2 + 1 остаток 0 Пример программы
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Вещественные числа 30 Целая и дробная части числа разделяются точкой! ! var x: double;... x:= ; var x: double;... x:= ; Форматный вывод: a:= 1; write( a/3 ); write( a/3:7:3 ); a:= 1; write( a/3 ); write( a/3:7:3 ); E-001 3, = 0, всего знаков в дробной части Пример программы
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Стандартные функции 31 abs(x) модуль sqrt(x) квадратный корень sin(x) синус угла, заданного в радианах cos(x) косинус угла, заданного в радианах exp(x) экспонента е х ln(x) натуральный логарифм trunc(x) отсечение дробной части round(x) округление до ближайшего целого
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Случайные числа 32 Случайно… встретить друга на улице разбить тарелку найти 10 рублей выиграть в лотерею Случайный выбор: жеребьевка на соревнованиях выигравшие номера в лотерее Как получить случайность?
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Случайные числа на компьютере 33 Электронный генератор нужно специальное устройство нельзя воспроизвести результаты малый период (последовательность повторяется через 10 6 чисел) Метод середины квадрата (Дж. фон Нейман) в квадрате Псевдослучайные числа – обладают свойствами случайных чисел, но каждое следующее число вычисляется по заданной формуле. зерно
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Генератор случайных чисел 34 Вещественные числа в интервале [0,1): var X, Y: double;... X:= random; { интервал от 0 до 1 (<1) } Y:= random; { это уже другое число! } var X, Y: double;... X:= random; { интервал от 0 до 1 (<1) } Y:= random; { это уже другое число! } англ. random – случайный Целые числа в интервале [0,10): var K, L: integer;... K:= random( 10 ) { интервал от 0 до 9 (<10) } L:= random( 10 ) { это уже другое число! } var K, L: integer;... K:= random( 10 ) { интервал от 0 до 9 (<10) } L:= random( 10 ) { это уже другое число! }
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Другой интервал 35 Вещественные числа: var X, a, b: double;... X:= random*10; { расширение интервала: [0,10) } X:= random*10 + 5; { расширение и сдвиг: [5,15) } X:= random*(b-a) + a; { расширение и сдвиг: [a,b) } var X, a, b: double;... X:= random*10; { расширение интервала: [0,10) } X:= random*10 + 5; { расширение и сдвиг: [5,15) } X:= random*(b-a) + a; { расширение и сдвиг: [a,b) } var K, a, b: integer;... K:= random(10) + 5; { [5,14] } X:= random(b-a+1) + a; { [a,b] } var K, a, b: integer;... K:= random(10) + 5; { [5,14] } X:= random(b-a+1) + a; { [a,b] } Целые числа:
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 36 «A»: Ввести с клавиатуры три целых числа, найти их сумму, произведение и среднее арифметическое. Пример: Введите три целых числа: =20 5*7*8=280 (5+7+8)/3=6.667 «B»: Ввести с клавиатуры координаты двух точек (A и B) на плоскости (вещественные числа). Вычислить длину отрезка AB. Пример: Введите координаты точки A: Введите координаты точки B: Длина отрезка AB = 4.272
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 37 «C»: Получить случайное трехзначное число и вывести через запятую его отдельные цифры. Пример: Получено число 123. Его цифры 1, 2, 3.
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ 163, г. Санкт-Петербург ЕРЕМИН Евгений Александрович к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Источники иллюстраций 39 1.old-moneta.ruold-moneta.ru logos.cs.uic.edulogos.cs.uic.edu 6.ru.wikipedia.org ru.wikipedia.org 7. иллюстрации художников издательства «Бином» 8. авторские материалы