Основы программирования — Осенний семестр; Михалкович С.С.; 2008; I — различия между версиями
Juliet (обсуждение | вклад) |
Juliet (обсуждение | вклад) (→Свойства алгоритма) |
||
Строка 6: | Строка 6: | ||
:каждая команда имеет четкое однозначное значение | :каждая команда имеет четкое однозначное значение | ||
* ''конечность'' | * ''конечность'' | ||
− | :каждый | + | :каждый алгоритм должен когда-то завершаться при любом наборе исходных данных |
* ''результативность'' | * ''результативность'' | ||
− | :после выполнения | + | :после выполнения алгоритма известно, что считать результатом |
* ''массовость'' | * ''массовость'' | ||
:применимость ко множеству исходных данных | :применимость ко множеству исходных данных |
Версия 10:02, 1 июня 2009
Содержание
Алгоритм
Свойства алгоритма
- дискретность
- элементарность команд
- определенность команд
- каждая команда имеет четкое однозначное значение
- конечность
- каждый алгоритм должен когда-то завершаться при любом наборе исходных данных
- результативность
- после выполнения алгоритма известно, что считать результатом
- массовость
- применимость ко множеству исходных данных
Связанные понятия
Спецификация задачи — точное, однозначное описание задачи. Включает формулировку входных и выходных данных.
Исполнитель алгоритма — устройство, имеющее некоторую систему команд, и способное их исполнять.
- Процессор — исполнитель машинных кодов.
Пример.
- Дано: x, y, z.
- Найти max
Алгоритм 1. (словесное описание)
Если x>y и x>z, то максимум - это x Если y>x и y>z, то максимум - это y Если z>x и z>y, то максимум - это z
Алгоритм 2. (псевдокод)
max := x Если y<max то max := y Если z<max то max := z
Эквивалентными называются алгоритмы, имеющие одинаковые наборы исходных данных и выдающие одинаковый результат при одинаковых исходных данных.
Способы описания алгоритмов
- словесный
- псевдокод
- блок-схемы
Пример. А.2., представленный блоксхемой.
- диаграммы деятельности (activity diagram) UML
Пример. А.2., представленный диаграммой деятельности
- язык программирования (ЯП)
Команды алгоритма также называются:
- операторы языка
- инструкции языка
Правила записи программ на Object Pascal
По Шпаргалке
- Пример программы, вычисляющей длину и площадь круга.
- Общие правила записи программ на Паскале. Оформление, комментарии
PascalABC.NET. Как скачать, инсталлировать. (сайт системы программирования PascalABC.NET)
Синтаксис и семантика ЯП
Определения
Синтаксис — формальные правила описания конструкций ЯП.
Семантика — описывает смысл конструкций ЯП, а также задает ряд ограничений.
Способы описания синтаксиса
- БНФ (Бэкуса-Наура формы, 1960, Алгол-60).
Пример.
<цифра> ::= 0|1|2|3|4|5|6|7|8|9 <идентификатор> ::= <буква> | <идентификатор><буква> | <идентификатор><цифра>
0, 1, ... 9
- называют терминалами (лексемами) — это "конечные символы", т.е. по умолчанию известные в ЯП.
<цифра>
- так называемый нетерминал (нетерминальный символ).
- Он определяется через терминалы, другие нетерминалы и самого себя. Причем в последнем случае правило задания нетерминала называется рекурсивным (как определение нетерминала <идентификатор>)
- РБНФ (Расширенные БНФ)
- [] — 0 или 1 повторение.
- {} — 0 и более повторений
Пример.
<идентификатор> ::= <буква> {<буква> | <цифра>}
- Синтаксические диаграммы (Вирт, Паскаль)
Грамматика языка — совокупность всех синтаксических правил данного ЯП, обычно заданных в форме БНФ.
- Грамматика не учитывает все виды ошибок, в ЯП формулируются дополнительные семантические правила.
Замечание 1. Способы 1-3 эквивалентны.
Замечание 2. Синтаксис определяет лексемы языка.
Лексемы Паскаля
- спецсимволы: := += *
- ключевые слова (begin, end, if, for)
- идентификаторы (a, b1)
- константы (2, 'ABC', #5)
- комментарии (3 вида)
- {...}
- (*...*)
- //...
Обзор современных ЯП
(самостоятельно на форуме)
Переменные и их описание
Основные сведения
Переменная — это ячейка памяти компьютера, имеющая имя и тип.
- Тип определяет размер переменной и множество принимаемых ею значений.
В языке Pascal любая переменная перед использованием должна быть описана.
Обычно переменные описываются в разделе описаний.
<xh4> Синтаксис в виде РБНФ </xh4>
<программа> ::= [program <имя>;] <раздел описаний> begin <операторы> end. <операторы> ::= <оператор>{; <оператор>} <раздел описаний> ::= {<секция раздела описаний>} <секция раздела описаний> ::= <секция описания переменных> | <с.о. констант> | <с.о. типов> | <с.о. подпрограмм>...
Пример секции описания переменных.
var
a,b: real;
i: integer;
<секция описания переменных> ::= var<подсекция>{< подсекция>} <подсекция> ::= <список имен>: <тип>; <список имен> ::= <имя>{,<имя>} <тип> ::= <имя>
Внутриблочные переменные
В PascalABC.NET возможно внутриблочное описание переменных:
begin
var i,j: integer;
var r: real := 5.2;
var Pi := 3.14;
В последнем случае происходит автоопределение типов.
Типы
- Целые
- integer (4 байта)
- shortint (1)
- smallint (2)
- int64 (8)
- Вещественные
- real (8)
- single (4)
- Символьные
- char (2 — Unicode)
- Строковые
- string
- string[200]
- shortstring = string[255]
- Логический
- boolean (1) | [True False]