Слайд 1Урок4.
Команды ввода и вывода.
Линейные программы
Учитель: Смирнова Гузэль Хадиевна
Гимназия №122, г.
Казань
Слайд 2Урок 4
Наконец-то мы вплотную приступим к программированию. Для усвоения
правил написания основных операторов мы будем решать небольшие задачки, которые
быстрей было бы сделать в тетрадке, чем писать программу. Но для сложной программы у нас не хватает знаний.
Мало программ обходится без ввода данных, и совсем нет таких, которые не выводят полученные результаты. Написать такую программу можно, но кому она понадобится?
Слайд 34.1.Ввод
Для сообщения данных компьютеру служит оператор ввода. Он помещает
вводимое значение переменной в отведенную для него ячейку. Оператор ввода:
READ
(список переменных ) ;
Где список переменных – последовательность имен переменных, разделенных запятыми.
Например, READ (X,Y,Z);
READ (BETA);
Оператор READ останавливает работу программы и ждет, пока пользователь наберет на клавиатуре число и нажмет . Введенное число помещается в оперативную память, в отведенную ячейку, имеющую имя указанное в операторе. Если список ввода содержит несколько имен, то для каждого надо ввести свое значение. Вводимые числа разделяют пробелами или нажатием клавиши .
Слайд 4Заканчивается ввод всегда клавишей . После работы этого оператора курсор
располагается за последним введенным символом, но не переводится на новую
строку. Для перевода курсора на новую строку экрана дисплея после ввода данных, используется оператор
READLN (список переменных );
Оператор READLN отличается от READ еще и тем, что, введя необходимое количество данных, пропускает все остальные, набранные до нажатия клавиши .
Слайд 54.2. Вывод
Для вывода результатов работы программы служит оператор
WRITE(список
вывода);
Список вывода может содержать имена переменных, числовые и текстовые константы,
выражения. Элементы в списке разделяются запятыми. Если указана переменная, то на экран выводится ее значение, константа выводится без изменения, значения выражений вначале вычисляются, а затем высвечиваются на экране.
Вслед за выражением после двоеточия можно указать ширину поля экрана, в котором разместится выводимое значение. Например, оператор WRITE(10:3, 55:6) высветит на экране .10…..55 (точка означает пробел, пустую позицию экрана). Вывод происходит в том месте экрана, где находится курсор.
Слайд 6При выводе вещественных значений можно указать, сколько десятичных цифр следует
сохранить в дробной части числа. Количество цифр указывается вслед за
шириной поля после двоеточия. Например, если Х=3.14159, а Y=2.71468, то оператор WRITE(X:6:2,Y:8:3) высветит на экране ..3.14….2.715.
Чтобы прокомментировать выводимые значения, в список вывода можно помещать строки любых символов, заключенные в апострофы ( одинарные кавычки). Например,
WRITE(‘Ответ:’, Х:4,’км/сек.’).
Слайд 7Эти строки появятся на экране без кавычек. Так при Х=3.5
этот оператор выведет:
Ответ: 3.5 км/сек.
Перевод курсора на новую строку осуществляется
оператором пустого вывода WRITELN;
Если надо перевести курсор после вывода, то применяется оператор
WRITELN(список вывода);
После вывода результатов работы программы на экран система так быстро возвращается в редактор текстов программы, что пользователь не успевает увидеть эти результаты. Чтобы задержать изображение, в конце программы следует ставить оператор пустого ввода READLN;
Слайд 8Задача 1
Пусть требуется найти сумму, произведение и разность двух данных
чисел. Для каждого из чисел надо придумать имя переменной и
указать ее тип. Затем ввести эти числа в отведенные ячейки и, используя возможности оператора вывода напечатать результаты.
При решении задач имена присваиваются не только исходным данным, но и результатам, а также получаемым промежуточным значениям. Поскольку в рассматриваемом примере надо получить три результата, введем для них переменные X,Y,Z. В программе этим переменным будут присвоены значения суммы, произведения и разности двух вводимых чисел.
Слайд 9Блок-схема prim_1
начало
Вывод
Введите 2 числа
ввод a, b
X:=a+b
Y:=a*b
Z:=a-b
Вывод
X, Y, Z
конец
Слайд 10Program prim_1;
Var a,b,x,y,z:real;
Begin
Write(‘введите два числа’);
Readln(a,b);
X:=a+b;
Y:=a*b;
Z:=a-b;
Writeln(‘a+b=’,x);
Writeln(‘a*b=’,y);
Writeln(‘a-b=’,z);
End.
Слайд 12Вызвать программу
Вызвать программу
Слайд 13Задача 2
Составим программу вычисляющую s = а / b и
p=a*b.
program zadacha2_1a;
var a,b,s,p:real;
Begin
writeln('введите число a ');
readln(a);
writeln('введите число b ');
readln(b);
s:=a/b;
p:=a*b;
writeln('а/b
=',s:0:2);
writeln('а*b =',p:0:2);
End.
Слайд 16В данном примере ввод и вывод данных для каждой переменной
осуществляется отдельно. А можно было записать и так:
program zadacha2_1b;
var a,b,s:real;
Begin
writeln('введите
числа a и b');
readln(a,b);
s:=a/b;
p:=a*b;
writeln('а/b = ',s,' а*b = ',p);
End.
Задача 2
Слайд 17Блок-схема prim_1
начало
Вывод
Введите 2 числа
ввод a, b
s:=a/b;
p:=a*b;
Вывод
S,p
конец
Слайд 20В этой задаче использовался вещественный тип числа – real, поэтому
ответ был получен в полулогарифмической форме записи числа. Вспоминаем:
2.5670000000Е+02 следует
понимать 2.567 * 102
3.4906710000Е-03 следует понимать 3.490671 * 10-3.
Если мы хотим при выводе на экран реальных чисел указать определённое число знаков после запятой, то можно воспользоваться форматом вывода writeln(a:n1:n2). Где
n1 - количество знакомест выделенных под всё число;
n2 - количество знакомест выделенных под дробную часть числа.
Например команда writeln(pi) выведет строку:
3.1415926536E+00
Формат вывода
Слайд 21а команда writeln(pi:9:3) выведет строку:
3.142
пропустив перед выводимым числом четыре пробела и выровняв 3.142 (всего 5 знаков) по правому краю девяти знакомест.
Составим программу, выводящую на экран число π.
program zadacha2_2;
Begin
writeln(pi:9:3);
End.
Задача 3
Слайд 24Задача 4. Задана сторона куба. Вычислить объем куба и площадь
боковой поверхности. Блок – схема.
начало
Вывод
Введите сторону куба
ввод a
v:=a*a*a
s:=6*a*a
Вывод
V,S
конец
Слайд 25Изменяя числа в формате вывода(:9:3, :9:2, :17:3, :17:7, :3:7 и
т.д.) просмотрите и проанализируйте полученные результаты.
Задача 4. Задана сторона куба.
Вычислить объем куба и площадь боковой поверхности.
program zadacha2_3;
var a,v,s:real; {описание переменных}
Begin
writeln('Введите сторону куба'); {ввод данных}
read(a);
v:=a*a*a; (*вычисление объёма*)
s:=6*a*a; {вычисление площади поверхности}
{вывод результатов}
writeln('Объём = ',v:8:3,' Площадь поверхности = ',s:8:3);
End.
Слайд 28Задания для самостоятельной работы.
1)Напишите программу, которая запрашивает два числа, находит
остаток от деления первого на второе и выводит результат.
2)Составьте программу
нахождения периметра квадрата, если задана его площадь.
3)Даны два числа. Найти их среднее арифметическое.
4)Найти площадь кольца по заданным внешнему и внутреннему радиусам.
5)Даны катеты прямоугольного треугольника. Найти его периметр.
6)*Поменять местами значения переменных X и Y, не используя дополнительной переменной.
Слайд 29Правильные ответы задания предыдущего урока.
Запись выражений на Паскале:
(A+B)/C+SQR(C)/(A-B)
(X+Y)/3*7/(X-Y)
(A-B)/C/((A+B)/D)
(3+(1/2))+C/SQR(A+B)
A*B/C-D/(A*B)
SQR(X)/Y+SQR(Y)/X
Слайд 30Найдите значения переменных, если это возможно. Учтите, что число 7.0
является вещественным, т.к. оно имеет дробную часть, хотя и равную
нулю. Операции MOD и DIV можно выполнять только над целыми числами (Урок 2):
a) A:=21 DIV 5=4 b) A:= 2 MOD 3=2
B:= 20 MOD 5=0 B:= 36.0 MOD 6 (нельзя делить веществ)
C:= 14 DIV 6.0 (нельзя делить веществ) C:= 81 DIV 0 (деление на 0)
D:= 14 MOD 0 (деление на 0) D:= 38 DIV 6=6
E:= 5 MOD 13=5 E:= 3 DIV 2=1
Слайд 31Найдите значения переменных, если это возможно:
a) A:=SQR(100)=10000 b) A:=sqrt(9)=3.0
B:=sqrt(100)=10.0 B:=SQR(9)=81
C:=SQR(-10)=100 C:=SQRT(-9)
(выр. < 0)
D:=SQRT(-10)(выр <0) D:=SQR(-9)=81
E:=SQR(0.9)=0.81 E:=SQRT(0.0)=0.0
F:=SQRT(0)=0.0 F:=SQR(0.1)=0.01
Слайд 32Найдите значения переменных, если это возможно:
a) A:=ROUND(6.9) =7 b) A:=ROUND(15.39)=15
B:=ROUND(6.48)=6 B:=ROUND(15.8)=16
C:=TRUNC(9.5) =9 C:=TRUNC(-39)=-39
D:=FRAC(9.5) =0.5 D:=FRAC(39)=0.0
E:=INT(9.5) =9.0
E:=INT(39)=0.0
F:=TRUNC(-17) = -17 F:=TRUNC(5.6)=5
G:=FRAC(17) =0.0 G:=FRAC(-0.3)=-0.3
H:=INT(-17) =-17.0 H:=INT(1.25)=1.0
Слайд 33Запишите по правилам языка программирования следующие выражения:
sqrt(sqr(x1)+sqr(x2))
1/(1+1/(2+1/(2+3/5)))
–b+sqrt(sqr(b)-4*a*c)/(2*a)
sqrt(1-sqr(sin(x)))
(-b+1/a)/(2/c)
(sqrt(x+1)+sqrt(x-1))/(2*sqrt(x))
m*g*cos(sqr(a))
1/(1+(a+b)/2)
(a*b+b*c)/(a*b)