Файл: Алгоритмы и исполнители Определение.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.01.2024

Просмотров: 94

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Алгоритмы и исполнители

Определение

Алгоритм – это последовательность понятных предписаний исполните-лю, приводящая к решению задачи.

Свойства алгоритма

Исполнитель

Исполнитель алгоритма – это устройство, приспособление, робот, организация, человек и т.п., способное выполнять определенные действия.

Формальный исполнитель – исполнитель, не выходящий за пределы предписаний алгоритма.

Этапы решения задач на компьютере

Пример

Тело брошено вертикально вверх с начальной скоростью с некоторой высоты.

Определить его местонахождение и скорость в заданный момент времени.

I этап Постановка задачи

Дано: V0 –начальная скорость

H0 –начальная высота

g – ускорение свободного падения (g=9,81 м/с2)

t – время

Надо: V – скорость в данный момент времени

H – высоту в данный момент времени

II этап Создание математической модели

V= V0- g* t, H= H0+ V* t -

III этап Создание алгоритма решения и способа записи (блок-схема)

IV этап Написание программы

Языки программирования и их классификация

Программа (program, routine) – упорядоченная последовательность команд (операторов, инструкций) компьютера для решения задачи.

Язык программирования – формализованный язык для описания алгоритма решения задачи на компьютере.

Языки программирования

Языки низкого уровня

ACCEMBLER

Разновидности транслятора – компилятор и интерпретатор.

Язык программирования Паскаль

Алфавит языка Pascal

Синтаксис языка Pascal

Служебное слово – набор латинских букв, имеющий единственный смысл и единственную форму написания. (например: PROGRAM, BEGIN, VAR, …). Используется для написания операторов.

Идентификатор – набор латинских букв, цифр, символов, начинающийся с буквы и, не включающий в себя служебное слово. (например: Max_elem, k1[1], …). Используется для обозначения величин, меток.

Структура программы:

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. {конец программы}

Правила записи выражений

Выражения записываются в одну строку, без надстрочных и подстрочных записей.

Операторы языка Pascal

Классификация типов

1. Простые типы:

скалярные:

Составные типы по определенным правилам строятся из простых.

Ссылочные типы образуются из любых других типов. Составные и ссылочные типы можно считать некоторыми правилами для построения более сложных типов из простых.

Операторы языка 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

Условие

Массив

Понятие массива

Понятие массива

Массив представляет собой набор однотипных данных, имеющих общее для всех своих элементов (членов) имя.

Тип «массив» относится к группе структурных (составных) типов.

Элементы массива пронумерованы, и обратиться к каждому из них можно, указав один или несколько индексов. Если речь идет о хранении в массиве таблицы значений, его элементы нумеруются двумя индексами.

Характеристики массива:

Примеры массивов

Примеры массивов

Описание массива

Массив описывается в разделе var с использованием конструкции:

array [n..m] of type; где вместо type должен быть указан общий для всех элементов тип.

Пример описания массива var

mouths : array [1..12] of byte;

Ссылка на 4-ый элемент массива имеет вид: mouths[4]

Одномерные массивы

Графические возможности

Возможности модуля GraphABC – анимация без мерцания

uses GraphABC;

var i: integer;

begin

LockDrawing;

for i:=1 to 500 do

begin

ClearWindow;

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).

Графические примитивы

Rectangle(x1,y1,x2,y2: integer);

Рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).

RoundRect(x1,y1,x2,y2,w,h: integer);

Рисует прямоугольник со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев.

Графические примитивы

Стандартные цвета задаются символическими константами:

Действия с пером

Действия с кистью

Вставка текста

TextOut(x,y: integer; s: string);

Выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s).

Например:

TextOut(100,200,’Текст’);

Действия со шрифтом

Модуль ABCObjects – основные классы



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.

Массив

Понятие массива

Понятие массива

Массив представляет собой набор однотипных данных, имеющих общее для всех своих элементов (членов) имя.

Тип «массив» относится к группе структурных (составных) типов.

Элементы массива пронумерованы, и обратиться к каждому из них можно, указав один или несколько индексов. Если речь идет о хранении в массиве таблицы значений, его элементы нумеруются двумя индексами.


Характеристики массива:

    • Тип – общий тип элементов массива;
    • Размерность (ранг) – количество индексов массива
    • Диапазон – количество допустимых значений каждого индекса;
    • Форма – совокупность размерности и диапазонов.

Примеры массивов

  • Числовые последовательности: a1, a2, a3, … , an 3, 7, 11, 15 – арифмет.прогрессия
  • Список учащихся класса
    • Алексеев
    • Бутов
    • Васильев

Примеры массивов

  • Табличные данные

1

2

3

1

10

20

30

2

20

40

60

3

30

60

90

Описание массива

Массив описывается в разделе var с использованием конструкции:

array [n..m] of type; где вместо type должен быть указан общий для всех элементов тип.

Пример описания массива var

mouths : 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-ти элеменов

Выводится на экран каждый элемент и суммируется

program Min_element;

uses crt;

var c:array [1..10] of integer;

i,n,min:integer;

begin

clrscr;

randomize;

a:=100;

b:=300;

for i:=1 to 10 do

begin

c[i]:=(b-a)*random+a;

Writeln('c[',i,']=',c[i]:5);

end;

min:=c[1];

n:=1;

for i:=1 to 10 do

if min>c[i] then

begin

min:=c[i];

n:=i;

end;

writeln(‘Минимальный элемент ’,min:5,’ его номер ’,n:5);

readln;

end.

Задаются значения a и b, границы интервала случайных чисел

Вычисляются и выводятся случайные числа

Пусть минимальным будет ПЕРВЫЙ с номером ОДИН

Если минимальный элемент > очередного, то меняем его и его номер

Выводим значение минимального элемента и его номер


Нахождения наименьшего элемента массива

program sortirovka;

uses crt;

const n=10;

var

h:array[1..n] of integer;

c,min, n_min,s,k,i,j:integer;

sr:real;

begin

clrscr;

for i:=1 to n do h[i]:=random(10000);

writeln ‘(Исходный случайный массив');

for i:=1 to n do writeln ('h[',i,']=',h[i]);

for i:=1 to n do

begin

min:=h[i]; n_min:=i;

for j:=i to n do if min>h[j] then begin min:=h[j]; n_min:=j; end;

c:=h[i];h[i]:=h[n_min];h[n_min]:=c;

end;

writeln (‘Упорядоченный массив');

for i:=1 to n do writeln ('h[',i,']=',h[i]);

end.

Задается случайный массив в диапазоне чисел до 1000

Выводится исходный случайный массив

Задается первоначальное зн-е min –го эл-та подмассива

Нахождение min –го эл-та подмассива

Рокировка

Выводится упорядоченный случайный массив

Упорядочивание элементов массива по возрастанию медодом нахождения наименьшего элемента

Графические возможности

  • Модуль CRT – текстово-графические возможности. Расширен по сравнению с модулем CRT Turbo Pascal.
  • Модуль GraphABC – основной модуль работы с графикой. Классы не используются.
  • Модуль ABCObjects – векторная графика. Иерархия графических классов с возможностью масштабирования, клонирования, группировки, наложения объектов. Обучение объектно-ориентированному программированию на ранних этапах. Использование объектов для конструирования в достаточно сложных проектах.
  • Модуль Sprites – спрайты, создание интерактивных “живых” приложений: игры, обучающие программы.

Возможности модуля GraphABC – анимация без мерцания

uses GraphABC;

var i: integer;

begin

LockDrawing;

for i:=1 to 500 do

begin

ClearWindow;

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 – основные классы

  • RectangleABC
  • SquareABC
  • TextABC
  • EllipseABC
  • CircleABC
  • RegularPolygonABC
  • StarABC
  • PictureABC
  • ChessBoardABC
  • ChessFigureABC
  • ContainerABC