Алгоритмы и исполнители. Язык программирования Паскаль. Алгоритмы и исполнители1. Алгоритмы и исполнители Определение
Скачать 404.68 Kb.
|
Алгоритмы и исполнителиОпределениеАлгоритм – это последовательность понятных предписаний исполните-лю, приводящая к решению задачи.Примеры алгоритмов: Рецепт, инструкция, технологическая карта, руководство пользователю, программа развития…, программа курса информатики, и т.д. Свойства алгоритма
ИсполнительИсполнитель алгоритма – это устройство, приспособление, робот, организация, человек и т.п., способное выполнять определенные действия.Формальный исполнитель – исполнитель, не выходящий за пределы предписаний алгоритма.Этапы решения задач на компьютере
ПримерТело брошено вертикально вверх с начальной скоростью с некоторой высоты.Определить его местонахождение и скорость в заданный момент времени.I этап Постановка задачиДано: V0 –начальная скоростьH0 –начальная высотаg – ускорение свободного падения (g=9,81 м/с2)t – времяНадо: V – скорость в данный момент времениH – высоту в данный момент времени
II этап Создание математической моделиИз курса физики известно, что описанное выше движение является равноускоренным. При заданных начальной скорости (V0), начальной высоте (H0) и ускорении свободного падения (g) зависимость скорости (V) и высоты (H) от времени (t) можно описать следующими мате-матическими формулами:V= V0- g* t, H= H0+ V* t -III этап Создание алгоритма решения и способа записи (блок-схема)начало Ввод данных V0, H0, t V= V0- g* t Y= H0+ V* t - Вывод V и H конец IV этап Написание программы
Языки программирования и их классификацияПрограмма (program, routine) – упорядоченная последовательность команд (операторов, инструкций) компьютера для решения задачи.Язык программирования – формализованный язык для описания алгоритма решения задачи на компьютере.Языки программированияЯзыки низкого уровняACCEMBLERЯзыки высокого уровня Узкопрофессиональные FORTRAN, COBOL Процедурные FORTRAN, COBOL, ALGOL, BASIC, PASCAL, C Универсальные ALGOL, BASIC, PASCAL, C, PROLOG, DELPHI Объектно-ориентированные PROLOG, DELPHI, VISUAL BASIC, - компилятор - интерпретатор Разновидности транслятора – компилятор и интерпретатор.Язык программирования ПаскальАлфавит языка Pascal
Синтаксис языка PascalСлужебное слово – набор латинских букв, имеющий единственный смысл и единственную форму написания. (например: PROGRAM, BEGIN, VAR, …). Используется для написания операторов.Идентификатор – набор латинских букв, цифр, символов, начинающийся с буквы и, не включающий в себя служебное слово. (например: Max_elem, k1[1], …). Используется для обозначения величин, меток.Структура программы: Program pr_1; Begin End. Раздел описаний Тело программы Структура программы:Program pr_1;{заголовок программы}Uses Crt; {модуль подключения очистки экрана}Var V0, H0, t, g, V, H: real; {раздел описания переменных}Begin {начало программы}Clrscr; {очистка экрана}Write(‘введите начальные скорость,высоту и время’);Readln (V0, H0, t);g:=9.81;V:= V0- g* t;H:= H0+ V* t - g*sqr(t)/2;Writeln(‘скорость=’,V);Writeln(‘высота=’,H);Readln; {задержка}End. {конец программы}Тело программы Правила записи выраженийВыражения записываются в одну строку, без надстрочных и подстрочных записей.= 1/x = SQR(a) = a1 = SQRT(x) Операторы языка PascalПростые (линейные) Составные (с условием) Операторы: присваивания, ввода, вывода, графики Развилка Цикл Операторы: ветвления, выбора, условного перехода (обхода) Операторы: цикла с предусловием, цикла с постусловием, цикла с параметром Система типов языка Паскаль. Скалярные типы Паскаль имеет развитую и изощренную систему типов. На основе небольшого числа стандартных типов программист может конструировать данные произвольной структуры и сложности, адекватно отражающие информационную природу задачи. Все имеющиеся в Паскале типы принято делить на группы. Типы, принадлежащие одной группе, имеют определенное сходство. Выделяют простые, составные, ссылочные и процедурные типы, которые в свою очередь еще подразделяются: Классификация типов1. Простые типы:скалярные:
перечислимые;ограниченные;2. Составные типы:регулярные (массивы);комбинированные (записи);файловые;множественные;строковые;объекты;Составные типы по определенным правилам строятся из простых.Ссылочные типы образуются из любых других типов. Составные и ссылочные типы можно считать некоторыми правилами для построения более сложных типов из простых.Первичными в иерархии типов являются скалярные типы, представляющие традиционные в языках программирования множества значений (целые, вещественные, символьные, булевские) и их модификации, учитывающие архитектурные особенности аппаратуры.
Операторы языка PascalПростые (линейные) Составные (с условием) Операторы: присваивания, ввода, вывода, графики Развилка Цикл Операторы: ветвления, выбора, условного перехода (обхода) Операторы: цикла с предусловием, цикла с постусловием, цикла с параметром Оператор присваивания<переменная>:=<переменная>|<константа>|<выражение>Например:a:=b; {переменной a присвоить значение переменной b}A:=15;B:=‘Информатика’;C:=true;D:=a+12;Оператор выводаWRITE;WRITELN;Например:WRITE (a,b);WRITELN(a);WRITELN(‘Информатика’);WRITELN(‘a=‘, a);Оператор вводаREAD;READLN;Например:READ (a,b);READLN(a);Рекомендуется оператор ввода использовать в сочетании с оператором выводаWRITE(‘Введите Ваше имя’);READLN(NAME);Операторы языка PascalПростые (линейные) Составные (с условием) Операторы: присваивания, ввода, вывода, графики Развилка Цикл Операторы: ветвления, выбора, условного перехода (обхода) Операторы: цикла с предусловием, цикла с постусловием, цикла с параметром Оператор ветвления IF <условие> THEN <группа операторов 1> ELSE <группа операторов 2>; Если условие выполняется товыполняется группа операторов 1 иначе выполняется группа операторов 2 Пример: Program pr_2; {заголовок программы} Uses Crt; {модуль подключения очистки экрана} Var t: real; {раздел описания переменных} Begin {начало программы} Clrscr; {очистка экрана} Write(‘введите температуру воздуха’); {комментарий ввода} Readln (t); {вводится значение температуры} If t<=15 Then Writeln(‘сегодня холодно’) Else Writeln(‘сегодня тепло’); End. {конец программы} <условие> <Группа1> <Группа2> Блок-схема Полная форма да нет IF <условие> THEN <группа операторов 1> ELSE <группа операторов 2>; <условие> <Группа1> Блок-схема Сокращённая форма да нет IF <условие> THEN <группа операторов 1>; УсловиеПростое Составное A=B X>1 (x>1) and (x<5) (x<1) or (x>5) Операторы цикла 1. Оператор цикла с параметром FOR P:=Pнач. TO Pкон. DO <тело цикла>; Где P - параметр цикла (изменяемая переменная), Pнач - начальное значение параметра цикла, Pкон - конечное значение параметра цикла. Тело цикла – группа операторов, выполнение которых необходимо выполнить до достижения Ркон . ДЛЯ P от Pнач. ДO Pкон. ВЫПОЛНИТЬ <тело цикла>; Операторы цикла 1. Если Pнач больше чем Pкон FOR P:=Pнач. DOWNTO Pкон. DO <тело цикла>; При этом шаг изменения -1 P, Pнач , Pкон Тело цикла Блок-схема оператора цикла с параметром Пример 1: вывести на экран 2005 раз фразу «С Новым Годом!» Program pr_3; {заголовок программы} Uses Crt; {модуль подключения очистки экрана} Var n : integer; {переменная которая изменяется от 1 до 2005} Begin {начало программы} Clrscr; {очистка экрана} For n:=1 To 2005 Do Writeln(‘С Новым Годом!’); End. {конец программы} Пример 2: Вычислить сумму натуральных чисел от 1 до 50. Определим переменные: i – переменная, являющаяся счетчиком (номером) очередного натурального числа, S – сумма, которая вычисляется по закону РЕКУРСИИ. (S:=S+ очередное слагаемое). Program pr_4; Uses Crt; Var i, S : integer; Begin Clrscr; S:=0; For i:=1 To 50 Do S:=S+i; Writeln(‘Сумма 50 натуральных чисел равна’,S); End. Пример 3: Вычислить 5! (произведение первых 5 натуральных чисел). Пример 4: Вычислить значение выражения: Операторы цикла 2. Оператор цикла с предусловием WHILE <условие> DO <тело цикла>; Тело цикла – группа операторов, выполнение которых необходимо выполнить пока выполняется условие . ПОКА условие выполняется ВЫПОЛНИТЬ <тело цикла>; условие Тело цикла Блок-схема оператора цикла с предусловием Пример 1: вывести на экран 2005 раз фразу «С Новым Годом!» Program pr_3_1; Uses Crt; Var n : integer; Begin Clrscr; n:=1; While n<=2005 Do Begin Writeln(‘С Новым Годом!’); n:=n+1; End; End. да нет Операторы цикла 3. Оператор цикла с постусловием REPEAT <тело цикла> UNTIL <условие> Тело цикла – группа операторов, выполнение которых необходимо выполнить пока не выполнится условие. ПОВТОРИТЬ <тело цикла> ДО выполнения условия условие Тело цикла Блок-схема оператора цикла с постусловием Пример 1: вывести на экран 2005 раз фразу «С Новым Годом!» Program pr_3_2; Uses Crt; Var n : integer; Begin Clrscr; n:=1; Repeat Writeln(‘С Новым Годом!’); n:=n+1; Until n>2005 ; End. да нет Пример 2: Вычислить сумму натуральных чисел от 1 до 50. Определим переменные: i – переменная, являющаяся счетчиком (номером) очередного натурального числа, Summ – сумма, которая вычисляется по закону РЕКУРСИИ. (Summ:=Summ+ очередное слагаемое). Program pr_4_1; Var i, Summ : integer; Begin Summ:=0; i:=1; While i<=50 Do {начало цикла} Begin Summ:=Summ+i; i:=i+1; End; {конец цикла} Writeln(‘Сумма 50 натуральных чисел равна’,Summ); End. Program pr_4_2; Var i, Summ : integer; Begin Summ:=0; i:=1; Repeat {начало цикла} Summ:=Summ+i; i:=i+1; Until i>50; {конец цикла} Writeln(‘Сумма 50 натуральных чисел равна’,Summ); End. МассивПонятие массиваПонятие массиваМассив представляет собой набор однотипных данных, имеющих общее для всех своих элементов (членов) имя.Тип «массив» относится к группе структурных (составных) типов.Элементы массива пронумерованы, и обратиться к каждому из них можно, указав один или несколько индексов. Если речь идет о хранении в массиве таблицы значений, его элементы нумеруются двумя индексами.Характеристики массива:
Примеры массивов
Примеры массивов
Описание массиваМассив описывается в разделе var с использованием конструкции:array [n..m] of type; где вместо type должен быть указан общий для всех элементов тип.Пример описания массива varmouths : array [1..12] of byte;В данном случае резервируется память под 12 байтов, являющихся элементами массива mouths. В квадратных скобках указывается диапазон допустимых значений индекса (номера), в нашем примере это 1 .. 12 – упорядоченный набор из двенадцати натуральных чисел 1, 2, 3, … 12.Ссылка на 4-ый элемент массива имеет вид: mouths[4]Одномерные массивыНапишем программу, которая объявляет целочисленный массив, состоящий из 5 элементов, вводит с клавиатуры значение каждого элемента, выводит значения всех элементов на экран, вычисляет и выводит на экран сумму всех элементов.program massiv; uses crt; var a:array [1..5] of integer; i,k,s:integer; begin clrscr; for i:=1 to 5 do begin write(‘Введите ',i,'-й член массива '); readln (a[i]); end; writeln; s:=0; for i:=1 to 5 do begin writeln('a[',i,']= ',a[i]); s:=s+a[i]; end; writeln; writeln (‘Сумма всех членов массива = ',s); readln; end. Объявляется массив из 5 элементов-целых чисел Вводится с клавиатуры значение каждого из 5-ти элеменов Выводится на экран каждый элемент и суммируется
Нахождения наименьшего элемента массива
Упорядочивание элементов массива по возрастанию медодом нахождения наименьшего элемента Графические возможности
Возможности модуля GraphABC – анимация без мерцанияuses GraphABC;var i: integer;beginLockDrawing;for i:=1 to 500 dobeginClearWindow;SetBrushColor(clGreen);Ellipse(i,100,i+100,200);Redraw;end;end.Модуль GraphABCМодуль GraphABC содержит константы, типы, процедуры и функции для рисования в графическом окне. Они подразделяются на следующие группы:Графические примитивыДействия с цветомДействия с точками и прямоугольникамиДействия с перомДействия с кистьюДействия со шрифтомГрафические примитивыSetPixel(x,y,color: integer); Закрашивает один пиксел с координатами (x,y) цветом color.MoveTo(x,y: integer);Передвигает невидимое перо к точке с координатами (x,y); эта функция работает в паре с функцией LineTo(x,y).LineTo(x,y: integer);Рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y).Графические примитивыLine(x1,y1,x2,y2: integer);Рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).Circle(x,y,r: integer);Рисует окружность с центром в точке (x,y) и радиусом r.Ellipse(x1,y1,x2,y2: integer);Рисует эллипс, заданный своим описанным прямоугольником с координатами противоположных вершин (x1,y1) и (x2,y2).x1,y1 x2,y2 x,y r x1,y1 x2,y2 Графические примитивыRectangle(x1,y1,x2,y2: integer);Рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).RoundRect(x1,y1,x2,y2,w,h: integer);Рисует прямоугольник со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев.x1,y1 x2,y2 x1,y1 x2,y2 Графические примитивыArc(x,y,r,a1,a2: integer); Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки). Pie(x,y,r,a1,a2: integer); Рисует сектор окружности, ограниченный дугой (параметры процедуры имеют тот же смысл, что и в процедуре Arc). Chord(x,y,r,a1,a2: integer); Рисует фигуру, ограниченную дугой окружности и отрезком, соединяющим ее концы (параметры процедуры имеют тот же смысл, что и в процедуре Arc). x,y r a1 a2 x,y r a1 a2 x,y r a1 a2 Стандартные цвета задаются символическими константами:clBlack – черный clPurple – фиолетовый clWhite – белый clMaroon – темно-красный clRed – красный clNavy – темно-синий clGreen – зеленый clBrown – коричневый clBlue – синий clSkyBlue – голубой clYellow – желтый clCream – кремовый clAqua – бирюзовый clOlive – оливковый clFuchsia – сиреневый clTeal – сине-зеленый clGray – темно-серый clLime – ярко-зеленый clMoneyGreen – цвет зеленых денег clLtGray – светло-серый clDkGray – темно-серый clMedGray – серый clSilver – серебряный Действия с перомSetPenColor(color: integer); Устанавливает цвет пера, задаваемый параметром color. SetPenWidth(w: integer); Устанавливает ширину пера, равную w пикселам. SetPenStyle(ps: integer); Устанавливает стиль пера, задаваемый параметром ps. Стили пера задаются следующими именованными константами: psSolid psClear psDash psDot psDashDot psDashDotDot Действия с кистьюSetBrushColor(color: integer); Устанавливает цвет кисти, задаваемый параметром color. SetBrushStyle(bs: integer); Устанавливает стиль кисти, задаваемый параметром bs. bsSolid bsCross bsClear bsDiagCross bsHorizontal bsBDiagonal bsVertical bsFDiagonal Вставка текстаTextOut(x,y: integer; s: string);Выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s).Например:TextOut(100,200,’Текст’);Действия со шрифтомSetFontColor(color: integer); Устанавливает цвет шрифта. SetFontSize(sz: integer); Устанавливает размер шрифта в пунктах. SetFontName(name: string); Устанавливает наименование шрифта. SetFontStyle(fs: integer); Устанавливает стиль шрифта. fsNormal – обычный; fsBold – жирный; fsItalic – наклонный; fsBoldItalic – жирный наклонный; fsUnderline – подчеркнутый; fsBoldUnderline – жирный подчеркнутый; fsItalicUnderline – наклонный подчеркнутый; fsBoldItalicUnderline – жирный наклонный подчеркнутый. Стили шрифта задаются следующими именованными константами: Модуль ABCObjects – основные классы
|