- •Программирование на Турбо Паскале
- •Вещественный тип данных
- •Символы и строки.
- •Операции и их приоритет
- •Процедура ввода
- •Процедура вывода
- •Оператор варианта
- •Процедуры и функции
- •Массивы
- •Упакованные массивы
- •Множества
- •Файловые типы данных
- •Операции ввода-вывода
- •Перемещения по файлу
- •Специальные операции
- •Работа с текстовыми файлами
- •Комбинированный тип данных
- •Оператор with
- •Переменная структура записи
Процедура ввода
Процедура ввода имеет один из видов:
-
read(<список>);
где список – это перечень переменных, разделенных друг от друга запятой, в которые вводятся данные с клавиатуры. При этом формируется стандартный текстовый файл input, который мы видим на экране дисплея. При вводе данных с клавиатуры необходимо разделять их пробелом. После набора всех значений, соответствующих списку ввода, необходимо нажать клавишу Enter (количество введенных значений и их тип должны соответствовать количеству и типу переменных в списке ввода). После ввода всех значений текущий указатель остается на той же строке в текущем стандартном файле input.
-
readln(<список>);
Оператор аналогичен первому оператору ввода, но после ввода всех значений текущий указатель в стандартном файле ввода переходит на начало следующей строки. При вводе данных в этом виде оператора после каждого значения необходимо нажимать клавишу Enter.
-
readln;
Пустой оператор обозначает переход текущего указателя на начало следующей строки в стандартном файле ввода (необходимо нажать клавишу Enter).
Процедура вывода
Процедура вывода имеет один из видов:
-
write(<список>);
где список – это перечень переменных или констант, разделенных друг от друга запятой, данные из которых выводятся на экран дисплея в одну строку. После вывода всей информации курсор остается в той же строке .
При этом формируется стандартный текстовый файл вывода output.
-
writeln(<список>);
Оператор аналогичен первому оператору вывода, но после вывода всех значений текущий указатель в стандартном файле вывода устанавливается на начало следующей строки.
-
writeln;
Переход на начало следующей строки.
-
writeln(<элемент>:<ширина>,<элемент>:<ширина>,…);
где <элемент> - это то, что нужно вывести на экран: <ширина> - количество символов, выделенных для вывода элемента.
Для того, чтобы значения, выводимые на экран, отделялись друг от друга пробелами, используют запись оператора вывода, содержащую ширину поля. Например, пусть имеются значения переменных
A:=4; D:=-14: h:=’abcdef, которые необходимо вывести на экран Рассмотрим несколько вариантов вывода:
А). writeln(A,D,h);
Б). writeln(A,’ ‘,D,h:4);
В). writeln(A,D:4,h:8);
После выполнения операторов получим:
4-14abcdef {A}
4 -14abcgef {Б}
4 -14 abcdef {В}
Из приведенных примеров видно, что выводимые значения выравниваются справа, т.е., если выводимых на экран символов меньше, чем заданная ширина поля, то в начале выделенного поля выводятся пробелы.
Если ширина поля меньше, чем количество выводимых символов, то паскаль увеличивает ширину до минимально – необходимого. При выводе вещественных чисел, они выводятся на экран в экспоненциальной форме. Например, a:=-138.76;
Writeln(a);
Результат:
-0.13876000000Е0003
-
writeln(<элемент>:<ширина>:<количество>,<элемент>:<ширина>,<количество>…); - для вывода на экран вещественных чисел
где <элемент> - это то, что нужно вывести на экран:<ширина> - количество символов, выделенных для вывода элемента, >,<количество> - количество знаков после запятой в числе с фиксированной точкой.
Например, пусть необходимо вывести на печать следующие переменные: a:=12.5; b:=34; c:=-16.75.
Рассмотрим несколько вариантов вывода
a). Writeln(a,’ ‘,b,’ ‘,c);
b) Writeln(a:4:1,’ ‘,b:2,c:5:2);
c). Writeln(a:4:1,b:4,c:7:2);
Результат:
0.125000000000е0002 34 -0.16750000000e0002 {a}
0.125000000000е000234-0.16750000000e0002 {b}
12.5 34 -16.75 {c}
Условные операторы
Оператор if
Оператор условного перехода if имеет вид
if <условие>
then <оператор 1>
else <оператор 2>;
где <условие> - это любое выражение логического типа, принимающее значение true или false.
Если условие справедливо, т.е. принимает значение true, то выполняется оператор 1, в противном случае – оператор 2.
Веточка else (иначе) является необязательной. При ее отсутствии в том случае, если условие ложно, управление передается следующему после if оператору.
Если в одной из ветвей оператора условного перехода нужно выполнить несколько операторов, то используется составной оператор, имеющий вид:
begin
<оператор 1>;
<оператор 2>;
…………….
<оператор N>
end;
Пример
Проверить, можно ли из отрезков с длинами х, у, z (х, у, z >0) построить треугольник.
program tree;
var
x, y, z: real;
r: boolean;
begin
writeln(‘ Ввести три отрезка х, у, z’);
readln(x, y, z);
writeln(‘x=’,x:4:1, ‘ y=’,y:4:1,’ z=’,z:4:1);
r:=(x+y>z) and (x+z>y) and (y+z>x);
if r
then
writeln(‘Треугольник можно построить’)
else
writeln(‘Треугольник нельзя построить’);
readln;
end.
В операторе условного перехода if после ключевых слов then или else может быть использован также оператор условного перехода. В этом случае говорят, оператор условного перехода имеет вложенную конструкцию: Такая конструкция может иметь вид:
1). If <условие 1>
then <оператор 1>
else
if <условие 2>
then <оператор 2>
else <оператор 3>;
Если <условие 1> - истинно, то выполняется <оператор 1>.
Если <условие 1> - ложно, то проверяется <условие 2>; если <условие 2> - истинно, то выполняется оператор 2>, в противном случае - <оператор 3>;
2). If <условие 1>
then
if <условие 2>
then <оператор 1>
else <оператор 2>
else <оператор 3>
Если <условие 1> справедливо, то проверяется <условие 2>. Если <условие 2>. – справедливо, то выполняется <оператор 1>, если <условие 2> - не справедливо, то выполняется <оператор 2>. Если <условие 1> 0 не справедливо, то выполняется <оператор 3>.
3). If <условие 1>
then
if <условие 2>
then <оператор 1>
else <оператор 2>;
В этом виде оператора для <условие 1> отсутствует веточка else.
Пример
Проверить, можно ли из отрезков x, y, z построить треугольник, если
x, y, z – положительны. .Если можно, то вычислить площадь этого треугольника по формуле
,
где
.
program trea1;
uses crt;
const
k:=0.5;
var
x, y, z, p, s: real;
r: Boolean;
begin
writeln(‘Введите три числа’);
readln(x, y, z);
clrscr;
writeln(‘x=’,x:5:1,’ y=’,y:5:1,’ z=’,z:5:1);
if (x>0) and (y>0) and (z>0)
then
if (x+y>z) and (x+z>y) and (y+z>x)
then
begin
writeln(‘Треугольник построить можно’);
p:=k*(x+y+z);
s:=sqrt(p*(p-x)*(p-y)*(p-z));
writeln(‘Площадь треугольника=’,s:6:1);
end {then}
else
writeln(‘Некорректные исходные данные’);
readln;
end.