Команд исполнителя (на примере учебного исполнителя). Свойства алгоритма. Способы записи алгоритмов; блок-схемы

Вид материалаДокументы

Содержание


Что такое алгоритм?
Исполнитель алгоритмов
Исполнитель алгоритма
Система команд исполнителя (СКИ)
Среда исполнителя
Свойства алгоритма
В какой форме записываются алгоритмы?
Основные алгоритмические блоки
Решение (проверка условия) Ввод-вывод
Алгоритмические конструкции
Основными алгоритмическими конструкциями
Язык блок-схем Алгоритмический язык
Пример программы на языке программирования Pascal{программа вычисляет площадь прямоугольника}
Язык блок-схем Алгоритмический язык
Пример программы на языке программирования Pascal
Блок-схема цикла с предусловием продолжения Блок-схема цикла с постусловием завершения
Разработка алгоритмов методом последовательной детализации. Вспомогательные алгоритмы
Имена (идентификаторы) — употpебляются для обозначения объектов пpогpаммы
Массивы — последовательности однотипных элементов, число которых фиксировано и которым присвоено одно имя.
Выpажения — пpедназначаются для выполнения необходимых вычислений
...
Полное содержание
Подобный материал:
Билет 6  

------------------------------------------------------------------------------------------------------------------------
1. Понятие алгоритма. Исполнитель алгоритма. Система команд исполнителя (на примере учебного исполнителя). Свойства алгоритма. Способы записи алгоритмов; блок-схемы.
------------------------------------------------------------------------------------------------------------------------

За время своего существования человечество выработало правила поведения в определенных ситуациях для достижения поставленных целей. Часто эти правила можно представить в виде инструкций, состоящих из последовательно выполняемых пунктов (шагов). Так, например, в первобытном обществе инструкция охотникам по восполнению продовольственных запасов племени могла бы выглядеть следующим образом:
  1. Найти тропу, по которой часто ходят мамонты.
  2. Вырыть на ней большую глубокую яму и замаскировать ветками.
  3. Спрятаться и ждать, пока в яму не провалится мамонт.
  4. Закидать провалившегося мамонта копьями и камнями.
  5. Разделать тушу и доставить ее к хижинам племени.

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



Само слово "алгоритм" происходит от "algorithmi" - латинской формы написания имени выдающегося математика IX века аль-Хорезми, который сформмулировал правила выполнения арифметических операций.

Что такое алгоритм?

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

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

Рассмотрим пример алгоритма для нахождения середины отрезка при помощи циркуля и линейки.

Алгоритм деления отрезка АВ пополам:
1) поставить ножку циркуля в точку А;
2) установить раствор циркуля равным длине отрезка АВ;
3) провести окружность;
4) поставить ножку циркуля в точку В;
5) провести окружность;
6) через точки пересечения окружностей провести прямую;
7) отметить точку пересечения этой прямой с отрезком АВ.

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

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

Поочередное выполнение команд алгоритма за конечное число шагов приводит к решению задачи, к достижению цели. Разделение выполнения решения задачи на отдельные операции (выполняемые исполнителем по определенным командам) — важное свойство алгоритмов, называемое дискретностью.

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

Исполнители часто встречаются в сказках. В одной из них Иван-Царевич говорит Избушке-На-Курьих-Ножках: “Избушка, избушка! Встань к лесу задом, ко мне передом!”. При этом команда должна быть задана очень точно, чтобы исполнитель ее понял. В сказке “Али-Баба и сорок разбойников” волшебная дверь открывалась по команде “Сезам, откройся!”. Жадный Касым, тайно проникший в пещеру, забыл эту фразу и не смог выйти из пещеры.

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

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

Система команд исполнителя (СКИ) – это все команды, которые исполнитель умеет выполнять.

Каждый исполнитель может выполнять команды только из некотоpого стpого заданного списка — системы команд исполнителя. Для каждой команды должны быть заданы условия пpименимости (в каких состояниях сpеды может быть выполнена команда) и описаны pезультаты выполнения команды . Напpимеp, команда Pобота "ввеpх" может быть выполнена, если выше Pобота нет стены. Ее pезультат — смещение Pобота на одну клетку ввеpх.

После вызова команды исполнитель совеpшает соответствующее элементаpное действие .

Отказы исполнителя возникают, если команда вызывается пpи недопустимом для нее состоянии сpеды.

Среда исполнителя – обстановка, в которой функционирует исполнитель.

Исполнителями могут быть
  • машины: станки, роботы, компьютеры;
  • растения: подсолнечник (разворачивается на солнце), кувшинки (закрываются на ночь);
  • животные: дрессированная собака (санитар, розыскная, охотничья), кошка,
  • люди: ученик, рабочий, учитель, ...

Исполнитель Робот

Как и любой исполнитель, Робот понимает только ограниченный набор команд, которые входят в его СКИ (список команд исполнителя). Некоторые примеры команд:

СКИ Робота:

направо; повернуться на 90 градусов вправо
налево; повернуться на 90 градусов влево
кругом; развернуться кругом (на 180 градусов)
вперед ( n ); перейти на n клеток вперед
назад ( n ); перейти на n клеток назад
посади; посадить цветы на грядке в том месте, где стоит Робот

Свойства алгоритма
  1. Понятность для исполнителя — т.е. исполнитель алгоритма должен знать, как его выполнять.
  2. Дискpетность (прерывность, раздельность) — т.е. алгоpитм должен пpедставлять пpоцесс pешения задачи как последовательное выполнение пpостых (или pанее опpеделенных) шагов (этапов).
  3. Опpеделенность — т.е. каждое пpавило алгоpитма должно быть четким, однозначным и не оставлять места для пpоизвола. Благодаpя этому свойству выполнение алгоpитма носит механический хаpактеp и не тpебует никаких дополнительных указаний или сведений о pешаемой задаче.
  4. Pезультативность (или конечность). Это свойство состоит в том, что алгоpитм должен пpиводить к pешению задачи за конечное число шагов.
  5. Массовость . Это означает, что алгоpитм pешения задачи pазpабатывается в общем виде, т.е. он должен быть пpименим для некотоpого класса задач, pазличающихся лишь исходными данными. Пpи этом исходные данные могут выбиpаться из некотоpой области, котоpая называется областью пpименимости алгоpитма.

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

На практике наиболее распространены следующие формы представления алгоритмов:
  • словесная (записи на естественном языке);
  • графическая (изображения из графических символов);
  • псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
  • программная (тексты на языках программирования).

Графический способ записи алгоритмов
(блок-схема)

Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным.

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

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

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

Основные алгоритмические блоки

Начало-Конец (блок начала и конца алгоритма)

Процесс (вычислительное действие или последовательность действий)

Решение (проверка условия)

Ввод-вывод (ввод или вывод в общем виде)  

Модификация (начало цикла)


Билет 7  

------------------------------------------------------------------------------------------------------------------------
1. Основные алгоритмические структуры: следование, ветвление, цикл; изображение на блок-схемах. Разбиение задачи на подзадачи. Вспомогательные алгоритмы.
------------------------------------------------------------------------------------------------------------------------


Алгоритмические конструкции

Внутри алгоритмов можно выделить группы шагов, отличающиеся внутренней структурой – алгоритмические конструкции.

Основными алгоритмическими конструкциями являются линейная последовательность шагов, ветвление и цикл.

Линейная последовательность шагов

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

На рисунке изображена блок-схема линейного алгоритма, состоящего из двух шагов.

Язык блок-схем Алгоритмический язык

нач


действие 1

действие 2
...................

кон
 

Пример программы на языке программирования Pascal
{программа вычисляет площадь прямоугольника}


Program ploshad;
var a,b,s:word;
begin
write('a=');
read (a);
write ('b=');
read (b);
s:=a*b;
writeln ('площадь прямоугольника', s);
end.


Ветвление

Ветвление представляет собой алгоритмическую конструкцию, в которой выполнение того или иного шага зависит от истинности условия.

На рисунке приведена блок-схема ветвления

Язык блок-схем Алгоритмический язык


если условие

то
действия 1
иначе
действия 2

все


Если условие истинно, то будет выполнено только действие1, в противном случае будет выполнено только действие2.

В языках программирования высокого уровня ветвление обычно реализуется с помощью оператора (команды) IF. (См. оператор If в Паскале, оператор If в языке Basic.)

Пример программы на языке программирования Pascal

{Программа, которая находит наибольшее из трех чисел}

Program maximal;
var a,b,c,d:word;
begin
write ('a,b,c'');
read (a,b,c);
if a>b then d:=a
else d:=b;
if c>d tnen d:=c then
writeln ('наибольшее',d);
end.


Цикл

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

Для того, чтобы определить момент прекращения выполнения тела цикла, используется условие цикла. Если при истинности условия цикл продолжается, то такое условие называется условием продолжения цикла. Иными словами, цикл продолжается, пока условие цикла истинно.

Если при истинности условия цикл завершается, то такое условие называется условием завершения цикла. В этом случае цикл продолжается до тех пор, пока условие цикла не станет истинным.

Различают циклы с проверкой условия перед выполнением очередной итерации и циклы с проверкой условия после выполнения очередной итерации. Первые называются циклами с предусловием, вторые – с постусловием.



Блок-схема цикла с предусловием продолжения Блок-схема цикла с постусловием завершения

Тело цикла с постусловием всегда выполнится хотя бы один раз.



Цикл типа Пока

  Цикл типа Для

 

нц пока условие
тело цикла (последовательность действий)
кц нц для i от i1 до i2
тело цикла (последовательность действий)
кц


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

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

Разработка алгоритмов методом последовательной детализации. Вспомогательные алгоритмы

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

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

Рассмотрим процесс создания алгоритма Домик для исполнителя Чертежник методом последовательной детализации. Пусть необходимо нарисовать домик с крышей.

Сначала запишем алгоритм, состоящий из крупных блоков. Такими блоками, содержащими «непонятные» для исполнителя Чертежник команды, являются блоки стена, крыша. Теперь детализируем эти блоки и запишем их в виде вспомогательных алгоритмов, содержащих понятные Чертежнику команды.



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


Билет 8  

------------------------------------------------------------------------------------------------------------------------
1. Величины: константы, переменные, типы величин. Присваивание, ввод и вывод величин. Линейные алгоритмы работы с величинами.
------------------------------------------------------------------------------------------------------------------------


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

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

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

Имена (идентификаторы) — употpебляются для обозначения объектов пpогpаммы (пеpеменных, массивов, функций и дp.).

Опеpации . Типы операций:
  • аpифметические опеpации + , - , * , / и дp. ;
  • логические опеpации и, или, не ;
  • опеpации отношения < , > , <=, >= , = , <> ;
  • опеpация сцепки (иначе, "присоединения", "конкатенации") символьных значений дpуг с другом с образованием одной длинной строки; изображается знаком "+".

Данные величины, обpабатываемые пpогpаммой . Имеется тpи основных вида данных: константы, пеpеменные и массивы .
  • Константы — это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.

Пpимеpы констант:
    • числовые 7.5, 12;
    • логические да (истина) , нет (ложь);
    • символьные "А", "+";
    • литеpные "abcde", "информатика", "" (пустая строка).



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

Выpажения — пpедназначаются для выполнения необходимых вычислений , состоят из констант, пеpеменных, указателей функций (напpимеp, exp(x)), объединенных знаками опеpаций.

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

Различают выражения арифметические, логические и строковые.
  • Арифметические выражения служат для определения одного числового значения . Например, (1+sin(x))/2. Значение этого выражения при x=0 равно 0.5, а при x=p/2 - единице.
  • Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться . Таким образом, логическое выражение может принимать только два значения — "истина" или " ложь" ( да или нет ). Рассмотрим в качестве примера логическое выражение x*x + y*y < r*r , определяющее принадлежность точки с координатами (x,y) внутренней области круга радиусом r c центром в начале координат. При x=1, y=1, r=2 значение этого выражения — "истина" , а при x=2, y=2, r=1 — "ложь" .
  • Значения строковых (литерных) выражений — текcты . В них могут входить литерные константы, литерные переменные и литерные функции, разделенные знаком операции сцепки. Например, А + В означает присоединение строки В к концу строки А. Если А = "куст " , а В = "зеленый", то значение выражения А+В есть " куст зеленый" .

Операторы (команды). Оператор — это наиболее крупное и содержательное понятие языка: каждый оператор представляет собой законченную фразу языка и определяет некоторый вполне законченный этап обработки данных. В состав опеpатоpов входят:
  • ключевые слова;
  • данные;
  • выpажения и т.д.

Операторы подpазделяются на исполняемые и неисполняемые. Неисполняемые опеpатоpы пpедназначены для описания данных и стpуктуpы пpогpаммы, а исполняемые — для выполнения pазличных действий (напpимеp, опеpатоp пpисваивания, опеpатоpы ввода и вывода, условный оператор, операторы цикла, оператор процедуры и дp.).

Линейная алгоритмическая структура

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

Языки программирования - искусственные языки. От естественных они отличаются ограниченным числом "слов", значение которых понятно транслятору, и очень строгими правилами записи команд (операторов).

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

Программа имеет линейную структуру, если все операторы (команды) выполняются последовательно друг за другом.



Пример: программа, складывающая два числа

Program summa;
var a, b, c: integer;
begin
write ('a'); readln (a);
write ('b'); readln (b);
c: = a + b;
writeln ('Результат:', c);
end.

Присваивание

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

Для задания значения переменной служит оператор присваивания . Он записывается так:
(относительно языка Pascal)
переменная:=значение (или просто: переменная:=значение)
Пример:
a:=16
chislo: = 15


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


Билет 9  

------------------------------------------------------------------------------------------------------------------------
1. Логические величины, операции, выражения. Логические выражения в качестве условий в ветвящихся и циклических алгоритмах.
------------------------------------------------------------------------------------------------------------------------


Логика - это наука о формах и способах мышления.

Основоположником формальной логики является Аристотель, который впервые отделил логические формы мышления от его содержания.

Мышление всегда осуществляется в каких-то формах. Выделяют три основные: поняти, высказывание и умозаключение.

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

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

Пример: "Буква а - гласная". (это истинное высказвание).

Алгебра логики

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

Логическая переменная - это простое высказывание, содержащее только одну мысль. Ее символическое обозначание - латинская буква (например, A, B,C,F). Значением логическое меременной могут быть только констансты ИСТИНА (1) и ЛОЖЬ (0).

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

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

Логические операции - логические действие.

Базовые логические операции:

1. Логическое умножение (конъюнкция)

(соответсвует союз "И")

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

А В F = A /\ B

0 0 0

0 1 0

1 0 0

1 1 1

2. Логическое сложение (дизъюнкция)

(соответсвует союз "ИЛИ")

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

А В F = A \/ B

0 0 0

0 1 1

1 0 1

1 1 1

3. Логическое отрицание (инверсия)

(соответсвует частица "НЕ")

Логическое отрицание (инверсия) делает истинное высказывание ложным и, наоборот, ложное – истинным .

А F = A

0 1

1 0

Логические выражения в алгоритмах

Логическое выражение при выполнении алгоритма принимает одно из двух знаничений:"истина" или "ложь". В логических выражниях действией (операцией) является сравнение (отношение).

Существуют следующие операции сравнения:

знак операция

= равно

<> не равно

> больше

< меньше

>= больше или равно

<= меньше или равно

Пример использования логического выражения в качестве условий в ветвящемся алгоритме

Задача. Дана температура человека. Определить, болен ли он.

алг Температура
вещ t
нач ввод t
если t=36.6
то вывод "здоров"
иначе вывод "болен!"
кв
кон

В качестве условия - логическое выражение t=36.6.
Если условие является истинным, то идет вывод сообщения о том, что человек здоров (ведь нормальная температура 36.6 градусов. Если условие является ложным - ветка иначе (т.е. температура выше или ниже нормы), то вывод сообщения о том, что человек болен.

Пример использования логического выражения в качестве условий в циклическом алгоритме

Задача. Дано целое положительное число N. Вычичслить факториал этого числа: N! = 1 x 2 x 3 x ... x N.

алг Факториал1
цел f,n,r
нач ввод n
f:=1
r:=1
пока <=n, повторять
нц
f:=f*r
r:=r+1
кц
вывод "Факториал", f
кон


Билет 10  

------------------------------------------------------------------------------------------------------------------------
1. Представление о программировании: язык программирования (на примере одного из языков высокого уровня); примеры несложных программ с линейной, ветвящейся и циклической структурой.
------------------------------------------------------------------------------------------------------------------------

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

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

В настоящее время существует много различных языков программирования: Кобол, С, Фортран, Visual Basic, Pascal и др.

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

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

Синтаксис - система правил, определяющих допустимые конструкции языка программирования из букв алфавита.

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

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

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

Система программирования предназначена для автоматизации разработки программного обеспечения. В состав системы программирования обязательно входят язык программирования, редактор для создания и исправления текстов программ и транслятор для перевода программ на язык машинных команд.

Трансляторы - компиляторы и интерпритаторы

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

011001010101010
111110001111100
101000010100101
........................... …
101010010101001

совершенно неудобно.

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

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

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

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

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

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

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

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

Существует много версий языка Паскаль. Различия между ними порой весьма велики.

Любая Паскаль-программа является текстовым файлом с собственным именем и с расширением .pas.

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

Паскаль

  Алгоритмический язык

 

Program Division;
var a,b,c,d,m,n: integer;
begin
readln (a,b,c,d); {ввод}
m:=a*d; {числитель}
n:=b*c; {знаменатель}
write (m,n); {вывод}
end. алг деление дробей
цел a,b,c,d,m,n
нач
ввод a,b,c,d
m:=axd
n:=bxc
вывод m,n
кон

Заголовок программы начинается со слова Program (программа), за которым следует произвольное имя, придуманное программистом.

Program <имя программы>;

Раздел описания переменных начинается со слова Var (variables - переменные), за которым идет список имен переменных через запятую. Тип указывается после двоеточия. В стандарте языка Паскаль существует два числовых типы данных: вещественный и целый. Слово integer обозначает целый тип (является идентификатором целого типа). Вещественный тип обозначается словом real. Например, раздел описания переменных может быть таким:

Var a, b: integer; c,d:real;

Идентификаторы переменных составляются из латинских букв и цифр; первым символом обязательно должна быть буква.

Раздел операторов (оператор - команда алгоритма, записанная на языке программирования) - основная часть программы. Начало и конец раздела операторов программы отмечается служебными словами begin (начало) и end (конец). В самом конце программы ставится точка.

begin
<операторы>
end.

Вывод результатов происходит по оператору write (write - писать) или writeln (writeln - писать в строку.

Арифметический оператор присваивания на Паскале имеет следующий формат:

<числовая переменная>:=
<арифметическое выражение>

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

Знаки основных арифметических операций записываются так:

+ сложение

- вычитание

* умножение

/ деление

Примеры программ на языке программирования Pascal

Линейная стуктура

Задача. Заданы длины двух катетов прямоугольного треугольника a, b. Вычислить длину гипотенузы с.

Program treug;
var a, b ,c: real;
begin
write ('a='); read (a);
write ('b='); read (b);
c:=sqrt (a*a+b*b);
writeln ('c=', c:6:2);
end.

Ветвление

Задача. Упорядочить значение двух переменных X и Y по возрастанию.

Program Sorting;
var x, y, c: real;
begin
readln (x,y);
if x>y then begin
c:=x;
x:=y;
y:=c;
end;
write (x,y);
end.

Цикл

Задача. Дано N кубиков, на которых написаны разные буквы. Сколько различных N-буквенные слов можно составить из этих кубиков (слова необязательно должны иметь смысл)?

Program Words;
var f, n, r: integer;
begin
write ('введите число букв');
readln (n);
f:=1;
r:=1;
while r<=n do
begin
f:=f*r;
r:=r+1;
end;
write ('Из', n, 'букв можно составить ', f , 'слов');
end.