Программирование линейных алгоритмов
Линейные программы могут включать в себя операторы присваивания, ввода-вывода, обращения к процедурам.
Оператор присваивания
A:=B;
А – переменная;
В – выражение;
Типы переменной А и значение переменной В должны соответствовать друг другу.
Если переменная А - целого типа, то выражение В тоже должно иметь значение целого типа.
Задачи.
1.Какие из следующих последовательностей символов являются операторами присваивания?
а)X:=Y; б)Min=K+1; в)Summa+1:=W; г)S:=S; д)A:=’****’; е)Rrr=125+1*A ж)Str:=’120*Y’; з)T:=5>Y;
2.Пусть значения переменных Х и У равны, соответственно, 3 и –2, какие значения будут иметь эти переменные после выполнения операторов присваивания?
а) X:=X+2*Y; Y:=Y/2;
в) Y:=-Y; X:=X+Y; Y:=Y+1;
г) X:=1; X:=X+Y;
д) X:=Y; Y:=X;
Операторы ввода-вывода
В общем случае ввод и вывод значений происходит из файлов привязанных к программе. Ввод с клавиатуры и вывод на экран рассматривается в Паскале, как обмен информацией между программой и стандартными файлами с именами Input (клавиатура) и Output (экран), поэтому при вводе с клавиатуры значений и выводе результатов на экран имена этих файлов не указываются.
Оператор вывода
Оператор вывода на экран имеет 3 модификации:
Write(B1,B2,…,Bn);- где
B1,B2,…,Bn – выражения типов: Integer, Char, Real, String, Boolean.
При выполнении оператора значения выражений вычисляются и выводятся в одну строку экрана.
Значения типа Integer - выводятся в обычной форме в виде целого числа.
Значения типа Real – в простейшем случае выводятся в форме с порядком, при этом мантисса содержит 7 цифр.
Пример:
Write(123.456); на экране – 1.234560Е02
Write(-0.000123); на экране – - 1.230000Е-04
Для удобства восприятия вывода существует возможность задания маски. Она задается в следующем виде:
Write(A:N:M);
N – целая константа, обозначающая общее число позиций, отводимых под значение A
М – целая константа, обозначающая число позиций, отводимых под дробную часть.
Пример:
Write(123.456:10:4);
. |
Write(123.456:6:2);
. |
Значения типа Char и String выводятся в виде одного или последовательности символов.
Значения типа Boolean выводятся в виде True или False.
При выводе нескольких значений в одну строку возникает потребность отделять их друг от друга с помощью заданного числа пробелов. Для этого можно использовать элемент списка вывода вида - ’ ’:K – где
К – коэффициент повторения количества необходимых пробелов
Пример:
Write(’X1=’,X1:8:3,’ ’:10,’X2=’,X2:8:3);
Writeln(B1,B2,…,Bn);
Отличается от первого тем, что после вывода последнего значения курсор переводится в начало следующей строки экрана.
Writeln;
Выводит пустую строку.
Задача 1.
Вывести на экран фразу – «Моя первая программа»
Решение:
Program Lin1;
Begin
Writeln(’Моя первая программа’);
End.
Задачи:
1.Какие из следующих последовательностей символов являются операторами вывода:
а) Write(X,Y); б)Writeln(X:Y:Z); в)Writeln г) Write(’Xx’,Xx,’Yy’,Yy); д)Writeln(1+2,3+4,Y/X); е) Writeln(’1+2’,’3+4’,’Y/X’); ж)Writeln(X:=Y,Z);
2.Создать на экране рисунок (использовать любые символы).
Оператор ввода
Оператор ввода значений с клавиатуры имеет вид:
Read(A1,A2,…,An); - где
A1, A2,…,An – имена переменных.
Следует иметь в виду, что вводимые значения не могут быть логическими.
При выполнении этого оператора компилятор приостанавливает свою работу, программист должен набрать значения переменных перечисляемых в списке ввода, учитывая следующие особенности:
- при вводе значений символьных переменных каждый очередной введенный символ становится значением очередной переменной;
- числовые значения должны разделяться пробелами или нажатием клавиши ввода;
- при вводе значений строковых переменных последний вводимый символ полностью включается в значение строковой переменной, поэтому невозможно в одном операторе ввести значение двух строковых переменных так, как нет символа разделяющего одно значение от другого.
-
Readln(B1,B2,…,Bn);
Отличается от первого тем, что после ввода последнего значения курсор переводится в начало следующей строки экрана.
Readln;
Ждет нажатия клавиши ввода.
Задача 2.
Составить программу – «Диалог с компьютером»
Решение:
Program Lin2;
Var A:String;
Begin
Writeln(’Я компьютер, а как зовут тебя?’);
Readln(A);
Writeln(’Очень приятно, ’,A );
End.
Задача 3.
Даны числа A,B,C. Переприсвоить их значения следующим образом: A B C
Исходные данные:
A=10, B=15, C=20
Pезультат:
A=20, B=10, C=15
Решение:
Program Lin3;
Var A,B,C,D:Integer;
Begin
Writeln(’Введите значения переменных A, B, C’);
Read(A,B,C);
D:=C;
C:=B;
B:=A;
A:=D;
Writeln(’A=’,A,’B=’,B,’C=’,C);
End.
Задачи:
1. Какие из следующих последовательностей символов являются операторами
ввода:
а) Write(X,Y); б) Readln(X+Y,Y); в)Read(X,Y); г)Read(’Xx’,Xx,’Yy’,Yy)?
2. Даны числа A,B,C,D. Переприсвоить их значения следующим образом:
A B C D (составить программу).
3. Какие числа будут выведены в результате выполнения последовательности
операторов:
Read(X); X:=X Mod 2; X:=Sqrt(X+1); Write(X,X*2); если в качестве исходного
данного использовалось число:
а) 2; б)1.2; в)6; г)5.4?
4. Вычислить расстояние между двумя точками с данными координатами X1,Y1 и X2,Y2.
5. На предприятии 2-м рабочим выделена премия (N руб). Разделить эту премию между рабочими в зависимости от стажа их работы на предприятии (прямо пропорциональная зависимость). Стаж вводится с клавиатуры.
6. По стороне основания и боковому ребру определить полную площадь поверхности правильной призмы:
а) треугольной; б) четырехугольной; в)шестиугольной.
7. Продолжить программу –«Диалог с компьютером».
8. Дано целое число А. Не используя никаких функций и никаких операций кроме умножения получить:
а) А8 за три операции; б) А10 за четыре операции; в) А7 за четыре операции;
9. Дано число Х. Вычислить выражение 2х4-3х3+4х2-5х+6.Позаботиться об
экономии операций.