Лекция 1 - Линейный алгоритм.pptx
- Количество слайдов: 39
Лекция № 1 Линейный алгоритм
Понятие алгоритма Алгоритм - это четкая последовательность действий, направленная на достижение поставленной цели или решения задачи. Исполнитель алгоритма – тот кто (что) будет осуществлять выполнения алгоритма.
Свойства алгоритмов Дискретность. Алгоритм должен представлять процесс решения задачи как последовательное выполнение простых шагов. При этом для выполнения каждого шага алгоритма требуется конечный отрезок времени. Определенность (детерминированность). Каждое правило алгоритма должно быть четким, однозначным. Результативность. Алгоритм должен приводить к решению за конечное число шагов. Массовость. Алгоритм должен быть применим для некоторого класса задач, различающихся лишь исходными данными. Понятность. Алгоритм должен быть понятен исполнителю. Правильность. Выполнение алгоритма дает правильные результаты решения поставленной задачи.
Основные алгоритмические конструкции Базовыми алгоритмическими конструкциями являются: • Линейные • Разветвленные • Циклические
Линейный алгоритм Линейным называется алгоритм, в котором все этапы решения задачи выполняются строго последовательно. Линейный алгоритм выполняется в естественном порядке его написания и не содержит разветвлений и повторений.
Структура линейного алгоритма Действие 1 Действие 2 . . . Действие N
Способы записи алгоритмов Используются следующие способы представления алгоритма: • на естественном языке; • в графическом , в виде блок-схем; • на алгоритмическом языке; • на языке программирования, в виде программы.
Пример алгоритма Задача 1. Составить алгоритм расчета площади прямоугольника по заданным сторонам А и B. A B S=A*B
Словесная форма записи алгоритма 1) Ввести значение стороны А прямоугольника; 2) Ввести значение стороны B прямоугольника; 3) Рассчитать S=A*B; 4) Вывести значение площади прямоугольника S.
Графический способ записи алгоритмов Блок-схема - это графический способ представления алгоритма, каждое действие при этом изображается в виде последовательности связанных блоков.
Название блока Обозначение и пример заполнения Пояснение Процесс Вычислительное действие или последовательность действий Решение Проверка условий Модификация Начало цикла Предопределенный процесс Вычисления по подпрограмме, стандартной подпрограмме Ввод-вывод в общем виде Пуск-останов Начало, конец алгоритма, вход и выход в подпрограмму Документ Вывод результатов на печать
Графический способ записи алгоритмов начало Ввод А, B S=A*B Вывод S конец
Программирование и запись алгоритмов Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Процесс написания программ называют программированием. Язык программирования — набор правил, предназначенный для записи программ.
Программирование и запись алгоритмов Транслятор — программа, которая принимает на вход программу на одном языке (он в этом случае называется исходный язык, а программа — исходный код), и преобразует её в программу, написанную на другом языке (соответственно, целевой язык и объектный код). В качестве целевого языка наиболее часто выступают языки низкого уровня (например Ассемблер), так как они наиболее удобны (с точки зрения производительности) для последующего исполнения. В качестве исходного языка следует понимать языки высокого уровня (например Pascal, C, Basic).
Запись на алгоритмическом языке Алгоритмический язык (также русский алгоритмический язык, РАЯ) — язык программирования, используемый для записи и изучения алгоритмов. алг Площадь прямоугольника (арг цел A, B, рез цел S) дано | A>0 , B>0 надо | S = A*B нач | ввод A, B; | S: =A*B; | вывод "S = ", S; кон
Запись алгоритма на языке программирования Паскаль Алфавит языка - набор элементарных символов, используемый для составления программ. Алфавит содержит: • 52 буквы латинского алфавита (строчные и заглавные); • арабские цифры (0 -9); • специальные символы; • знаки математических действий (+ - * / ); • знаки пунктуации (. : , ; " ` ); • скобки ( [ ] ( ) { } ); • знак пробела; • знаки отношений (< > =).
Общая структура программы на языке Паскаль Рrogram ИМЯ. . ; {заголовок программы} Uses. . . ; {раздел описания модулей} Var. . ; {раздел объявления переменных} . . . Begin {начало исполнительной части программы} . . . {последовательность . . . операторов} End. {конец программы}
Идентификаторы Имена, даваемые программным объектам (константам, типам, переменным, функциям и процедурам, да и всей программе целиком) называются идентификаторами. Должно удовлетворять следующим требованиям: • длина имени не должна превышать 63 символа, • первым символом не может быть цифра, • переменная не может содержать пробел; • имя не должно совпадать с зарезервированным (служебным) словом; • прописные и строчные буквы воспринимаются одинаково.
Примеры зарезервированных слов and array begin case const div do downto else end file far forward function goto implementation in interface label mod nil not of or pointer procedure program record repeat set shl shr string then text to type unit until uses var while with xor
Переменные и типы данных Переменная - это программный объект, значение которого может изменяться в процессе работы программы. Тип данных - это характеристика диапазона значений, которые могут принимать переменные, относящиеся к этому типу данных. Все используемые в программе переменные должны быть описаны в специальном разделе var по следующему шаблону: var <имя_переменной_1> [, <имя_переменной_2, _>] : <имя_типа_1>; <имя_переменной_3> [, <имя_переменной_4, _>] : <имя_типа_2>;
О типах данных Для временного хранения информации в операторах памяти машины в языке Паскаль используются константы и переменные. Они могут быть различных типов: Простые: integer - целых чисел; real - действительных чисел; char - символьный тип; string - строковый; boolean - логический; Сложные: record – комбинированный; set - множественный и другие.
Описание переменных Приведем пример описания переменных: Var a : integer; b, c : real; m : boolean;
Константы Константа - это объект, значение которого известно еще до начала работы программы. В языке Pascal существует три вида констант: • неименованные константы (цифры и числа, символы и строки, множества); • именованные нетипизированные константы; • именованные типизированные константы.
Неименованные константы не имеют имен, и потому их не нужно описывать. Примерами использования неименованных констант могут послужить следующие операторы: I : = -10; r : = 12. 075 + х; c : = 'z'; s : = 'abc' + st; s 5 : = [1, 3, 5] * s 6; b : = true;
Нетипизированные константы Именованные константы, как следует из их названия, должны иметь имя. Эти имена необходимо сообщить компилятору, то есть описать в специальном разделе const. Если не указывать тип константы, то по ее внешнему виду компилятор сам определит, к какому (базовому) типу ее отнести.
Нетипизированные константы Вот несколько примеров описания нетипизированных именованных констант: const n = -10; m = 100000; mmm = n*100; x = 2. 5; c = 'z'; s = 'string'; b = true;
Типизированные константы Типизированные именованные константы представляют собой переменные(!) с начальным значением, которое к моменту старта программы уже известно. Типизированные константы нельзя использовать для определения других констант, типов данных и переменных. Их значения можно изменять в процессе работы программы. Описание типизированных констант производится по следующему шаблону: const <имя_константы> : <тип_константы> = <начальное_значение>;
Операторприсваивания Оператор присваивания - основной оператор любого языка программирования. Общая форма записи оператора: имя величины : = выражение Например, V: =5; или X: =A+1;
Операции и выражения. Арифметические операции. Операции общей арифметики (арифметические оперции) + сложение - вычитание * умножение / деление Пример арифметического выражения : y: =(2*k+5)/(7 -x);
Арифметические операции Операции целочисленной арифметики применимы, как легко догадаться, только к целым типам. a div b - деление а на b нацело Пример: x: =13; y: =5; z: =x div y; В результате переменная z получит значение 2.
Арифметические операции a mod b - взятие остатка при делении а на b нацело. Пример: x: =13; y: =5; z: =x mod y; В результате переменная z получит значение 3.
Стандартные математические функции Функция Описание abs(x) arctan(x) cos(x) exp(x) frac(x) int(x) ln(x) odd(x) pi round(x) trunc(x) sin(x) sqrt(x) Абсолютное значение (модуль) числа Арктангенс (в радианах) Косинус (в радианах) Экспонента (e x) Взятие дробной части числа Взятие целой части числа Натуральный логарифм (по основанию e) Проверка нечетности числа Значение числа π Округление к ближайшему целому Округление "вниз" - к ближайшему меньшему целому Синус (в радианах) Возведение в квадрат Извлечение квадратного корня
Запись выражений Пример записи выражения на языке Pascal b: =sqrt((2+x 1 -abs(x 2))/sqr(sin(alpha)))+2*k;
Операторы ввода-вывода Операторы ввода Для того чтобы получить данные, вводимые пользователем вручную (то есть с клавиатуры), применяются команды read(<список_ввода>) и readln(<список_ввода>). Список ввода - это последовательность имен переменных, разделенных запятыми. Например, при помощи команды read(k, x, c, s); программа может получить с клавиатуры данные сразу для четырех переменных.
Операторы ввода-вывода Операторы вывода Для того чтобы вывести на экран какое-либо сообщение, используют процедуру write(<список_вывода>) или writeln(<список_вывода>). Примеры операторов вывода: write (a); writeln (s, m, k); write ( ‘Длина окружности ’, L, ’ см. ’ );
Форматный вывод данных Используем следующую запись оператора вывода write(a: 5, b, c: 20: 5); Первое число после знака ": " обозначает количество позиций, выделяемых под всю переменную, а второе - под дробную часть числа. Десятичная точка тоже считается отдельным символом. Получим _ _ 7 x _ _ _ - 1 0. 5 0 0 (подчерк служит для визуализации пробела)
Запись алгоритма на языке программирования Паскаль Program z 1; Var a, b, s : integer; Begin writeln (‘Введите стороны А и B’); read (a, b); s: =a*b; write (‘S=‘, s, ’ кв. см. ’) End.
Пример линейного алгоритма Задача 2. Составить алгоритм нахождения суммы трех чисел А, B, C. начало Program z 2; Var a, b, c, s : real; Ввод А, B, C Begin writeln (‘Введите А, B и C’); S=A+B+C read (a, b, c); s: =a+b+c; Вывод S конец write (‘S=‘, s) End.