Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорный конспект по программированию (наиболее....doc
Скачиваний:
28
Добавлен:
27.10.2018
Размер:
2.51 Mб
Скачать
      1. Программа как совокупность операторов. Виды операторов

Текст программы – это совокупность операторов и комментариев. Структура текста программы представлена на рис.3.4.

Рис. 3.4 Составляющие текста программы

Арифметические операции над числовыми данными

Арифметические выражения состоят из арифметических операторов (таблица 3.9) и операндов (переменных и констант).

Пример: b*2 + с/3, b* (2 + с) – 3.

Таблица 3.9 Арифметические операторы

Арифметические операторы

Действие оператора

+

сложение

-

вычитание

*

умножение

/

деление

Логические операции и операции сравнения

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

Таблица 3.10 Операторы сравнения

Операторы сравнения

Варианты написания

Бейсик, Паскаль

Си++

Равно

=

==

Не равно

<>

!=

Меньше

<

<

Меньше или равно

<=

<=

Больше

>

>

Больше или равно

>=

>=

Таблица 3.11 Логические операции

Приоритет

Логические операторы

Обозначение

Бейсик

Паскаль

Си++

1

НЕ

NOT

not

!

2

И

AND

and

&&

3

ИЛИ

OR

or

||

Разделение и группировка операторов

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

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

Таблица 3.12 Группировка операторов с помощью логических скобок

Операторы

Группы операторов

Бейсик

Паскаль

Си++

Разделение операторов

: (двоеточие)

; (точка с запятой)

; (точка с запятой)

Пример

а23 = а22 (12) + 1: b1 = b1 - 1

а := b*2 + с; d := (е[8] - f)*2.2;

х[5] = у/3.33; у = z[0] - 0.001;

Группировка операторов (блок) - логические скобки

Нет

begin

тело блока

end;

{

тело блока

};

Комментарии

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

Таблица 3.13 Обозначения комментариев

Комментарии

Обозначение

Бейсик

Паскаль

Си++

Однострочный комментарий

REM или '

//

//

Пример

Х = 5 ' комментарий до конца строки

Х := 5; // комментарий до конца строки

Многострочный комментарий

нет

{} или (* *)

/**/

Пример

{это комментарий языка Паскаль

(* а это вложенный комментарий *)}

/*

это комментарий

языка Си++

*/

Операторы управления программой

Условный оператор (условные вычисления)

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

Синтаксис условного оператора примерно одинаков во всех языках программирования. Он представляет собой конструкцию (таблица 3.14):

если условие истинно то

выполнить оператор-1

иначе

выполнить оператор-2

Таблица 3.14 Синтаксис условного оператора

Условный оператор

Обозначение

Бейсик

Паскаль

Си++

Синтаксис

IF условие THEN оператор-1

ELSE

оператор-2

END IF

if условие then

оператор-1

else

оператор-2;

if( условие)

оператор-1

else

оператор-2;

Пример полного условного оператора

IF А>0 THEN

А = О

ELSE

А = -1

END IF

if а > 0 then

а := О

else

а := -1;

if( а > 0 )

а = О

else

a = -1;

Пример неполного условного оператора

IF х < 0 THEN

У = х / 2

х = 1

END IF

if х < 0 then

begin

у := х / 2;

х := 1;

end

if( х < 0 )

{

у = х / 2;

х = 1;

);

Операторы повторяющихся вычислений

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

  • с фиксированным числом повторений,

  • условные операторы цикла.

Оператор цикла включает:

  • заголовок цикла, определяющий число повторений,

  • тело цикла – повторяемый оператор или блока операторов.

Оператор цикла с фиксированным числом повторений

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

Заголовок оператора состоит из трех частей:

  • инициализация переменной-счетчика или параметра цикла (присваивание ей начального значения),

  • определение конечного значения счетчика,

  • приращение счетчика, определяющее шаг изменения значения счетчика после каждого выполнения тела цикла.

Описание оператора цикла с фиксированным числом повторений представлено в таблице 3.15.

Таблица 3.15 Описание оператора цикла с фиксированным числом повторений

Оператор цикла с фиксированным числом повторений

Обозначение

Бейсик

Паскаль

Си++

Синтаксис

FOR счетчик = начальное_значение ТО конечное_значение STEP приращение

тело цикла

группа операторов

NEXT

for счетчик := начальное_значение to конечное_значение do

оператор или блок операторов;

for( счетчик = начальное_значение; условие_завершения; счетчик = счетчик + приращение)

оператор или блок операторов;

Комментария

Если приращение не указывать, то считается, что оно равно 1

Приращение всегда равно 1

Примеры инициализации тысячи элементов массива

FOR I :=1 TO 1000

А(I) := 0

NEXT

for i := 1 to 1000

do

a[i] := 0;

for( i = 0; i < 1000; i = i + 1 )

a[i] = 0;

Условный оператор цикла

Число повторений заранее неизвестно – надо выполнять цикл, пока не произойдет некоторое событие, например, пользователь нажмет на кнопку или точность вычислений уложится в заданный диапазон и т. д. В таких ситуациях заголовок цикла включает только условие (логическое выражение) – пока его значение равно true, цикл будет выполняться. Описание условного оператора цикла представлено в таблице 3.16.

Таблица 3.16 Описание условного оператора цикла

Условный оператор цикла

Обозначение

Бейсик

Паскаль

Си++

Синтаксис

DO WHILE условие

группа операторов

LOOP

while условие do

оператор или группа операторов;

While if (условие)

оператор или группа операторов;

Примеры

DO WHILE A > В

А = А - 0.01

LOOP

while a > b do

а := а - 0.01;

while( а > b )

а = а - 0 .01;

Примеры зацикливания

а = 0; b = 1;

while( а < b )

а = а – 0.01

while true do

begin // тело цикла

end;

Комментарии

Исходное значение переменной а меньше значения переменной b, и это значение будет только уменьшаться. Цикл никогда не закончится

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

Операторы ввода данных и вывода результатов работы программы

Для организации интерактивного общения программы с пользователем в реальном масштабе времени предназначены средства для ввода данных из файлов и сохранения данных в файлах. Интерактивное общение реализуется с помощью RAD-систем, позволяющих быстро спроектировать пользовательский интерфейс. Ввод и вывод информации осуществляется в разных языках по-разному. В Паскале и Бейсике есть операторы для такой работы, в Си++ они выделены в специальные библиотеки. Введен также специальный тип данных «файл» (FILE).

Работа с файлами происходит в три этапа:

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

2. Выполняется считывание, обновление или удаление записей в файле.

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

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

Таблица 3.17 Описание работы операторов ввода-вывода

Ввод-вывод

Обозначение

Паскаль

Си++

Устройства ввода-вывода

Синтаксис команды ВВОД

READ();

>>

Пример

Var x: Integer;

Read(x);

Int x;

Cin>>x;

Комментарий

Ввод числа с клавиатуры и сохранение его в x

Синтаксис команды ВЫВОД

Write();

<<

Пример

Var x: Integer;

x:= 25;

Write (‘Значение переменной x=’, x)

Int x;

x=25;

Cout<< “Значение переменной x=”<<x;

Комментарий

Вывод содержимого переменной x на экран

Ввод (чтение) данных из файла в память

Синтаксис

открытия файла для ввода из него данных в память

Var f:Text;

ASSIGN (f, “имя_файла.расширение”);

RESET(f);

READ (f, переменная);

CLOSE (f);

Ifstream in_file(“имя_файла.расширение”);

Пример

Ввод данных в память из открытого файла

Var f:Text;

a, b, c: integer;

ASSIGN (f, “file.txt”);

RESET(f);

READ (f, a, b, c);

CLOSE (f);

Ifstream in_file (“file1.txt”);

in_file>>a>>b>>c;

Комментарий

Из файла “File.txt” вводятся три первые числа и запоминаются в переменных a, b, c

Из файла “File1.txt” вводятся три первые строки и запоминаются в переменных a, b, c

Вывод (запись) данных из памяти в файл

Синтаксис

открытия файла для добавления в него записи

Var f:Text;

a, b, c: integer;

Assign (f, “имя_файла.расширение”);

Append(f);

WriteLn (f, “текст”);

CLOSE (f);

Ofstream out_file(“имя_файла.расширение”,ios::app);

Пример

Добавление записей в существующий файл

Var f:Text;

a, b, c: integer;

Assign (f, “File.txt”);

Append(f);

WriteLn (f, “текст”);

CLOSE (f);

ofstream out_file("File.txt", ios::app) ;

out_file<<"Запись в файл." <<endl;

out_fi1е<<"Режим добавления."<<endl;

out_file.close();

Комментарий

В существующий файл “File.txt” добавляется “текст”

В существующий файл “File.txt” добавляется текст: "Запись в файл. Режим добавления"

Синтаксис

создания / обновления файла для записи данных из памяти

Var f:Text;

a, b, c: integer;

Assign (f, “имя_файла.расширение”);

Rewrite(f);

WriteLn (f, “текст”);

CLOSE (f);

Ofstream out_file(“имя_файла.расширение”,ios::out);

Пример

Создание файла и запись в него

Var f:Text;

a, b, c: integer;

Assign (f, “File.txt”);

Rewrite (f);

WriteLn (f, “текст”);

CLOSE (f);

Ofstream out_file(“file1.txt” ”,ios::out);

out_file<<”Запись в файл”<<endl;

out_file<<”Режим создания”<<endl;

out_file.close();

Комментарий

Создается файл “File.txt” и в него записывается “текст”. Если файл существовал, его содержимое заменяется на “текст”

В существующий файл “File.txt” добавляется текст: "Запись в файл. Режим добавления"