Алгоритмы и алгоритмизация
Алгоритм Алгоритм – последовательность команд исполнителю, приводящая к решению поставленной задачи. Исполнитель – тот, кто исполняет команды. Исполнителем может быть человек, животное, техническое устройство. Все команды, понятные данному исполнителю называются системой команд исполнителя.
Свойства алгоритма: 1)Понятность (все команды должны быть понятны исполнителю) 2)Дискретность (должно быть ясно где заканчивается одна команда и начинается другая) 3)Определённость (любая команда алгоритма должна пониматься исполнителем однозначно) 4)Конечность (алгоритм должен приводить к решению поставленной задачи за конечное число шагов) 5)Результативность (алгоритм в любом случае должен выдать какой-то результат) 6)Массовость (алгоритм должен быть применим к целому классу задач, а не к какой-то одной конкретной)
Виды алгоритмов Линейный (команды выполняются строка одна за другой) Разветвляющийся (есть условие, при выполнении которого выполняются одни команды, а при невыполнении – другие) Циклический (есть цикл, т.е. повторение одинаковых команд либо заданное число раз, либо до выполнения некоторого условия)
Разделы программы в Паскале. Название разделаЗапись раздела в Паскале Раздел имениProgram P1; Раздел модулейUses CRT; Раздел описания переменных Var a, b, c: integer; e, f, g: real; Раздел операторовBEGIN Оператор1; Оператор2; ……………….. ОператорN; END.
Типы переменных
Математические действия в Паскале Знаки действий: + (сложение) - (вычитание) * (умножение) / (деление) () – скобки указывают очерёдность действий ФункцияОписаниеПример sqrt(a)Вычисляет квадратный корень из числа a sqrt(9) = 3 sqr(a)Вычисляет квадрат числа asqr(5) = 25 a div bВычисляет целое частное от деления a на b 7 div 2 = 3 a mod bВычисляет целый остаток от деления a на b 7 mod 2 = 1
Некоторые другие команды Clrscr; команда очистки экрана Exit; команда завершения программы. Команду exit; можно поместить в нужное место. Когда исполнитель дойдёт до этой команды программа будет корректно завершена без выполнения дальнейших команд.
Метки Метка – идентификатор, позволяющий обратиться к определённому месту в программе. Описание меток: Label 1, b, L2; Раздел меток Label указывается до или после раздела Var. Метка может быть названа любым сочетанием латинских букв и цифр.
Использование меток Оператор GOTO Оператор goto позволяет перейти к метке, т.е. к исполнению того места в программе, перед которым стоит метка. Пример: L: readln(a); Writeln(a); If a mod 2 = 0 then goto L; Программа будет просить задать число и выводить его на экран. Это будет повторяться до тех пор, пока не будет введено нечётное число. Когда буде введено нечётное число программа продолжит выполняться дальше. Таким образом, метки можно использовать как цикл с условием.
Оператор присваивания Переменная := выражение; Оператор присваивания := присваивает значение выражения справа переменной слева. Примеры использования: Запись в Паскале:Чему будут равны переменные: a:=5;a=5 b:=7-3;b=4 c:=(a*2+b)/2;c=(5*2+4)/2 = 7 c:=a-c;c=5-7 = -2 c:=a-c;c=5-(-2) = 7
Оператор вывода Write(…); выводит указанную информацию на экран и оставляет курсор на той же строке Writeln(…); выводит указанную информацию на экран и переводит курсор на новую строку Примеры использования оператора вывода (переменные a, b, c соответственно равно 1, 2, 3) Запись в ПаскалеЧто будет на экране Write(a); 1 Write(a,b,c); 123 Write(Привет!); Привет! Write(a,,b,,c); Write(a=,a, b=,b, c=,c); a=1 b=2 c=3
Оператор ввода Read(…); считывает вводимые с клавиатуры значения переменных и оставляет курсор на этой же строке Readln(…); считывает вводимые с клавиатуры значения переменных и переносит курсор на следующую строку Пример использования: Read(a); пользователь увидит мигающий курсор, должен будет ввести значение переменной а и нажать ENTER. Read(a,b,c); пользователь увидит мигающий курсор, должен будет ввести подряд значения переменных а, b, c через пробелы и нажать ENTER. Либо пользователь может после ввода каждого из трёх чисел нажимать ENTER.
Условный оператор Полный условный оператор If then else ; Неполный условный оператор If then ; Составной оператор Составной оператор (операторные скобки) – нужен в тех случаях, когда в том месте, где допускается только один оператор, нужно использовать несколько операторов. begin оператор1; оператор2; … операторN; end
Пример использования условного оператора If a mod 2 = 0 then write(Число,a, чётное) else write(Число,a, нечётное); Будет выяснено чему равен остаток от деления числа a на 2. Если остаток будет нулевым, то выведется сообщение, что число а чётное. Если же остаток будет ненулевым то выведется сообщение, что число а нечётное.
Условия в Паскале Простые условия могут быть выражены равенством или неравенствами с использованием знаков: =,, =, (неравно). Примеры простых условий: x-y>=0 a*b-45*(c-d) 60) and (a*cb) not((a mod 2 = 0) or (u1
Цикл со счётчиком For := to do ; Пример: For n:=1 to 10 do writeln(n); Выведет столбик с числами от 1 до 10 по возрастанию. For := downto do ; Пример: For n:=10 downto 1 do writeln(n); Выведет столбик с числами от 10 до 1 по убыванию.
Цикл с предусловием While do ; Пример: While a>0 do a:=a-1; Цикл будет вычитать из а единицы до тех пор, пока а будет оставаться больше нуля. Как только а станет равно нулю или меньше нуля, цикл закончится.
Цикл с постусловием repeat until ; Пример: Repeat a:=a-1 until a
Массивы Массив задаёт ряд однотипных переменных и позволяет обращаться к ним, используя их порядковые номера. Описание массива: Var : array [.. ] of ;
Пример: Var a: array [1..10] of integer; Описан массив a из 10 элементов, где элементы - целые числа. Чтобы обратиться к элементу массива надо указать имя массива и индекс элемента в квадратных скобках. Например, зададим элементы массива а как числа от 10 до 1 по убыванию: a[1]:=10; a[2]:=9; a[3]:=8; a[4]:=7; a[5]:=6; a[6]:=5; a[7]:=4; a[8]:=3; a[9]:=2; a[1]:=5;
Задание массива с помощью цикла Если элементы массива легко описать каким- то правилом (функцией), то массив удобно задать с помощью цикла со счётчиком. Примеры: Например, зададим элементы массива а как чётные числа (2, 4, 6, 8 и т.д. до 20): For i:=1 to 10 do a[i]:=i*2; Зададим элементы массива с предыдущего слайда (числа от 10 до 1): For i:=1 to 10 do a[i]:=11-i;