ЛИНЕЙНЫЕ ПРОГРАММЫ
Программы, в которых используются только простые операторы, называются линейными.
Возникает два вопроса:
1. Что такое оператор?
2. Что такое простой оператор?
ОПЕРАТОРЫ
Операторы предназначены для описания действий, которые будут выполнены при реализации алгоритма. В Турбо Паскале операторы разделяются на две группы: простые и структурные.
Операторы отделяются друг от друга в программе символом «;» (точка с запятой). Точка с запятой не является частью оператора, это разделитель операторов.
Простые операторы- это операторы, которые не содержат в себе других операторов. Простыми операторами являются
Оператор присваивания состоит из идентификатора переменной или пользовательской функции, символа « :=» и выражения.
ИМЯ1:= значение; выражение; ИМЯ2
Если в правой части оператора стоит значение, то переменной с именем ИМЯ1 присвоится это новое значение.
Если в правой части стоит идентификатор, то значение этой переменное присвоится переменной с именем, которое стоит в левой части оператора.
Если в правой части - выражение, то выполнение оператора присваивания приводит к вычислению значения, определяемого выражением, и присваиванию этого значения переменной с именем ИМЯ1.
Допускается присваивание значений не только простых, но и структурированных типов, таких как массивы, записи и множества.
Обязательным является требование, чтобы тип выражения в правой части оператора и тип переменной или результата в левой части оператора были совместимыми по присваиванию.
Оператор вызова процедуры.
С помощью этого оператора активизируется действие процедуры. Он состоит из идентификатора, вызываемой процедуры, непосредственно за которым располагается в круглых скобках список фактических параметров. Оператор процедуры без параметров состоит только из идентификатора процедуры.
ИМЯ_процедуры(параметр1,...,параметрК);
ИМЯ_ процедуры;
Выполнение оператора процедуры приводит к активизации действий, описанных в ее теле. Указанные в операторе фактические параметры должны соответствовать описанным в заголовке процедуры формальным параметрам по типу, количеству и взаиморасположению. При выполнении этого оператора происходит передача фактических параметров соответствующим формальным параметрам
Структурные(сложные) операторы в отличии от простых включают в себя другие операторы и управляют последовательностью их выполнения. В PASCAL структурными операторами являются:
составной оператор;
условные операторы:
3) операторы цикла:
4)оператор для записей with.
Об этом мы поговорим позже.
Разберем линейную задачу:
Определить, есть ли среди цифр заданного трехзначного числа одинаковые.
Идея решения.
Выделить каждую цифру трехзначного числа;
логической переменной дать возможность проверить будут ли в этом числе равные цифры.
Алгоритм решения:
вводим трехзначное число ;
выделим первую цифру как результат деления на 100;
выделим последнюю цифру, как остаток от деления на 10;
отбросим последнюю цифру с помощью целочисленного деления на 10, получаем двухзначное число, состоящее из первой и второй цифры данного числа;
выделим из него последнюю цифру как остаток от деления на 10;
имея три цифры, составим логическое выражение проверки на существование равных цифр;
выведем значение логической переменной.
Программа решения
Program Task1;
var n : longint; {данное число}
a,b,c : 0..9; {переменные для хранения цифр}
z : boolean; {логическая переменная}
begin writeln(‘Введите трехзначное число’);
readln(n);
a:= n div 100; {первая цифра}
c:=n mod 10; {последняя цифра}
n:=n div 10; {отбрасываем последнюю, остается первая и вторая}
b:= n mod 10; {а вот и вторая цифра}
z:= (a=b) or (b=c) or (a=c); {равны ли эти цифры? }
writeln( z); {ответ - true или false }
end.
Теперь организуем работу для этой задачи с файлами. Например, в файле Inp.txt хранится число, а в файл Out.txt запишем результат.
Программа решения
Program Task1;
var n : longint; {данное число}
a,b,c : 0..9; {переменные для хранения цифр}
z : boolean; {логическая переменная}
begin
assign(input,’inp.txt’); reset(input);
assign(output,’out.txt’); rewrite(output);
readln(n);
a:= n div 100; {первая цифра}
c:=n mod 10; {последняя цифра}
n:=n div 10; {отбрасываем последнюю, остается первая и вторая}
b:= n mod 10; {а вот и вторая цифра}
z:= (a=b) or (b=c) or (a=c); {равны ли эти цифры? }
writeln( z); {ответ - true или false }
end.
Вы видите, что сама суть программы не изменилась, только добавились выделенные строки. Если их брать в комментарии, т.е. в фигурные скобки
{ assign(input,’inp.txt’); reset(input);
assign(output,’out.txt’); rewrite(output); }
то ваша программа будет работать с клавиатурой и выводить на экран, если же убрать фигурные скобки, то можно работать с файлами.