Выбери формат для чтения
Загружаем конспект в формате docx
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Лекция 1. Понятие алгоритма
Способы записи алгоритмов
1. Словесный способ
Представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке. Словесный способ не имеет широкого распространения, так как такие описания: строго не формализуемы; страдают многословностью записей; допускают неоднозначность толкования отдельных предписаний.
2. Графический способ.
Представление алгоритмов является более компактным и наглядным по сравнению со словесным. При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Такое графическое представление называется схемой алгоритма или блок-схемой.
3. Запись на алгоритмическом языке
Словарь перехода от символов языка блок-схем к операторам алгор. языка
Блок-схемы позволяют представить алгоритм наиболее наглядно. Алгоритм на языке блок-схем записывается в виде последовательности блоков и соединительных линий, указывающих направление и последовательность выполнения алгоритма. Правила выполнения блок-схем определяются: ГОСТ 19.701-90 (ИСО 5807-85) - Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.
Понятие алгоритмического языка
Язык структурно состоит из трех компонентов:
1). Символы языка – неделимые компоненты языка, алфавит языка.
2). Синтаксис языка – система формальных правил записи структур языка (слов, программ).
3). Семантика – смысловое понятие структуры языка.
Синтаксис алгоритмических языков
Алфавит языка служит для построения слов, которые называются лексемами (лексическими единицами), с помощью которых составляются операнды, выражения, операторы программы. Различают пять типов лексем: идентификаторы, ключевые слова, знаки (символы) операций, литералы, разделители.
Синтаксис языка описывается формально или неформально. Для формальной записи синтаксиса используют: метаязык (язык, используемый для описания других языков) предложенный Бекусом и Науром –Бекуса-Наура форма (БНФ); синтаксические диаграммы.
Расширенная форма Бэкуса-Наура (англ. Extended Backus-Naur Form, EBNF) — формальная система определения синтаксиса, в которой одни синтаксические категории последовательно определяются через другие. Используется для описания контекстно-свободных формальных грамматик. Предложена Никлаусом Виртом. Является расширенной переработкой форм Бэкуса-Наура, отличается от БНФ более «ёмкими» конструкциями, позволяющими при той же выразительной способности упростить и сократить в объёме описание.
Синтаксическая диаграмма — это направленный граф с одним входным ребром и одним выходным ребром и помеченными вершинами. Синтаксическая диаграмма задаёт язык.
Алфавит алгоритмического языка Паскаль
Символика всех алгоритмических языков состоит из букв, цифр и спец.символов (знаки операций, синтаксические знаки, ключевые (служебные, зарезервированные) слова).
В алфавит языка Pascal входят:
1. Латинские строчные и прописные буквы
A, B, C . . .Z, a, b ,c, . . . z
2. Цифры
0, 1, …9
3. Символ подчеркивания
“_”
4. Символ «пробел»
Является разделителем (код 32)
5. Символы с кодами ASCII от 0 до 31 (управляющие коды)
Непечатные
6. Специальные символы, участвующие в построении конструкций языка
+ * / = < > [ ] . , ( ) ; : ^ @ { } $ # ‘
7. Составные символы, рассматриваемые как единое целое (пробелы между ними не допустимы)
<= >= := (* *) (. .) ..
Идентификаторы. Правила построения идентификаторов
Идентификаторы (ИД) – все имена, которые пользователь использует в программе для обозначения каких-либо понятий. ИД позволяет обращаться к данным, выделяя их определенным образом. ИД это имена типов, переменных, констант, процедур, функций, модулей, меток. Для правильного построения ИД необходимо соблюдать следующие правила:
Правила 1, 2, 3.1. строго контролируются компилятором, поэтому при их нарушении компилятором будет выдано сообщение об ошибке и трансляция программы будет прервана. Остальные правила компилятор не контролирует, но соблюдать их желательно, так как они позволяют улучшить «читабельность» программы и избежать семантических (смысловых) ошибок (правило 3.2.).
Ключевое слово – последовательность символов, имеющая особый, раз и навсегда установленный смысл в данном языке. Ключевые слова используются в конструкциях языка только в определенных синтаксисом местах.
Разделители
Лексемы разделяются разделителями. Этой же цели служит множество пробельных символов, к числу которых относятся пробел, символы горизонтальной и вертикальной табуляции, символ новой строки, перевода формата и комментарии. Кроме того, к числу разделителей относятся следующие последовательности специальных символов:
Литералы
Это особая категория слов языка. Существует два типа литералов: числовые и символьные. Числовые делят на целочисленные и вещественные.
Целочисленные литералы
Целочисленные литералы позволяют эффективно использовать память, увеличивать быстродействие и точность расчетов.
Целые числа представляются с помощью специально для них предназначенных различных типов данных, отличающихся друг от друга количеством разрядов и наличием или отсутствием знакового разряда.
При хранении положительных чисел в беззнаковых целых типах все разряды отводятся для записи двоичного представления числа. В к-разрядной сетке может храниться 2к различных значений. Значит, в 16-разрядной сетке (2 байта) можно хранить 2 16 =65 536
САМОСТОЯТЕЛЬНО: заполнить таблицу Целочисленных типов.
Представление числа
Паскаль
тип
диапазон
1 байт
2 байт
4 байт
Вещественные типы
Вещественный литерал служит для отображения вещественных значений. Он фиксирует запись соответствующего значения в обычной десятичной или научной нотациях. В научной нотации мантисса отделяется от порядка литерой E или e). Для Си непосредственно за литералом могут располагаться один из двух специальных суффиксов: F (или f) и L или l).
При записи вещественных чисел учитывают точность их представления, т.е. количество значащих цифр, которые удается сохранить в ограниченном числе разрядов. Основное различие между вещественными типами данных в количестве разрядов, отводимых под переменную того или иного типа. Чем выше точность вычислений, тем более длинный тип данных надо использовать.
Организация диалога. Простейший ввод-вывод
Организация диалога между ЭВМ и пользователем является непременным условием качественной программы. Организовать вывод текстовой информации можно при помощи специальных слов – операторов. В Pascal информацию можно вывести на экран при помощи операторов WriteLn (Write Line - записать строку)
WriteLn (‘текст’),
Что означает, вывести (Write) строку символов ‘текст’ на экран и перевести курсор на начало следующей строки Line экрана.
Оператор Write (‘текст’) без Ln не переводит курсор после вывода информации, т.е. информация выводится в одну и туже строку, следом за уже выведенным текстом, пока хватит места, а затем вывод продолжается уже на следующей строке экрана.
WriteLn без параметров просто переведет курсор на начало следующей строки.
Для обмена информацией между программой и пользователем необходимо иметь возможность вводить информацию с клавиатуры. Для этих целей служит оператор
REadLn (список)
Read (список) В операторе REadLn в круглых скобках указываются имена переменных, которым будут присвоены вводимые с клавиатуры значения.
Общая структура программы на Pascal
Program <Имя> (Input,Output); {заголовок не является обязательным}
{ Декларативная часть программы}Раздел объявлений и соглашений
Uses <Список подключаемых библиотек>;
Label <Список меток>;
Const <Список констант>;
Type <Список типов>;
Var <Список глобальных переменных программы>;
{ Определения}Раздел текстов процедур и функций
Procedure
{Процедуры с заголовками и возможно «телами» процедур}
Function
{Функции с заголовками и возможно «телами» функций}
{ Исполнимая часть программы}раздел основного блока
Begin
< Тело программы >;
End.
Комментарии
Помимо отступов, большие логически замкнутые блоки программы удобно разделять строками-комментариями, содержащими информацию о смысле последующего блока. Комментарий - это строка (или несколько строк) из произвольных символов, заключенная в фигурные скобки:
{ комментарий }
Другой вариант оформления комментария:
(* комментарий *)
Внутри самого комментария символы } или *) встречаться не должны.
Во время компилирования программы комментарии игнорируются. Следовательно, их можно добавлять в любом месте программы. Можно даже разорвать оператор вставкой комментария. Кроме того, все, что находится после ключевого слова end., завершающего текст программы, компилятор тоже воспринимает как комментарий.
Примеры комментариев
{ Комментарий }
(* Так тоже можно *)
(* И так {тоже} можно *)
{ А (* так } нельзя *)
{ Такое {вложение} не использовать!!! }