Главная страница

Алгоритмы и исполнители. Язык программирования Паскаль. Алгоритмы и исполнители1. Алгоритмы и исполнители Определение


Скачать 404.68 Kb.
НазваниеАлгоритмы и исполнители Определение
АнкорАлгоритмы и исполнители. Язык программирования Паскаль
Дата19.04.2023
Размер404.68 Kb.
Формат файлаpptx
Имя файлаАлгоритмы и исполнители1.pptx
ТипИнструкция
#1074716

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

Определение

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


Примеры алгоритмов:

Рецепт, инструкция, технологическая карта, руководство пользователю, программа развития…, программа курса информатики, и т.д.

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

  • Понятность
  • Точность
  • Дискретность(последовательность)
  • Массовость (универсальность)
  • Результативность (конечность)

Исполнитель

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

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

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

  • Постановка задачи
  • Создание математической (информационной) модели задачи
  • Создание алгоритма решения и способа записи
    • Словесная форма записи (произвольная)
    • Графическая (блок-схема)
  • Перевод алгоритма на язык ЭВМ (составление программы)
  • Отладка и контрольный запуск программы
  • Анализ полученных результатов
  • Отладка программы и корректировка (возврат к пп. 1-5)
  • Запуск программы и ввод исходных данных конкретной задачи

Пример

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

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

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 этап Написание программы


Basic

Pascal

CLS

INPUT”введите начальные скорость, высоту и время”; V0, H0,t

g=9.81

V= V0- g* t

H= H0+ V* t - g*t^2/2

PRINT”скорость=”;V

PRINT”высота=”;H

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.

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

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

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

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

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

ACCEMBLER


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

Узкопрофессиональные

FORTRAN, COBOL

Процедурные

FORTRAN, COBOL, ALGOL, BASIC, PASCAL, C

Универсальные

ALGOL, BASIC, PASCAL, C, PROLOG, DELPHI

Объектно-ориентированные PROLOG, DELPHI, VISUAL BASIC,

- компилятор

- интерпретатор

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

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

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

  • 26 букв латинского алфавита
  • 10 арабских цифр
  • 4 знака арифметических операций: +; -; *; /
  • 6 знаков отношений: =; >; <; <>;>=; <=
  • Специальные символы и знаки: ;; :; ‘; (; ); {; }; #; &; _ и т.д.
  • 33 буквы русского алфавита.

Синтаксис языка 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. Составные типы:

    регулярные (массивы);

    комбинированные (записи);

    файловые;

    множественные;

    строковые;

    объекты;

  • Ссылочные типы;
  • Процедурные типы.

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

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

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

Название

Идентификатор

Множество допустимых значений

Размер памяти

Целые типы

Короткий целый

Shortint

-128...127

1 байт

Байтовый

Byte

0…255

1 байт

Слово

Word

0…65 535

2 байта

Целый

Integer

-32 768…32 767

2 байта

Длинный целый

Longint

-2147483648 ..2147483647

4 байта

Вещественные типы

Вещественный

Real

-1,7*1038.. -2,9*1 039, 2,9*1039.. 1,7*1038

6 байт

С одинарной точностью

Single

-3,4*1038.. -1,5*1045, 1,5*1045..3,4*1038

4 байт

С двойной точностью

Double

-1,7*10308*..-5,0*10-324.. 5,0*10-324.. 1,7*10308

8 байт

С повышенной точностью

Extended

-1,1*104932..-1,9*104951, 1,9*104951.. 1,1*104932

10 байт

Сложный

Comp

-263+1…263-1

8 байт

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

Массив

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

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

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

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

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

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

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

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

  • Числовые последовательности: 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


написать администратору сайта