Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Алгоритмизация.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
445.44 Кб
Скачать

Тема 2. Программирование на базовом процедурно-ориентированном алгоритмическом зыке. Классификация операторов алгоритмического языка. Оператор присваивания. Операторы управления. (2 часа)

План лекции 2:

  1. Цели и задачи дисциплины "Алгоритмизация и технология программи­рования".

  2. Алфавит языка.

  3. Правила записи основных объектов языка.

  4. Типы данных. Константы.

  5. Переменные. Метки.

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

  • громоздкость и излишняя многословность;

  • неоднозначность понимания.

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

Запись алгоритма на языке программирования называется программой. 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:

  1. Выражения. Арифметические и логические выражения.

  2. Оператор присваивания. Операторы управления.

  3. Организация ввода-вывода данных. Структура программы.

  4. Переход от схемы алгоритма к схеме программы.

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

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

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

Примеры выражений:

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 (<список вывода>);

Оператор осуществляет переход к новой строке после печати значений списка.