Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

Введение

Почему именна эта тема основных структурных алгоритмов это связано с тем, что любой начинающий или самоучка программист имеет вопросы о том, что это алгоритмы, как построить их, как использовать их, кто их создал. Конечно, сейчас несколько опытных програмистый сказали бы, что алгоритм-это вещь информатики и математики и прогресса науки, это именно так, но теперь некоторый программистый тожа сказали бы, что алгоритм будут мало полезны в работе максиму где они точно будут нужны, так это в разработке и в работе больших it кампаний где это требуется.
Да и, возможно, при быстром росте технологии, даже при минимуме знаний, алгоритмов такие знаний будут требоватся чаще, чем любой язык программирования.


Цель этой курсовой работы изучить основные структуры алгоритмов и применить их с помощью языка Паскаля и провести сравнение базовых структур алгоритмов.




2



1. Основная концепция алгоритмов

Слово "алгоритм" происходит от algorithmi-латинского написания имени аль-Хорезми, под которым в Средневековой Европе знали величайшего математика Хорезма (города в современном Узбекистане) Мухаммеда бин Муса, жившего в 783-850 годах, в своей книге «индийский счет» он сформулировал правила написания натуральных чисел с помощью арабских цифр и правил действия над ними в колонке. Позже алгоритмом стали называть точное предписание, определяющее последовательность действий, обеспечивающее получение желаемого результата из исходных данных. Алгоритм может быть разработан для выполнения человеком или автоматическим устройством. Создание алгоритма, даже самого простого, - это творческий процесс. Он доступен исключительно живым существам, и долгое время считалось, что только человеку. Другое дело реализация уже существующего алгоритма. Он может быть доверен субъекту или объекту, который не обязан вникать в суть дела, но, возможно, не способен его понять. Такой субъект или объект обычно называют формальным толкователем. Примером формального переводчика является стиральная машина, которая скрупулезно выполняет предписанные ей действия, даже если вы забыли положить в нее порошок. Человек может выступать и в качестве формального переводчика, но в первую очередь формальными переводчиками являются различные автоматические устройства, в том числе и компьютер. Каждый алгоритм создается на основе вполне конкретного исполнителя. Действия, которые может выполнять исполнитель, называются его разрешенными действиями. Набор разрешенных действий формирует систему команд исполнителя. Алгоритм должен содержать только действия, разрешенные для исполнителя.


3



1.2 Алгоритм и его свойства

Алгоритм-четкое описание последовательности действий, которые необходимо выполнить для получения результата. Термин "алгоритм" происходит от Латинской формы имени среднеазиатского математика Аль-Хорезми – Algorithmi. Алгоритм является одним из основных понятий информатики и математики. Основные свойства алгоритмов включают:

1) Усмотрение – разрыв, разделение) - алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (шагов);

2) Определенность - каждое правило алгоритма должно быть четким, однозначным и не оставлять места произволу. Благодаря этому свойству выполнение алгоритма является механическим и не требует каких-либо дополнительных указаний или информации о проблеме, которую необходимо решить.

3) Производительность (конечность) - алгоритм должен привести к решению задачи для конечного числа шагов.

4) Масса - алгоритм решения задач разрабатывается в общей форме, то есть он должен быть применим к классу задач, отличающихся только исходными данными. В этом случае исходные данные могут быть выбраны в домене, называемом доменом приложения алгоритма.

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

4

Выражение «свойства алгоритма " само по себе не совсем правильно. Свойства имеют объективно существующие реальности. Можно говорить, например, о свойствах вещества. Алгоритм-это искусственная конструкция, которую мы строим для достижения определенных целей. Чтобы алгоритм выполнял свое предназначение, он должен быть построен по определенным правилам. Поэтому нужно говорить не о свойствах алгоритма, а о правилах построения алгоритма, или требованиях, предъявляемых к алгоритму.

Первое правило заключается в том, что при построении алгоритма в первую очередь необходимо определить множество объектов, с которыми будет работать алгоритм. Формализованное (закодированное) представление этих объектов называется данными. Алгоритм начинает работать над набором данных, называемым входом, и в результате его работы создает данные, называемые выходом. Таким образом, алгоритм преобразует вход в выход. Это правило позволяет сразу отделить алгоритмы от "методов"и " методов". Пока у нас нет формализованного ввода, мы не можем построить алгоритм.

Второе правило заключается в том, что алгоритм требует памяти для работы. Память содержит входные данные, с которыми начинает работать алгоритм, промежуточные данные и выходные данные, которые являются результатом работы алгоритма. Память дискретна, то есть состоит из отдельных клеток. Именованное расположение памяти - это имя переменной. В теории алгоритмов размер памяти не ограничен, то есть мы можем предоставить алгоритму любой объем памяти, необходимый для работы.

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

Третье правило-скрытность. Алгоритм строится из отдельных шагов (действий, операций, команд). Много шагов, из которых составлен алгоритм, конечно.
5


Четвертое правило-детерминизм. После каждого шага необходимо указать следующий шаг или дать команду на остановку.

Пятое правило-конвергенция (эффективность). Алгоритм должен завершаться после конечного числа шагов. В этом случае необходимо указать, что следует считать результатом работы алгоритма.

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



6



1.3 Методы изображения алгоритмов

Словесное описание алгоритма

Этот метод был гораздо менее распространен из-за его многословия и отсутствия видимости.

Рассмотрим пример алгоритма, чтобы найти максимум из двух значений:

Мы определяем форматы переменных Х, У, М, где Х и у значения для сравнения, М является переменной для хранения максимального значения;

получаем два значения чисел х и у Для сравнения; сравниваем х и у.

если Х меньше у, это означает большее число у. поместите значение у в переменную М.

Если Х не меньше (больше) у, это означает, что число х больше. Поместите значение x в переменную M.

Вербальный метод не получил широкого распространения по следующим причинам:

такие описания не являются строго формализованными

страдать от многословия записей

толкование некоторых предписаний неоднозначно.



7

Блок-схема алгоритма

А этот метод оказался очень удобным способом воображения алгоритмов и получил широкое распространение в научной и образовательной литературе.

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

Графическое изображение алгоритма широко используется перед программированием задачи из-за его видимости, так как зрительное восприятие обычно облегчает процесс написания программы, ее корректировку на случай возможных ошибок, понимание процесса обработки информации.


Можно даже встретить это утверждение внешне алгоритм представляет собой схему-набор прямоугольников и других символов, внутри которых записано то, что вычисляется, что вводится в машину и что выдается для печати и других средств отображения информации. "Здесь форма представления алгоритма смешивается с самим алгоритмом.

Принцип "нисходящего" программирования требует, чтобы блок-схема была поэтапно расширена и каждый блок был» подписан " перед элементарными операциями. Но такой подход может быть реализован при решении простых задач. Когда вы решите серьезную проблему, блок-схема «растянется» до такой степени, что ее невозможно будет охватить одним взглядом.

Блок-схемы алгоритмов полезны для объяснения того, как работает уже готовый алгоритм, в то время как блоки действительно являются блоками алгоритмов, работа которых не требует объяснений. Блок-схема алгоритма должна использоваться для упрощения образа алгоритма, а не для его усложнения.

основные соглашения, используемые при графическом написании алгоритма.(рис.1)
8



рис 1


9








Псевдокод

Псевдокод - это система обозначений и правил, предназначенная для равномерной регистрации алгоритмов. Он занимает промежуточное место между естественным и формальным языками.

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


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

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

10




Программное представление алгоритма

При написании алгоритма в вербальной форме, в виде блок-схемы или на псевдокоде допускается определенный произвол при представлении команд. Однако такая запись настолько точна, что позволяет человеку понять суть дела и выполнить алгоритм.

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

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


11



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

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

Исполнитель — это некоторый объект (человек, животное, техническое устройство), способный выполнять определённый набор команд.

Круг решаемых задач. Каждый исполнитель создаётся для решения некоторого круга задач — построения цепочек символов, выполнения вычислений, построения рисунков на плоскости и т. д.

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

Система команд исполнителя. Различают команды-приказы и команды-запросы. Предписание исполнителю о выполнении отдельного законченного действия отдаётся командой-приказом. Команды-запросы позволяют узнать текущие характеристики среды исполнителя. Совокупность всех команд, которые могут быть выполнены некоторым исполнителем, образует систему команд данного исполнителя (СКИ). Алгоритм составляется с учётом возможностей конкретного исполнителя, иначе говоря, в системе команд исполнителя, который будет его выполнять.

12


Режимы работы исполнителя. Для большинства исполнителей предусмотрены режимы непосредственного (ручного) управления и программного управления. В первом случае исполнитель ожидает команд от человека и каждую поступившую команду немедленно выполняет. Во втором случае исполнителю сначала задаётся полная последовательность команд (программа), а затем он выполняет все эти команды в автоматическом режиме. Ряд исполнителей работает только в одном из названных режимов. Рассмотрим примеры исполнителей.

Пример 1.
Исполнитель Черепаха перемещается на экране компьютера, оставляя след в виде линии. Система команд Черепахи состоит из следующих команд:

Вперёд n (где n — целое число) — вызывает передвижение Черепахи на n шагов в направлении движения — в том направлении, куда развёрнуты её голова и корпус;

Направо m (где m — целое число) — вызывает изменение направления движения Черепахи на m градусов по часовой стрелке

Запись Повтори k [<Команда1> <Команда2> … <Командаn>] означает, что последовательность команд в скобках повторится k раз.



Пример 2.
Система команд исполнителя Вычислитель состоит из двух команд, которым присвоены номера:

1 — вычти 1
2 — умножь на 3

Первая из них уменьшает число на 1, вторая увеличивает число в 3 раза. При записи алгоритмов для краткости указываются лишь номера команд. Например, алгоритм 21212 означает следующую последовательность команд:

13

умножь на 3
вычти 1
умножь на 3
вычти 1
умножь на 3
С помощью этого алгоритма число 1 будет преобразовано в 15: ((1 · 3 – 1) · 3 – 1) · 3 = 15.
 

14

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


В 1970 г. профессор Никлаус Вирт из Швейцарии обосновал и разработал язык высокого уровня – Паскаль. Этот язык отличается простотой и стройностью, качествами, которые обеспечивают Паскалю популярность уже на протяжении нескольких десятилетий.
Паскаль – это процедурный язык, имеющий блочную структуру. Набор операторов языка отражает принципы структурного программирования.
Паскаль-программа является текстовым файлом с собственным именем и с расширением pas.

Структура программы
В целом программа на языке Паскаль состоит из двух основных частей: описания всех данных, с которыми производятся действия и описания самих действий. Кроме этого, в самом начале программы может присутствовать ее название – заголовок. В самом конце программы ставиться точка «.».
Правила языка Паскаль предусматривают единую для всех программ форму основной структуры:

ЗАГОЛОВОК
program <Имя программы>;
Содержит служебное слово program;

РАЗДЕЛ ОПИСАНИЙ
Раздел внешних модулей, процедур и функций – Uses
Пример: uses Crt;

Раздел констант – const
Константа – переменная, которая не изменяется в процессе выполнения программы. Под константу не выделяется память. Тип константы определяется ее значением.
Пример: const
N=10;
p=0.14;

15


Раздел типов – type
В Паскале существуют стандартные типы, которые описывать не надо (они считаются уже описанными: integer, real, char, Boolean и т.д.)
В Паскале есть возможность создать свой новый тип данных.

Раздел переменных – var
Переменная – это величина способная изменяться в процессе выполнения программы. Под переменную выделяется память. Каждая переменная, до работы с ней должна быть описана, т.е. указан тип переменной.
Попытка в процессе выполнения программы присвоить переменной значение иного типа расценивается как ошибка в программе. Пример: var
I, j, r: integer;
X, h, sum: real;
D, f, r: string;

Раздел процедур и функций – procedure и function
Раздел процедур и функций не начинается каким-то специальным служебным словом – начало данного раздела легко определяется по служебным словам procedure или function.

БЛОК ОСНОВНЫХ ОПЕРАТОРОВ
begin
Оператор 1;
Оператор 2;
Оператор N
end.
Это основной раздел программы – именно здесь задаются те действия, которые должны быть выполнены в данной программе.

Имена программы и используемых величин (констант, переменных) выбираются программистом самостоятельно в соответствии с правилами построения идентификаторов:

идентификатор должен быть уникальным, то есть одним и тем же именем разные объекты не могут быть названы;

16

идентификатор имеет ограничение по длине (зависит от конкретной реализации языка на компьютере);

идентификатор может состоять только из символов латинского алфавита, цифр и знака подчеркивания («_»);

идентификатор не может начинаться с цифры.



Данные. Типы данных

Набор величин, с которыми работает компьютер, обычно называется данными. Каждая величина имеет три основных свойства: имя, значение и тип. В алгоритмах и языках программирования величины делятся на константы и переменные.

Константа-это величина, которая не изменяется во время выполнения программы. Память не выделяется под константой. Тип константы определяется ее значением.

Переменная-это величина, способная меняться во время выполнения программы. Память выделяется переменной. Каждая переменная, прежде чем работать с ней, должна быть описана в разделе Var, то есть указан тип переменной.

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

На языке Паскаля тип величия задается заранее. Все переменные, используемые в программе, должны быть объявлены в разделе Описание с их типом. Обязательное описание типа приводит к избыточности в тексте программ, но эта избыточность является важным вспомогательным инструментом для разработки программ и

считается необходимым свойством современных алгоритмических языков высокого уровня.
17





В языке Паскаль существует пять простых типов данных:


Integer Целочисленные данные, во внутреннем представлении занимают 2 байта

Real Вещественные данные, занимают 6 байтов

Char Символ, занимает 1 байт

String Строка символов, занимает МАХ+1 байт, где МАХ – максимальное число символов в строке

Boolean Логический тип, занимает 1 байт и имеет два значения: false (ложь) и true (истина)

Целый и вещественный тип имеют подтипы целого типа








18

Над данными целого типа определены следующие арифметические операции.

Знаки операции
+ Сложение Приоритет 2
- Вычитание Приоритет 2
* Умножение Приоритет 1
/ Деление Приоритет 1
div Целая часть от деления Приоритет 1
mod Остаток от деления Приоритет 1

Результат выполнения этих операций над целыми операндами получается также целого типа (исключение составляет операция / – результат всегда вещественное число).
Над данными целого типа определены следующие операции отношения: =, <>, <, >, <=, >=. Результат выполнения этих операций – логический тип.
Приоритет – это последовательность выполнения действий в строке операций. Если приоритет = 1, то эти действия выполняются в первую очередь, если приоритет = 2, то эти действия выполняются во вторую очередь. Для изменения приоритета используются круглые скобки.
Пример выполнения операций div и mod:
7 div 2 = 3
3 div 5 = 0
7 mod 2 = 1
3 mod 5=3
Список стандартных функции, дающие целый результат.

Abs(x) Х – целое-Абсолютная величина X
Sqr (x) Х – целое-Возведение X в квадрат
Trunc (x) Х – веществ-Выделение целой части числа X
Round (x) Х – веществ-Округление X до целого числа
Succ (x) Х – целое-Следующее за X число
Pred (x) Х – целое-Предыдущее перед X число
Random (x) Х – целое-Случайное число от 0 до х-1 .Если функция не содержит аргумента, то генерируется случайное число от 0 до 1.
Randomize-Оператор, позволяющий генерировать новую последовательность случайных чисел при новом запуске программы

19




Вещественные числа могут быть представлены в форме с фиксированной точкой и в форме с плавающей точкой.

С фиксированной точкой
5600
-0.023
570
0.26
-0.003
С плавающей точкой
Математическая. запись
0.56 * 104
-23 *10- 3
0.57 *103
26 * 10-2
-3 *10-3
Запись на языке Паскаль
0.56Е+04
-23Е-03
0.57Е+03
26Е-02
-3Е-03
Над данными вещественного типа определены следующие арифметические операции.
Знаки операции
+ Сложение Приоритет 2
- Вычитание Приоритет 2
* Умножение Приоритет 1
/ Деление Приоритет 1
Операции div и mod над вещественными величинами не допустимы.

Список стандартных функции, дающие вещественный результат.




20



Математическая запись
sin x- Синус числа X
cos x- Косинус числа X
arctg x- Арктангенс числа X
ln x- Натуральный логарифм числа X
ex- Экспонента числа X
vx- Корень квадратный числа X




Запись на языке Паскаль
sin (x)- Синус числа X
cos (x)- Косинус числа X
arctan (x)- Арктангенс числа X
ln (x)- Натуральный логарифм числа X
exp (x)- Экспонента числа X
sqrt (x)- Корень квадратный числа X
Функция ln (x) и exp (x) используются для возведения в степень по правилу: ln() n xenx = . Например, выражение x9 вычисляется по формуле exp(9*ln(x)).

Логический тип данных имеет всего два значения True (истина), False (ложь) и является упорядоченным типом True > False. В программе логический тип переменной задается служебным словом Boolean.
Самая простая операция Сравнения
> – больше;
< – меньше;
= – равно;
<> – не равно;
>= – больше либо равно;
<= – меньше либо равно.



21

Выражения

Арифметические выражения

Выражения строятся из операндов (переменные, константы, вызовы функций), знаков операций и круглых скобок. При составлении выражений необходимо знать следующие правила:
1) все выражение записывается в строку, то есть двухэтажные выражения, а также верхние и нижние индексы не допускаются. Например: (a1*x1 - a2*x2)/(x1-x2);
2) в выражении можно использовать только круглые скобки. Примеры арифметических выражений:
b+a*x
sin(x)+2*x
При составлении выражения следует учитывать приоритет операций:
1) *,/,div, mod
2) +,-
Для изменения приоритета используются круглые скобки. Выражения используются для вычисления новых значений. Тип выражения определяется в зависимости от типов операндов, участвующих в выражении и входящих в него операций.
Правила определения типа выражения:
1) Если в выражении есть хотя бы один вещественный операнд, то выражение будет иметь вещественный тип.
2) Если все операнды в выражении целого типа, выражение будет иметь целый тип, исключение – наличие операции деления (/) – всегда вещественный тип.
Например, если переменная x имеет вещественный тип, а переменные a и b – целый тип, то тип выражений будет определен следующим образом:
2*x+3 – вещественный тип (т.к. x – вещественный тип);
2*a-3 – целый тип (т.к. все операнды – целые);
a/b+3 – вещественный тип (т.к., хотя все операнды – целые, но есть операция деления).



22

Логические выражения
При решении задач часто возникают ситуации, когда последующие действия зависят от выполнения некоторого условия, например, вычислять корни квадратного уравнения можно только в случае, когда дискриминант положителен. Для этого используется структура ветвления, которая реализуется в языке Паскаль условным оператором. В качестве условия такого оператора используется логическое выражение. Логическое выражение дает либо истинное, либо ложное значение (true, false).
В логическом выражении могут учувствовать несколько логических операций, приоритет выполнения операций следующий:
1) логическое отрицание;
2) конъюнкция;
3) дизъюнкция;
4) операции сравнения.
Для изменения очередности предназначены круглые скобки.
Пример. Записать логические выражения, истинные при соблюдении следующих условий:
В волейбольную секцию примут детей не старше 13 лет и с ростом не ниже 160 см.
Ответ: (x<=13) and (y>=160), где x – возраст ребенка, а y – его рост.
Примеры записи логических выражений:
(a>3) and (a<5) or (b>2) and (b<10)
not (a<15) or (b>30)
c or d and (b=10)
Приоритет всех операций (от высшего к низшему):
1) операции и функции в скобках;
2) not;
3) *, /, and, div, mod;
4) +, -, or;
5) =, <>, <, >, <=, >=.
23



Основные операторы языка

Оператор присваивания
Оператор используется, чтобы явно присвоить переменной результат вычисления выражения. Формат оператора:
Формат оператора:
<Имя переменной> := <Выражение>;
Примеры:
S:=0;
Name:=’Ваня’;
S:=S+1;
Выполнение оператора присваивания заключается в следующем: сначала вычисляется результат выражения, затем полученное значение записывается в переменную, имя которой стоит слева от знака присваивания.
Оператор присваивания считается верным, если тип выражения соответствует или может быть приведен к типу переменной слева от знака присваивания.
Переменной вещественного типа можно присвоить выражение вещественного или целочисленного типов. Переменной целочисленного типа можно присвоить значение выражения только целочисленного типа.
Например, если объявлены следующие переменные.
Var

i, n : integer;
D : real;
то операторы присваивания:
i:=n/10; – неправильный,
i:=1.0; – неправильный,
d:=i; – правильный.
Если тип выражения не соответствует типу переменной, то компилятор выдает сообщение об ошибке.


24



Составной оператор
Этот оператор, строго говоря, оператором не является. Дело в том, что также как арифметические действия иногда необходимо заключать в скобки, последовательности команд (операторов) тоже иногда требуют объединения. Это позволяют сделать так называемые операторные скобки.
Формат оператора:
Begin
<Оператор 1>;
<Оператор 2>;
......
<Оператор N>
End;
Составной оператор предоставляет возможность выполнить произвольное количество команд там, где подразумевается использование только одного оператора. Такая необходимость встречается довольно часто.

Оператор ввода

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

Формат оператора:
Read(<Список ввода>);
Readln(<Список ввода>);
Например,
read(x,y);
Выполнение оператора ввода происходит следующим образом: ход программы приостанавливается, на экран выводится курсор, компьютер ожидает от пользователя набора данных для переменных, имена которых указаны в списке ввода. Пользователь с клавиатуры вводит необходимые значения в том порядке, в котором они требуются списком ввода, нажимает клавишу Enter.



25

После этого набранные данные заносятся в соответствующие им переменные, и выполнение программы продолжается.

Оператор вывода
Оператор вывода позволяет выводить на экран монитора данные из списка вывода.
Формат оператора:
Write(<Список вывода>);
Writeln(<Список вывода>);
Например:
Write(‘Результат=’, Pi*r*r);
Элементами списка вывода могут являться имена переменных, констант, выражения (которые предварительно вычисляются), текст, заключенный в апострофы. Элементы списка, также как и в операторах ввода, разделяются запятыми.
Различие между операторами Write и Writeln: после выполнения оператора Writeln (от Write line) курсор переходит на новую строчку, а после выполнения оператора Write курсор остается на текущей строке вывода, и следующий оператор вывода начинает вывод именно с этой позиции.
Оператор Writeln без параметров (Writeln;) реализует переход к началу следующей строки.
После имени переменной или выражения через двоеточие можно указать формат числа, который задает ширину поля вывода. Для переменной целого типа – это одно число, указывающее число позиций, отводимых под целое значение (например, write(x:10);). Для переменной вещественного типа – это два числа, первое из которых указывает число позиций, отводимых под все число, включая десятичную точку, второе – число позиций, отводимых под дробную часть числа (например, write(y:7:2);). Если для вещественных величин формат вывода не задан, то значение выводится в форме с плавающей точкой.
Приведем пример использования форматированного вывода.
Пусть имеется фрагмент программы:
a := 52.6;
Write (a);
На экране будет отражена запись 5.2600000000Е+01, т.е. 5.2600000000*101
26

Условный оператор
Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор используется для реализации ветвлений в программе, которые происходят при выполнении некоторого условия.
Формат условного оператора:
If <условие>
Then <оператор 1>
Else <оператор 2>;
Работа оператора может быть выражена простыми словами:
Если <условие> {Если выполняется условие}
то < оператор 1> {то выполнить оператор № 1}
иначе < оператор 2> {иначе – выполнить оператор № 2}
Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение, если результат вычисления имеет значение ИСТИНА, то выполняется оператор или группа операторов следующих за словом then, если же выражение имеет значение ЛОЖЬ, то выполняется оператор следующий после слова else.
Следует обратить ваше внимание на то что после <оператора 1> перед словом else не ставится точка с запятой.
Существуют конструкции когда условный оператор записывается без слова else, т.е.
If <условие> then <оператор 1>;
В таких случаях при вычислении логического выражения, когда результат имеет значение ЛОЖЬ, выполняется оператор следующий за оператором условия.
После слов then и else стоит только один оператор. Но что делать, если требуется по выполнению или невыполнению условия совершить не одно, а несколько действий? Здесь приходит на помощь.
уже составной оператор. В операторные скобки можно заключить любое количество операторов. Вариант условного оператора в этом случае:
If <условие>
Then Begin <группа операторов 1> end
Else Begin < группа операторов 2> end;



27

пример
Заданы целые значения x и y. Определить z = max (x2, y2).
Program primer1;
Var
z, x, y : integer;
Begin
Readln (x, y);
If sqr(x) > sqr(y) then z := sqr(x)
else z := sqr(y);
Write ('Z = ', z);
End.

Оператор цикла «Пока»

Формат цикла «Пока» (цикл с предусловием):
While <условие> Do <оператор>;
По-русски можно прочитать так: «Пока истинно условие, выполнять оператор».
Работает оператор следующим образом. Вначале вычисляется условие, если результат вычисления имеет значение ИСТИНА, то выполняется оператор в цикле, после чего вычисление выражения <условие> и его проверка повторяются. Если логическое выражение имеет значение ЛОЖЬ, оператор While прекращает свою работу.
Здесь, так же, как в формате условного оператора, подразумевается выполнение только одного оператора. Если необходимо выполнить несколько действий, то используется составной оператор. Тогда формат оператора принимает такой вид:
While <условие> Do Begin
<оператор 1>;
<оператор 2>;
<оператор 3>;
. . .
End;
Пример. Дана последовательность целых чисел за которой следует ноль. Вычислить сумму элементов последовательности.



28

Program primer;
Var i, a, s : integer;
Begin
s := 0;
Read (a);
While a <> 0 do begin
s := s + a;
Read (a);
end;
Write ('Сумма элементов равна ', s);
End.


Оператор цикла До

Формат цикла «До» (цикл с постусловием):
Repeat
<оператор 1>;
<оператор 2>;
<оператор 3>;
. . .
Until <условие>;
Читается так: «Выполнять оператор 1, оператор 2. и т. д. до выполнения условия».
Здесь не требуется использование составного оператора, потому что сами слова Repeat и Until являются операторными скобками.
ператор Repeat – Until работает следующим образом. В начале выполняется тело цикла, после чего вычисляется логическое выражение следующее за словом Until, если результатом вычисления выражения является ЛОЖЬ, то операторы в теле цикла будут выполнены повторно. в противном случае, если логическое выражение имеет значение ИСТИНА, оператор цикла с постусловием прекратит свою работу.
Пример. Дана последовательность целых чисел, последним элементом которой является число 100. Вычислить среднее арифметическое элементов этой последовательности.

29

Program primer;
Var i, a, s, x : integer;
Begin
s := 0;
x := 0;
Repeat
Read (a);
s := s + a;
x := x + 1;
Until a = 100;
s := s / x;
Write ('среднее арифметическое: ', s);
End.

Массивы
Рассмотренные выше простые типы данных – логический (boolean), целый (integer , word , byte , longint), вещественный (real), символьный (char) позволяют работать с одиночными объектами. В языке Паскаль могут использоваться также объекты, содержащие множество однотипных элементов. Массив – это упорядоченная последовательность однотипных данных, рассматриваемых как одно целое. Упорядоченность данных в массиве позволяет обращаться к любому элементу массива по его порядковому номеру (индексу). Элементы массива расположены последовательно в непрерывной области памяти.
Нужно четко понимать, что индекс ячейки массива не является ее содержимым. Содержимым являются хранимые в ячейках данные, а индексы только указывают на них. Индексы элементов массива обычно целые числа, однако могут быть и символами, а также описываться другими порядковыми типами. Зачастую для задания количества элементов массива используется тип-диапазон. Типдиапазон задается левой и правой границами изменения индекса массива.
Описание массива
Перед использованием массив, как и любая переменная, должна быть объявлена (описана).
Описание типа массива задается следующим образом:
type
имя типа = array[ список индексов ] of тип;

30

Здесь имя типа – правильный идентификатор; список индексов – список одного или нескольких индексных типов, разделенных запятыми; тип – любой тип данных.
Пример.
Const
n = 5;
type
mas = array[1..n] of integer; {Объявлен тип mas, являющийся массивом (array) целых чисел (integer), границы изменения индекса массива – 1… n}
var
a: mas;
Определить переменную как массив можно и непосредственно при ее описании в разделе var, без предварительного описания типа массива, например:
var
a,b,c: array[1..10] of integer; {Объявлены три массива a, b, c, состоящие из десяти целых элементов}
Обращение к определенному элементу массива осуществляется путем указания имени переменной массива и в квадратных скобках индекса элемента, например a[3] – обращение к третьему элементу массива a, a[i] – обращение к i-му элементу массива a. Простой массив является одномерным. Он представляет собой линейную структуру.

Основные действия с массивами
Единственное действие, которое можно выполнять над массивами целиком, причем только при условии, что массивы
однотипны, – это присваивание. Если в программе описаны две переменные одного типа, например,
Var
a , b : array [1..10] of real;
то можно переменной a присвоить значение переменной b (a:=b). При этом каждому элементу массива a будет присвоено соответствующее значение из массива b. Все остальные действия над массивами Паскаля производятся поэлементно.


31


Ввод массива
Для того чтобы ввести значения элементов массива, необходимо последовательно изменять значение индекса, начиная с первого до последнего, и вводить соответствующий элемент. Для реализации этих действий удобно использовать цикл с заданным числом повторений, где параметром цикла будет выступать переменная – индекс массива. Значения элементов могут быть введены с клавиатуры или определены с помощью оператора присваивания.
Пример фрагмента программы ввода массива с клавиатуры:
Var
A : array [1..10] of integer;
i : byte; {переменная i как индекс массива}
Begin
For i:=1 to 10 do
Read (a[i]); { ввод i- го элемента производится с клавиатуры }
Рассмотрим теперь случай, когда массив заполняется автоматически случайными числами. Для этого будем использовать генератор случайных чисел – random ( N ).
Пример фрагмента программы заполнения массива случайными числами: Var
A: array [1..10] of integer;
i : byte ;
Begin
For i :=1 to 10 do
A [ i ]:= random (50)-25; {i-му элементу массива присваивается «случайное» целое число в диапазоне от 0 до 49 с вычетом 25, т.е. окончательный диапазон от -25 до 24} .



32

Вывод массива
Вывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего.
Пример фрагмента программы вывода массива:
Var
A: array [1..10] of integer;
i : byte ; {переменная i как индекс массива}
Begin
Writeln(‘Массив А’);
For i :=1 to 10 do
Write ( a [ i ]:5); {вывод массива осуществляется в строку, под каждый элемент выделяется 5 позиций, иначе элементы массива будут выведены слитно} .
Writeln; (Для перевода курсора на следующую строку)

На экране мы увидим, к примеру, следующие значения:
Массив А _ _ _ _ 5_ _ _ - 2_ _ 1 1 5 и т.д.
Вывод можно осуществить и в столбик (использовать оператор Writeln). Но в таком случае нужно учитывать, что при большой размерности массива все элементы могут не поместиться на экране и будет происходить скроллинг, т.е. при заполнении всех строк экрана будет печататься очередной элемент, а верхний смещаться за пределы экрана.
Пример программы вывода массива в столбик:
Var
A: array [1..10] of integer;
i : byte ;
Begin
For i:=1 to 10 do
Writeln (‘a[‘, i,’]=’, a[i]); {вывод элементов массива в столбик} .
На экране мы увидим, к примеру, следующие значения:
a [1]=2
a [2]=4
a [3]=1 и т.д.


33

3. Практическая часть
Практической части рассмотрим основный структуры алгоритмов на языке паскаль и в блоке-схем начнем пожалуй самого простого алгоритма.

Линейный Алгоритм
Линейный алгоритм - это алгоритм, имеющий четкую последовательность действий, повторяющихся один раз.
Например, алгоритм открывания двери:
1. Достать ключ;
2. Вставить ключ в замочную скважину;
3. Повернуть ключ;
4. Вытащить ключ;
5. Потянуть дверь.
По большому счету линейный алгоритм мы исполняемый ежедневно
а как же будет он выглядеть в языке программирование и в блок-схеме вот задача.

Задача
Найти площадь треугольника по известным сторонам A,B,C с помощью формулы герона

и также полупериметр

Вот так будет выглядеть блок-схема

34

Теперь как он будет выглядеть в языке паскаль
Program Geron;

var

a,b,c,p,S:real;

begin

writeln('Введите первую сторону треугольника a=');

readln(a);

writeln('Введите второю сторону треугольника b=');

readln(b);

writeln('Введите третью сторону треугольника c=');

readln(c);

p:=(a+b+c)/2;

S:=sqrt(p*(p-a)*(p-b)*(p-c));

Writeln('Площадь треугольника равна', S);

readln;

End.
На мониторе должный увидеть Окно вывода
Введите первую сторону треугольника a=3

Введите второю сторону треугольника b=4

Введите третью сторону треугольника c=5
Таким способом узнаем что
площадь треугольника равна=6.


35

Цикличесйкй алгоритм
Циклический алгоритм – описание действий, которые должны повторяться указанное число раз или пока не выполнено заданное условие. Перечень повторяющихся действий называют телом цикла.
Также как и линейный алгоритм циклический также присутствует в нашей жизнь.
Задача
Какой значения будет переменной s,
При запуске программы
program S;

var s,k: integer;

begin

s:=0;

for k:=3 to 5 do

s:=s+6;

writeln(s);

End.
Значения переменой s будет равняться=18

Вот так будет выглядеть блок схемы этой задачи



36

Разветвляющиеся алгоритмы
Разветвляющиеся алгоритмы-представляют собой алгоритм, последовательность выполнения команд которого находится в зависимости от соответствия заявленному условию. Команда «ветвления» относится к структурным командам. Выполнение такой команды всегда происходит в несколько шагов: проверка заданного условия и дальнейшее исполнение команд по одной из ветвей: «да» или «нет».
Например
Взглянуть в окно
Идет дождь не идти гулять
Нет дождя пойти гулять
Задача
Выбрать значения которой больше чем другое

Program project;

var a,b,c: integer;

begin

write ('370,257');

read(a,b);

if A>B then C:=a else

C:=B;

write('Max=A',C)

End.

Значения А больше чем B
Вот так будет выглядеть блок схемы этой задачи.

37

Сравнения
Конечно, каждый алгоритм эффективен, но у них также есть плюсы и минусы

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


38


Заключение

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

В заключение следует добавить, что многие будут иметь вопрос, почему практиковать на языке Паскаля, а не на C++ Ну, потому что Паскаль может сказать азбука для программиста благодаря паскалю можно сказать, появился современный язык программирования также язык паскаль очень легкий и очень запоминающийся язык.




39

Список литературы


1. фаронов В.В.Ф24 Турбо Паскаль 7.0. Практика программирования. Учебное пособие. -М.: Изда-тельство «ОМД Групп», 2003.-432 с., ил.
2. Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. –56 с. http://pnu.edu.ru/media/filer_public/2013/02/25/book_basics.pdf
3. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А.
Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013, 153 с. http://au.kai.ru/documents/Auzyak_Progr_osn_alg_C_2013.pdf
4. 3. Основы алгоритмизации и программирования : учебное пособие / Г.Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95 с. .
http://venec.ulstu.ru/lib/disk/2014/137.pdf
5. Основы алгоритмизации и программирования. Курс лекций.
http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf6. Макаров В.Л. Программирование и основы алгоритмизации.: учебн.пособие.-Спб., СЗТУ, 2003, - 110с.
http://window.edu.ru/resource/126/25126/files/nwpi223.pdf
7. Горностаева, Татьяна Николаевна Г 67 Алгоритмы. Учебное пособие – М.: Мир науки, 2019. – Сетевое издание
https://izd-mn.com/PDF/33MNNPU19.pdf