- •Конспект лекций
- •Тема 1. Программные средства пк. Основы алгоритмизации задач.
- •Тема 2. Программирование на базовом процедурно-ориентированном алгоритмическом зыке. Классификация операторов алгоритмического языка. Оператор присваивания. Операторы управления. (2 часа)
- •Тема 3. Описание линейных и разветвляющихся структур алгоритмов. Программирование разветвляющихся структур.(1 часа)
- •Тема 4. Организация выполнения программ на пк. Структуры данных: массивы. Множества. Записи. (2 часа)
- •Тема 5. Организация алгоритмов циклической структуры. Алгоритмическое описание вложенных циклических структур. (1 часа)
- •Оператор цикла с параметром
- •Оператор цикла с постусловием
- •Примеры бесконечных циклов
- •Тема 6. Программирование ввода-вывода массивов. Строковые данные. Библиотека стандартных подпрограмм. (1 часа)
- •Тема 7. Подпрограммы, их классификация. (1 часа)
- •Параметры-значения
- •Тема 8. Алгоритмы поиска и сортировки. (1 часа)
- •Тема 9. Программирование в среде delphi. (1 часа)
- •Тема 10. Работа с файлами. Различные типы файлов.
- •Тема 11. Динамические структуры данных. Указатели. Работа с очередями и стеком. (2 часа)
- •Добавление в конец списка
- •Рекурсивная процедура добавления элемента в список
- •Включение в список
- •Рекурсивная процедура удаления элемента из списка
- •Тема 12. Машинная графика.Примеры программ с различной структурной организацией. (1 часа)
- •Литература
Тема 2. Программирование на базовом процедурно-ориентированном алгоритмическом зыке. Классификация операторов алгоритмического языка. Оператор присваивания. Операторы управления. (2 часа)
План лекции 2:
Цели и задачи дисциплины "Алгоритмизация и технология программирования".
Алфавит языка.
Правила записи основных объектов языка.
Типы данных. Константы.
Переменные. Метки.
Использованный ранее неформальный способ описания алгоритмов отличается следующими недостатками:
громоздкость и излишняя многословность;
неоднозначность понимания.
Для представления, улучшения читаемости и для простоты представления алгоритмов, которые будут выполняться на компьютере, применяются алгоритмические языки (языки программирования).
Запись алгоритма на языке программирования называется программой. Pascal – разработан в 1968–1971 годах Никлаусом Виртом в Цюрихском Институте Информатики (Швейцария).
Цель-овладеть инструментом для обучения программированию как систематической дисциплине. Обнаружилась чрезвычайная эффективность при применении и надежность программирования.
При конструировании алгоритмического языка необходимо:
исходить из некоторого набора вычислительных структур (структур данных);
вводить как составные операции, так и составные (структурированные) объекты;
выбрать форму, удобную как для человека, который описывает алгоритм, так и для человека, который должен будет читать и понимать этот алгоритм, – форму, соответствующую кругу человеческих понятий и представлений.
Три составляющие (любого) языка: алфавит, синтаксис и семантика.
Алфавит – набор основных символов, «букв алфавита», никакие другие символы в предложениях языка не допускаются.
Основные символы языка (лексемы) – либо отдельные литеры на клавиатуре, либо их некоторые комбинации.
<лексема>::= <буква>|<цифра>|<спецсимвол>
<буква>::= a|b|...|z|A|B|...|Z|_
<цифра>::= 1|2|3|4|5|6|7|8|9|0
<спецсимвол>::= <знак арифметической операции>|
<знак операции сравнение>|
<разделитель>|
<служебное слово>
<знак арифметической операции>::= *| /| +| –
<знак операции сравнения>::= =| <>| <| >| <=| >=
<разделитель>::= .| ,| ;| :| (| )|{| }|{| }| ^| '| #| $| @
Служебные слова – «зарезервированные» слова – служат для определенных целей.
<служебные слова>::= begin| end| var| const| if| then| else| function| for|......
Синтаксические диаграммы графически изображают структуру всех тех конструкций, которые могут быть значением метапеременной языка, соответствующей данному понятию.
Пример определения конструкций произвольной длины:
Другой вариант определения:
В общем случае рекурсии не избежать. Для примера опишем конструкции следующего вида (t), ((t)), (((t))), ((((t)))),... .
<слово> ::= (t) | (<слово>)
Правильное определение:
С любым элементом данных, используемым в алгоритмическом языке, связано такое понятие языка как переменная. Любая переменная имеет имя (обозначение) и значение.
Имя переменной в Паскале синтаксически описывается с помощью идентификаторов:
<идентификатор>::= <буква>{<цифра>|<буква>}
Длина идентификатора произвольна, но компилятор с языка Турбо-Паскаль воспринимает только первые 63 символа.
Пример описания переменных:
var
a:integer;
x,y,z:real;
Sinus:real;
Пример описания констант:
const
One=1;
HighLimit=1000;
pi=3.14159265358;
Тип константы определяется по ее значению.
Схема программы:
const
<описания констант>
var
<описания переменных>
begin
<операторы>
end.
План лекции 3:
Выражения. Арифметические и логические выражения.
Оператор присваивания. Операторы управления.
Организация ввода-вывода данных. Структура программы.
Переход от схемы алгоритма к схеме программы.
Выражение представляет собой формальное правило для вычисления некоторого (нового) значения. Понятие выражения присутствует практически в любом достаточно развитом языке программирования, а синтаксические правила для построения выражений очень похожи в различных языках.
В самом общем случае можно сказать, что выражения строятся из операндов, знаков операций и круглых скобок. Переменные и константы сами по себе являются частным случаем выражений.
Операнды представляют собой «элементарные» значения; ими могут быть переменные, константы, вызовы функций.
Примеры выражений:
a+b+c*2
a/b/c
7-a*(sin(x)+2)
a=b
(2>3)=(7<>10)
pred('x')<x
(not(2>3))or(1=1)
true<=false
Значение выражения вычисляется во время вычисления. Мы говорим о выражениях целого, вещественного, булевского и других типов, имея в виду тип значения, вычисляемого данным выражением. Тип выражения определяется синтаксически, исходя из типов операндов и операций.
Поэтому выражения должны быть синтаксически правильными.
Примеры неправильных выражений:
2**3
e==3
(2+1))
true+false
not (a) - недопустимо, если a не булевского типа.
При записи алгоритма следует помнить правило: вся программа есть одна длинная строка. Разбиение ее на части необходимо лишь для нашего удобства. Многоэтажные формулы или переменные с индексами должны быть записаны в одну строку:
Это ограничение также связано с тем, что машина может “читать” только последовательность знаков.
X
:= SIN (A), а также использовать любую из
стандартных функций: COS (X), LN (X), SQRT (X),
EXP (X), ABS (X) и т.д. При этом
F := (1 – SQRT(X)) / (SIN (2 * X) – COS (X / 2)).
В результате выполнения оператора присваивания переменная получает значение выражения.
<оператор присваивания> ::= <переменная>:=<выражение>
Выражение в правой части должно иметь тот же тип, что и переменная.
const
pi=3.14159;
var
sym,alpha,beta:char;
x,a,b,c,r:real;
i:integer;
begin
.........
x:=0;
i:=i+1; {пример использования предыдущего значения переменной}
c:=sqrt(a*a+b*b);
sym:='+';
alpha:=sym;
Идентификатор |
Описание типа |
Множество допустимых значений |
Shortint |
8-битный целый со знаком |
–128…127 |
Longint |
32-битный целый со знаком |
–2147483648...2147483647 |
Byte |
8-битный целый без знака |
0…255 |
Word |
16-битный целый без знака |
0…65535 |
DIV – деление нацело с отбрасыванием остатка (нахождение целой части результата);
MOD – нахождение остатка от деления.
Для выполнения операций ввода-вывода служат четыре процедуры: read, readln, write, writeln.
Процедура чтения read обеспечивает ввод числовых данных, символов и некоторых других типов данных с клавиатуры, в результате чего эти данные становятся значениями переменных.
Вызов процедуры: read(X1,X2,...,XN);
где X1,X2,...,XN – переменные допустимых типов данных.
Используя служебные слова begin и end, можно из последовательности операторов сделать составной оператор:
begin
S1;
S2;
.....
SN
end
В Паскале разрешена печать арифметических и символьных (литерных) данных, причем выражением для вывода может быть строка литер, заключенная в апострофы. При печати апострофов не будет.
Пример.
PROGRAM P (INPUT, OUTPUT);
VAR A, B, X: REAL;
BEGIN
WRITE (‘Введи A’);
READ (A);
WRITE (‘Введи B’);
READ (B);
X := A*B-A;
WRITE (‘X=’,X);
END.
Значения выводятся в той форме, в какой они описаны, например,
- 2.300000Е+05 - для вещественных чисел.
Для удобства чтения можно указать формат выводимых данных:
WRITE (X:2); - для целых,
WRITE (Y:10:2); - для вещественных (10 – общее количество цифр, 2 – количество цифр в дробной части).
Все выводимые данные печатаются в одну строку. Если нужно перейти на следующую строку до окончания предыдущей, пользуются оператором WRITELN, общий вид которого
WRITELN (<список вывода>);
Оператор осуществляет переход к новой строке после печати значений списка.
