Алгоритмизация Балмашнова.ppt
- Количество слайдов: 78
Алгоритмизация и программирование Балмашнова Александра 8 «В»
Понятия алгоритм 1. 2. 3. 4. Алгоритм – точная конечная последовательность команд исполнителю, приводящая от исходных данных к искомому результату. Исполнитель алгоритма – некоторая абстрактная или реальная (техническая, биологическая, биотехническая) система способная выполнять действия предписанные алгоритмом. Характеристики исполнителя: Среда (обстановка) – «место обитания» исполнителя. Система команд – каждый исполнитель может выполнять команды из заданного списка. Элементарные действий – они совершаются исполнителем после вызова. Отказы исполнителя возникают, если команда вызывается при недопустимой для неё состоянии среды. Отказы бывают двух типов: «Не понимаю!» и «Не могу выполнить!» . Обычно исполнитель ничего не знает о цели алгоритма. Он выполняет все полученные команды, не задавая вопросов.
Пример Алгоритм отыскивания координат точки М, заданной в системе координат х. Оу 1. Провести через точку М прямую, параллельную оси у, и найти координату точки пересечения это прямой с осью х – это будет абсцисса точки М. Провести через точку М прямую, параллельную оси х, и найти координату пересечения этой прямо с осью у – это будет ордината точки М. Алгоритм построения точки М (a; b) в прямоугольной системе координат х. Оу 1. 2. 3. Построить прямую х = а Построить прямую у = b. Найти точку пересечения построенных прямых – это и будет точка М (a; b).
1. 2. 3. 4. 5. Способы записи алгоритма: Словесно-пошаговый - Описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке. Учебный алгоритмический язык Язык программистов Блок-схема - Алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Таблица
Название блока Вид блока Назначение блока Начало-Конец Указание на начало и конец алгоритма Ввод-Вывод Организация ввода и вывода данных Решение (условный, логический блок) Выбор направления выполнения алгоритма в зависимости от выполнения условия Команды Выполнение действия или группы действий Начало цикла для…
Служебные слова для школьно-алгоритмического способа записи алгоритмов Школьный алгоритмический язык Пояснения алг <название> Начало алгоритма нач вещ <переменные> Описание типов переменных ввод <данные> Ввод информации вывод <ответ> Вывод ответа кон Конец алгоритма
Служебные слова в Turbo Pascal Значение Turbo Pascal алгоритм program m 1 начало begin конец end аргументы результат var a, b: integer; c, d: real read(a, c); readln(a, c) write(a. b); writeln(a, b) целые числа десятичные дроби integer real
1. 2. 3. 4. 5. Свойства алгоритма: Дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых 9 или ранее определённых) шагов (этапов). Понятность – исполнитель алгоритма должен понимать, как его выполнять, т. е. имея алгоритм и производя вариант исходных данных, исполнитель должен знать, как действовать для выполнения этого алгоритма. Определённость – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует дополнительных указаний или сведений о решаемой задаче. Результативность (конечность) – состоит в том, что за конечное число шагов алгоритм либо приводит к решению задачи, либо после конечного числа шагов останавливается, изза невозможности получить решение, с выдачей соответствующего сообщения, либо неограниченно продолжается в течение времени отведённого для выполнения алгоритма, с выдачей промежуточных результатов. Массовость – означает, что алгоритм решения задачи разработан в общем виде, т. е. он должен быть применим для некоторого класса задач, различных лишь исходными данными. При этом исходные данные могут выбираться из некоторой области – области применимости алгоритма.
Типы алгоритмов: 1. Линейный – команды распространяются в том порядке, в котором должны быть выполнены предписанные ими действия. Последовательность команд называют серией. начало ввод команда вывод конец
2. Ветвление – В зависимости от истины или ложности условия происходит переход на ту или иную последовательность команд, либо выход из конструкции ветвления. Полная форма: Учебный алгоритмический язык: если условие то серия 1 иначе серия 2 кв Turbo Pascal: If <условие> then <опер1> else <опер2>; да серия 1 да Неполная форма: Учебный алгоритмический язык: если условие то серия 1 кв Turbo Pascal: If <условие> then <опер1>; условие серия 1 нет серия 2 условие нет
3. Цикл - неоднократное выполнение одной и той же серии команд. Рабочая часть цикла – тело цикла. Цикл «для» с известным числом повторений или цикл с параметром – обозначает переменную и меняет своё значение в ходе выполнения цикла. • В качестве тела цикла могут выступать: • 1)Линейные • 2)Ветвящиеся (или др. структуры и их сочетания) Учебный алгоритмический язык: для I: =A до B нц тело цикла кц да I: =A до B Тело цикла нет
Цикл «до» - Тело цикла будет выполнено хотя бы один раз. Учебный алгоритмический язык: нц тело цикла до условие кц Тело цикла да условие нет Цикл «пока» с неизвестным числом повторений или интерационный – обозначает что, если условие продолжения цикла не соблюдается с самого начала, то тело цикла не выполняется ни разу. Учебный алгоритмический язык: нет пока условие нц да тело цикла Тело цикла кц
Решение задач
Задача № 1 Условие: y = 3 x + 5 * (x*x) – 4 Исходные данные: х Результат: у Решение: а) Блок-схема начало Ввод х у: = 3 x + 5 * (x*x) – 4 Вывод y конец в) Turbo Pascal
Задача № 2 Условие: Найти максимальное из трёх чисел. Исходные данные: a, b, c Промежуточные результаты: y Результат: max Решение: а) Блок-схема начало Ввод a, b, c да a>b нет y: =a y: =b да y>c max: =y нет max: =y конец б) Turbo Pascal
Задача № 3 Условие: Найти максимальное из четырёх чисел. Исходные данные: a, b, c, d Промежуточные результаты: y, z Результат: max Решение: а) Блок-схема начало Ввод a, b, c, d да a>b нет y: =a y: =b да c>d z: =y да нет z: =d y>z max: =y нет max: =z конец б) Turbo Pascal
Задача № 4 Условие: Вводится с клавиатуры некое число x и любые числа a и b (a>b) являются концами отрезка ab. Принадлежит ли х отрезку? Исходные данные: x, a, b Результат: Решение: а) Блок-схема б) Turbo Pascal начало Ввод x, a, bc да да x<=b X принадлежит ab a>=x нет X принадлежит ab конец
Задача № 5 Условие: Найти сумму первых десяти натуральных чисел. Исходные данные: 10 первых натуральных чисел Результат: S Решение: б) Turbo Pascal а) Блок-схема начало S: =0 j: =1 до 10 S: =S+j ‘S=‘, S конец
Задача № 6 Условие: С клавиатуры вводится n целых чисел, найти произведение всех нечётных из них. Исходные данные: n, j, x. Результат: P б) Turbo Pascal Решение: а) Блок-схема начало N P: =1 j: =1 до 10 Ввод x да x mod 2=1 P: =P*x Вывод P конец нет
Задача № 7 Условие: с клавиатуры вводятся числа (real), возвести во вторую степень те из них, значение которых отрицательное и в четвертую степень, значения который положительные. Исходные данные : N, x. Промежуточные результаты: i, y. б) Turbo Pascal Результат: y. Решение: а) Блок-схема начало N j: =1, N x да y: =x*x*x*x x>0 нет конец y: =x*x
Задача № 8 Условие: Найти сумму всех двузначных чисел. Исходные данные: все двузначные числа (от 10 до 99). Результат: S. Решение: а) Блок-схема начало S: =0 j: =10 до 99 S: =S+j ‘S=‘, S конец б) Turbo Pascal
Задача № 9 Условие: с клавиатуры вводится n целых чисел, найти количество положительный чисел и сумм. Исходные данные: Результат: начало Решение: а) Блок-схема N P: =1 i: =1 до 10 Ввод x x mod 2=1 P: =P*x Вывод P конец
Задача № 10 Условие: Каждую минуту бактерия делится на двое, в начальный момент времени есть одна бактерия. Сколько будет бактерий через n минут? Результат: b. Решение: а) Блок-схема начало n b: =1 i: =1, t x: =x*x Вывод b конец
Задача № 11 Условие: Посчитать количество счастливых билетиков, если номер каждого билета состоит из 6 цифр. начало Исходные данные: с1, с2, с3, с4, с5, с6. Результат: ch ch: =0 Решение: с1 от 1 до 9 а) Блок-схема с2 от 1 до 9 с3 от 1 до 9 с4 от 1 до 9 с5 от 1 до 9 с6 от 1 до 9 с1+с2+с3= с4+с5+с6 ch: =ch+1 ‘ch=‘, ch конец
Задача № 12 Условие: На скотном дворе у кроликов и густей вместе 68 лап. Вывести на экран все возможные варианты количества гусей и кроликов. Результат: g, k. Решение: начало G: =0 до 34 K: =0 до 17 1 g+4 k=68 Вывод g, k конец
Задача № 13 Условие: Вывести 10 случайных чисел в диапазоне от 1 до 100. Исходные данные: Результат: Решение: а) Блок-схема начало i: =1 до 10 конец
Задача № 14 Условие: с клавиатуры вводится n случайных, от 20 до 40, чисел. Найти сколько из них нечётные. Результат: x Решение: а) Блок-схема начало Ввод n X: =1 i: =1 до n X: =2*x Вывод x конец
Задача № 15 Условие: С клавиатуры вводят координаты n точек. Определить, сколько из них относятся к III четверти. Исходные данные: Результат: Решение: а) Блок-схема
Задача № 16 Условие: Написать программу, которая вводит целые числа до тех пор пока не будет введён 0. Посчитать количество положительных и отрицательных чисел. Результат: kp, ko Решение: начало а) Блок-схема Kp: =0 Ko: =0 Ввод x да нет X>0 Kp: =kp+1 да нет X<0 Ko: =ko+1 нет X=0 да Вывод kp, ko конец
Задача № 17 Условие: С клавиатуры вводится длинное целое число, посчитать количество цифр в числе. Исходные данные: Результат: t Решение: а) Блок-схема начало Ввод n T: =0 N: =n div 10 нет N=0 да Вывод t конец
Задача № 18 Условие: С клавиатуры вводится целое число, найти сумму цифр. Исходные данные: Результат: S Решение: а) Блок-схема начало Ввод n S: =0 S: =S+n mod 10 N: =n div 10 N=0 Вывод S конец
Обработка строк Строка – упорядоченная последовательность символов. Строковой тип данных – структурный тип в Турбо-Паскале. Каждый символ строковой величины занимает 1 байт памяти (код ASCII) количество символов в строке называют её длиной. Длина строки может лежать в диапазоне от 0 до 255. Строковая константа – последовательность символов, заключённых в апострофы. Например: ‘это строковая константа’ , ’ 272’. Два следующий друг за другом апострофа (‘’) Обозначают пустую строку, т. е. строку с нулевой длиной. Строковая переменная описывается в разделе описания переменных: Var <идентификатор> : string [<максимальная длина строки>]. Например: Var Name: string [20] В описании строки можно не указывать длины. Например: Var slovo: string. В таком случае подразумевается, что она равна максимальной величине – 255. Элементы строки идентифицируются именем строки с индексом, заключённым в квадратные скобки. Например: N[5], S[i], slovo[k+1]. Первый символ строки имеет номер 1. индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания. Тип string и стандартный тип char совместимы. Строки и символы могут употребляться в одних и тех же выражениях.
Операции над строками. Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковый константы так и переменные. Пример: ‘Мама’ + ‘ мыла’ + ‘ раму’. В результате получится строка: ‘Мама мыла раму’. Длина результирующей строки не должна превышать 255. Операция отношения: =, <, >, <=, >=, <>. Позволяют произвести сравнение двух строк, в результате чего получается логическое значение (true или false). Операция отношения имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы. Пример 1: Выражение Результат ‘True 1’<‘True 2’ True “Mother’>’MOTHER’ True ‘Мама’<>’ Мама’ True ‘Cat’=‘Cat’ True
Функция Copy (S, Poz, N) выделяет из строки S подстроку длинной N символов, начиная с позиции Poz. Здесь N и Poz – целочисленные выражения. Пример 2: Значение S Выражение ‘Мама мыла раму’ Copy (S, 6, 4) ‘Маша ела кашу’ Copy (S, 1, 8) Функция Concat ( одну строку. Пример 3: Результат ‘мыла’ ‘Маша ела’ ) выполняет сцепление (конкатенацию) строк Выражение Результат Concat(‘Маша’, ‘ ела’, ‘ кашу’) ‘Маша ела кашу’ Функция Length(S) определяет текущую длину строки S. Результат – значение целого типа. Пример 4: Значение S Выражение Результат ‘test-5’ Length(S) 6 ‘(A+B)*C’ Length(S) 7 в
Функция Pos ( )обнаруживает первое появление в строке подстроки. Результат – целое число, равное номеру позиции, где находится первый символ подстроки Если в подстроки не обнаружено, то результат равен 0. Пример 5: Значение S 2 Выражение Результат ‘abcdef’ Pos(‘cd’, S 2) 3 ‘abcdcdef’ Pos)’cd’, S 2) 3 ‘abcdef’ Pos)’k’, S 2) 0 Процедура Delete (S, Poz, N) - удаление N символов из строки S, начиная с позиции Poz. Пример 6: Исходное значение S Оператор Конечное значение S ‘abcdefg’ Delete(S, 3, 2) ‘abefg’ ‘abcdefg’ Delete(S, 2, 6) ‘a’ В результате выполнения процедуры уменьшается текущая длина строки в переменно S. Процедура Insert ( , Poz) – вставка в строку , начиная с позиции Poz. Пример 7: Исходное значение S Оператор Конечное значение S ‘ЭВМ РС’ Insert(‘IBM-’, S 2, 5) ‘ЭВМ IBM-РС’ ‘Рис. 2’ Insert(‘N’, S 2, 6) ‘Рис. N 2’ .
Задача № 1 Условие: Дана строка, заканчивающаяся точкой. Подсчитать, сколько в ней слов. Решение:
Задача № 2 Условие: Дана строка символов, среди которых есть двоеточие(: ). Определить, сколько символов ему предшествует. Решение:
Задача № 3 Условие: дана строка, содержащая английский текст. Найти количество вхождений букв r, k, t. Решение:
Задача № 4 Условие: Составить программу, определяющую количество гласных в русском тексте, содержащем не более 10 символов Решение:
Задача № 5 Условие: Заменить в арифметическом выражении функцию sqr на exp. Замена выражения sqr на exp достигается последовательным применением процедур delete и insert. Решение:
Задача № 6 Условие: найти сумму первой и последней цифры заданного числа и разделить на 2. Решение:
Задача № 7 Условие: В заданном числе заменить все цифры 2 на цифры 5 и разделить новое число на 5. Решение:
Задача № 8 Условие: В заданном числе поменять местами первую и последнюю цифры. Новое число разделить на 4. Решение:
Задача № 9 Условие: Билет имеет шестизначный номер. Определить, является ли он «счастливым» ? Решение:
Задача № 10 Условие: В заданном числе заменить все цифры 0 на цифры 9, а все цифры 1 на цифра 8, к полученному числу прибавить 999. Решение:
Задача № 11 Условие: Найти разность первой и последней цифр заданного числа. Решение:
Задача № 12 Условие: Удвоить все вхождения букв ‘a’ и букв ‘b’ в строковой переменной введённой с клавиатуры. Решение:
Задача № 13 Условие: Будет ли чётной разность первой и последней цифры в числе. Решение:
Графика Turbo Pascal Процедуры: Moveto(x, y) – перемещает курсор в заданную точку, относительно текущей точки на расстояние dx по горизонтали и dy по вертикали. При этом на экране ничего не рисуется. Set. Color(color) – определяет текущий цвет выводимых символов или линий. See. Bk. Color(color) – определяет цвет фона. Put. Pixel(x, y, color) – рисует точку. Line(x 1, y 1, x 2, y 2) – рисует линии от х1 у1 до х2 у2. Circle(x, y, r) – рисует окружность с центром в (х; у) и радиусом r. Rectangle(х1, у1, х2, у2) – рисует прямоугольник х1 у1 – координаты левого верхнего угла, а х2 у2 – координаты правого верхнего угла. Setview. Port(x 1, x 2, y 1, y 2, clip) Clear. Device – очистка экрана Clear. View. Port – очистка графического окна Set. Asrect. Ratio(x, y) – коэффициент масштабирования Line to(x, y) – смещение в точку относительно курсора Line. Rel(dx, dy) Set. Fill. Style(fill, color) – установка типа и цвета заполнения каких либо фрагментов Flood. Fill(x, y, border) – цвет области которая ограничивается замкнутой областью Функции: Определение текущих координат курсора: Get x – по горизонтали Get y – по вертикали Определение максимальной координаты экрана в текущем режиме: Get. Max x, Get. Max y.
Задача № 1
Задача № 2
Задача № 3
Задача № 4
Arc (x, y, beg. A, end. A, r) – рисует дугу окружно с центром в точке x, y от начального угла до конечного радиуса r. y x Ellipse (x, y, end. A, rx, ry) – эллиптическая дуга, с центром x, y от начала координат. Fill. Ellipseb(x, y, xr, yr) – рисует закрашенный эллипс, линии границ Set. Color, Set. Color Set. Fill. Style – будет закрашивать тем цветом. Sektor (x, y, beg. A, end. A, rx, ry) – сектор эллипса, рисует закрашенный эллипс. Fill. Ellipse (x, y, beg. A, end. A, r) – сектор окружности, рисует закрашенную окружность.
Задача № 5
Задача № 6
Задача № 7
Задача № 8
Задача № 9
Задача № 10
Задача № 11
Строковые переменные Char – символьный тип данных, размер 1 Бт, любой символ, который может быть отображен на экране. Строка – последовательность символов от 0 до 255. Значения строк записываются в апострофах. Операции: • Сложение(конкатенация) • Сравнение (abc<cde, abcd>abc) Функции: • Copy – копирование • Concat – сцепление • Length – длина строки • Pos- появление подстроки Процедуры: • Delete – удаление • Insert – вставление Преобразования: • Str(x, a) число x в строку a • Val(a, x, k) – строку a в число x
Задача № 1 Посчитать количество букв «f» в строке, вводимой с клавиатуры.
Задача № 2
Задача № 3
Задача № 4
Задача № 5
Задача № 6 С клавиатуры вводятся имя, отчество, день, месяц и год рождения. Составить и вывести на экран фразу: « Имя Отчество родился(лась) dd mm gggg.
Задача № 7 Удалить из текста, введённого с клавиатуры, все пробелы.
Цикл с неизвестным числом повторений while repeat While <условие> do begin <тело цикла> Repeat <тело цикла> until <условие выхода> Цикл while выполняется если условие верно. Если условие верно, то выход из цикла. Бывает что тело не выполняется ни разу. Тело цикла всегда выполняется хотя бы один раз. С клавиатуры вводятся цифры до 0, посчитать количество положительных и отрицательных чисел. X: =1; np: =0; No: =; While x<> 0 do Begin Write(‘x=‘); Readln(x); If x>0 then np: =np+1; If x<0 then no: =no+1; End; Np: =0 No: =0; Repeat Write(‘x=‘); Readln(x); If x>0 then np: =np+1; If x<0 then no: =no+1; Until x=0
Задача № 8 С клавиатуры вводится натуральное число n. Напечатать все нечетные числа <= n.
Задача № 9
Задача № 10 С клавиатуры вводят целые числа, пока не введен ноль. Сравнить модуль среднего арифметического отрицательных и положительных чисел.
Задача № 11
Задача № 12
Задача № 13
Задача № 14
Алгоритмизация Балмашнова.ppt