Линейные алгоритмы (занятие 1 и 2). Примеры составление программ. Работа с файлами (9 класс)
ЗАНЯТИЕ 1 и 2.
ОБЩИЙ ВИД ПРОГРАММЫ.
ОПИСАНИЕ КОНСТАНТ И ПЕРЕМЕННЫХ .
ТИПЫ ДАННЫХ.
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ.
ВСТРОЕННЫЕ МАТЕМАТИЧЕСКИЕ ФУНКЦИИ.
ОПЕРАТОР ПРИСВАИВАНИЯ, ОПЕРАТОР ВВОДА И ВЫВОДА ДАННЫХ. ЛИНЕЙНЫЕ АЛГОРИТМЫ. ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ.
ВВОД ДАННЫХ С КЛАВИАТУРЫ И ВЫВОД РЕЗУЛЬТАТОВ НА ЭКРАН
ЧТЕНИЕ ДАННЫХ ИЗ ФАЙЛА И ВЫВОД РЕЗУЛЬТАТОВ В ФАЙЛ
ПРАКТИЧЕСКАЯ РАБОТА №1.
ДОМАШНЯЯ РАБОТА (2 ЛЮБЫЕ ЗАДАЧИ С ФАЙЛАМИ, 2 БЕЗ ФАЙЛОВ)
Структура программы в общем виде
program имя программы;
const {объявление констант}
type {объявление типов}
Var {объявление переменных}
begin
{инструкции программы}
end.
Основные типы данных
К основным типам данных языка TURBO PASCAL относятся:
Целые числа(integer и др.)
Символы(char)
Логический(boolean)
Действительные числа(real и др.)
Строки (string или string[целое Число])
Целые числа и числа с плавающей точкой могут быть представлены в различных форматах.
Целые числа
Формат
Диапазон значений
Shortint
-128..128
Integer
-32768..32767
Longint
-2 147 483 648..2 147 483 647
Word
0..65535
Byte
0..255
Действительные числа
Формат
Диапазон значений
Количество значащих цифр
Real
2.9e-39..1.7e38
11-12
Строковый тип
String - строка символов длиной 256 символов.
String[целое число] – строка символов указанной длины.
Описание констант
Const имя константы=значение;
( Например:
Const gi=9.8;
Tort=’Наполеон’;
Sim=’!’;
Sum=0.87;
Описание переменных
Var имя переменной: тип;
(
Например:
Var a,b,d: real;
C:Boolean;
E:integer;
K:12..780;{интервальный тип}
O:char;
Z:’a’..’z’;{интервальный тип}
( Какого типа будут переменные a,b,c,d?
Опишите данные переменные.
А:=12.36;
B:=12;
C:=b*2;
D:=’Игнат’;
Арифметические операции
Арифметические операции
1. div, mod
2. *, /
3. +,-
операции, вычисляющие результат деления нацело первого аргумента на второй и остаток от целочисленного деления соответственно
умножение и деление
операции сложение и вычитание
Определите значение целочисленных переменных после выполнения фрагмента программы:
(Пример1:
S:=215;
B:=S mod 2; {остаток от деления нацело 215 на 2 равно 1, т.е. B:=1;}
C:=S div 2; {результат деления 215 нацело на 2 =107, т.е. с:=107;}
( Пример 2.
а:=15;
b:=17;
c:=a+5; { c:=15+5; c:=20}
a:=b mod a; {a:=17 mod 15; остаток от деления нацело 17 на 15, т.е a:=2}
b:=c; { b получает значение с, b:=20}
1) a=1, b=17, c=17 2) a=2, b=20, c=20 3) a=15, b=15, c=20 4) a=15, b=17, c=20
Встроенные математические функции
Обозначение в математике
Обозначение в Pascal
Примеры записи
1. 13 EMBED Equation.3 1415
sqr(x) или SQR(x)
13 EMBED Equation.3 1415
Sqr(sqr(a)+10)
2. 13 EMBED Equation.3 1415 , x>=0
sqrt(x)
13 EMBED Equation.3 1415
Sqrt(x-8+6*sqr(b))
3. 13 EMBED Equation.3 1415
Abs(x)
13 EMBED Equation.3 1415
Sqrt(abs(a-8))+
Abs(23*b/(x+5))
4. sin x (синус x)
Sin(x)
13 EMBED Equation.3 1415
Sin(sqr(x+5))
5. cos x (косинус x)
Cos(x)
13 EMBED Equation.3 1415
Sqr(cos(x+5))
6. tg x (тангенс x)
Sin(x)/cos(x)
13 EMBED Equation.3 1415
(sin(x+5)/cos(x+5) – sqrt(x))/(cos(abs(x))/sin(abs(x))+2*x)
7. ctg x (котангенс x)
Cos(x)/sin(x)
Основные операторы
Оператор присваивания
Имя переменной:=выражение;
Вычисляется значение выражения и его значение присваивается имени переменной (результат заноситься в память).
Выражение может быть любого типа; переменная должна быть описана в разделе var и она должна быть того же типа, что и значение выражения.
2)Оператор вывода данных
Оператор вывода данных предназначен для вывода результатов работы программы на экран.
А) write(b1,b2,b3,bn); -вывод данных в одну строку, курсор остается в той же самой строке
Б) writeln(b1,b2,b3,..bn); - вывод данных в одну строку, курсор переходит в другую строку
В) Writeln; - вывод пустой строки
В качестве b1,b2,.bn могут быть константы, выражения, имена переменных любого типа.
При выводе используются следующие форматы:
А)
b:m:n
-при выводе вещественного результата,
b- имя переменной, m- число позиций на экране для вывода всего числа, n: число позиций отведенных под дробную часть числа. Чаще всего вместо m,n записывают целые числа.
Б)
b:m
- при выводе данных любого типа(Boolean,integer,char, string и др., кроме вещественного)
(Например:
Writeln(Скоро каникулы’:30);
Writeln(15:2, 20*13-78/2.56:10:2);
A:=45*b+34;
B:=a/12;
Writeln(a=’:5,a:10,’B=’:5,B:15:3);
Оператор ввода данных c клавиатуры
Read(a1,a2,a3,an);
Readln(a1,a2,a3,..an);
В качестве a1,a2,a3an должны использоваться только имена переменных, для которых будут вводиться с клавиатуры значения через пробел.
( Например:
Writeln( введите свое имя’);
Readln(b);
Writeln(Введите число, месяц и год своего рождения’);
Readln(c,d,e);
( Опишите переменные b, c,d,e.
Решение задач линейной структуры
В линейной алгоритмической конструкции операторы выполняются последовательно друг за другом. Используются три оператора: оператор ввода, присваивания и оператор вывода информации.
Задача №1. Даны a,b,c. Вычислить d,e по формулам:
13 EMBED Equation.3 1415
13 EMBED Equation.3 1415
Program L_3;
Var a,b,c,d,e:real;
Описание всех переменных действительного типа
Begin
Начало
Write(Введите значения для исходных данных a,b,c’);
Вывод сообщения
Readln(a,b,c);
Ввод числовых данных для a,b,c
D:=sqr(a+b)/(c-3*a*b)+sqrt(abs(2*a+b));
Вычисление d по формуле (оператор присваивания)
Writeln(d=’ , d:0:2);
Вывод пояснения и результата d
e:=sqrt(25)-3*b+(c-3*d)/4;
Вычисление e по формуле (оператор присваивания)
Writeln(e=’ , e:0:2);
Вывод пояснения и результата e
Readln;
Ожидается нажатие клавиши enter
End.
Конец
Задача №2. Написать программу вычисления стоимости некоторого количества (по весу) яблок.
Ниже приведен рекомендуемый вид экрана во время выполнения программы (данные, введенные пользователем, выделены полужирным шрифтом).
Вычисление стоимости покупки.
Введите исходные данные:
Цена 1 кг яблок (руб.) -> 8.5
Вес яблок (кг) -> 2.3
Стоимость покупки: 19.55 руб.
Program l_2;
var c,v:real; {цена и вес яблок}
st:real; {стоимость покупки}
begin
writeln('Вычисление стоимости покупки.');
writeln('введите исходные данные:');
write('Цена 1 кг яблок (руб.)->');
readln(c);
write('Вес яблок (кг)->');
readln(v);
st:=v*c;
writeln;
writeln('Cтоимость покупки:',st:6:2,' руб');
readln; {ожидается нажатие enter}
end.
Задача № 3. Написать программу вычисления стоимости поездки на автомобиле на дачу (туда и обратно). Исходными данными являются: расстояние до дачи (км); количество бензина, которое потребует автомобиль на 100 км пробега; цена одного литра бензина. Ниже приведен рекомендуемый вид экрана во время выполнения программы (данные, введенные пользователем, выделены полужирным шрифтом).
Вычисление стоимости поездки на дачу и обратно.
Расстояние до дачи (км) -> 67
Расход бензина (литров на 100 км пробега) -> 8.5
Цена литра бензина (руб.) -> 6.5
Program l_3;
var ras,kol,cena:real; {расстояние, количество бензина, цена 1 литра}
st:real; {стоимость поездки}
begin
writeln('Вычисление стоимости поездки на дачу и обратно');
writeln('Расстояние до дачи (км)->');
readln(ras);
write('Расход бензина (литров на 100 км пробега)->');
readln(kol);
write('Цена 1 литра бензина (руб)->');
readln(cena);
st:=ras/100*kol*cena;
writeln;
writeln('Поездка на дачу и обратно обойдется в:',st:6:2,' руб.');
readln;
end.
Задача № 4. Составить алгоритм (программу) для вычисления двух значений Y4 и Y20, используя пять операций умножения для заданного значения X.
program l_4;
var y,y2,y4,y8,y16,y20:real;
begin
write('введите y-> ');
readln(y);
y2:=y*y; {Y^2}
y4:=y2*y2; {Y^4}
writeln(y:0:2,' в 4 степени=',y4:4:2);
y8:=y4*y4; {Y^8}
y16:=y8*y8; {Y^16}
y20:=y4*y16; {Y^20}
writeln(y:0:2,' в 20 степени=',y20:4:2);
readln;
end.
Результат вычисления
Введите y -> 2
2.00 в 4 степени=16.00
2.00 в 20 степени=1048576.00
Задача № 5. Даны с=A*B и d=a* b2, при этом A и B неизвестны. Составить один алгоритм (программу) для вычисления двух величин z= a3 * b3 и p=a3 * b6 так, чтобы в алгоритме (программе) было использовано четыре операции умножения.
program l_2;
var c,d,c2,z,d2,p:integer;
begin
write('vvedite c,d->');
readln(c,d);
c2:=c*c; {a^2,b^2}
z:=c2*c; {a^3,b^3}
writeln('z=',z:4);
d2:=d*d; {a^2,b^4}
p:=d2*d; {a^3,b^6}
writeln('p=',p:4);
readln;
end.
Результат выполнения программы
Введите с, d -> 2 4
Z= 8
P= 64
Задача № 6. Найти площадь равнобочной трапеции с основанием a и b и углом при большем основанием (.
Математическое решение
Высота h=(a-b)/2*tg((), так как в Паскале нет функции tg((), заменяем ее на sin(()/cos(().
Получаем h=(a-b)/2* sin(()/cos(().
Площадь трапеции S=(a+b)/2*h.
Программа
program l_3;
var a,b,h,alfa,s:real;
begin
write('введите большее основание a->');
readln(a);
write(' введите меньшее основание b->');
readln(b);
write(' введите угол при большем основании в радианах->');
readln(alfa);
h:=(a-b)/2*sin(alfa)/cos(alfa); {вычисление высоты}
s:=(a+b)/2*h; {вычисление площади}
writeln('площадь трапеции =',s:0:2);
readln;
end.
Результат выполнения программы
введите большее основание a-> 4
введите меньшее основание b->2
введите угол при большем основании в радианах->0.785
площадь трапеции =3.00
Задача №7
Ввод данных с клавиатуры и вывод результатов на экран
Создаем для каждой новой задачи отдельную папку (например, Расчет значений)
Войти в данную папку и текст программы сохраняем в данной папке под именем noname.pas (имя файла можно поменять, но расширение оставить pas, например zadacha1.pas)
Программа ня языке Паскаль (в папке Расчет значений сохраняем файл noname.pas)
Результат работы программы
(ввод и вывод результатов
Program z1;
Var e,f,g,h:real; {описание переменных– что дано}
A,b,c:real; {описание переменных – что надо посчитать }
Begin
Write(введите e,f,g,h ---(’);
Readln(e,f,g,h);
A:=sqrt(abs(sqr(e-3/f)*(e-3/f))+g);
Writeln(a=’,a:0:2);
B:=sin(e)+sqr(cos(h));
C:=(33*g)/(e*f-3);
Writeln(b=’,b:0:2,’ c=’,c:0:2);
Readln;
End.
введите e,f,g,h ---(3 4.5 6 -4
а=7.69
b=-1.82 c=23.75
Чтения данных из файла input.txt и вывод результатов файл в файл output.txt
Создаем для каждой новой задачи отдельную папку (например, Задача 1 работа с файлами )
В этой папке надо создать 3 файла noname.pas, input.txt и output.txt
В файле noname.pas – пишем текст программы (не забываем повторно сохранять при любом изменении)
В файле input.txt – записываем числа через пробел программы (не забываем повторно сохранять при любом изменении)
В файле output.txt – будут появляться результаты вычислений (при использовании новых данных и при каждом новым запуском программы – обновить)
Noname.pas
Input.txt
Output.txt
Program z1;
Var e,f,g,h:real; {описание пер-ых – что дано}
A,b,c:real; {описание переменных – что надо посчитать }
t1,t2:text
{описание 2-х файловых переменных}
Begin
Assign(t1,’input.txt’);
{установить связь файловой переменной t1 c файлом для чтения input.txt}
Reset(t1);
{файл t1 открыт для чтения}
Assign(t2,’output.txt’);
{установить связь файловой переменной t2 c файлом для вывода output.txt}
Rewrite(t2);
{файл t2 открыт для вывода}
Readln(t1,e,f,g,h); {чтения исходных данных из файла}
A:=sqrt(abs(sqr(e-3/f)*(e-3/f))+g);
Writeln(t2,a=’,a:0:2); {вывод результата в файл}
B:=sin(e)+sqr(cos(h));
C:=(33*g)/(e*f-3);
Writeln(t2,b=’,b:0:2,’ c=’,c:0:2); {вывод результатов в файл}
Close(t1);
{закрытие файла для чтения}
Close(t2);
{закрытие файла для вывода}
End.
3 4.5 6 -4
a=7.69
b=-1.82 c=23.75
ПРАКТИЧЕКАЯ РАБОТА №1. ЛИНЕЙНЫЕ АЛГОРИТМЫ
1 вариант
1 задача. Решить используя работу с файлами.
2 задача. Решить без использования работы с файлами.
Известна стоимость 1 кг конфет, печенья и яблок. Найти стоимость всей покупки, если купили x кг конфет, у кг печенья и z кг яблок.
3 задача.
Даны стороны прямоугольника. Найти его периметр и длину диагонали.
4 задача.
Два автомобиля едут навстречу друг другу с постоянными скоростями и км/час. Определить, через какое время автомобили встретятся, если расстояние между ними было S км.
2 вариант
1 задача. Решить используя работу с файлами.
2 задача. Решить без использования работы с файлами.
Возраст Тани X лет, а возраст Мити Y лет. Найти их средний возраст, а также определить, на сколько отличается возраст каждого ребенка от среднего значения (не забыть про модуль (абсолютное значение).
3 задача.
Даны длины сторон прямоугольного параллелепипеда. Найти его объем и площадь боковой поверхности.
4 задача.
Известна стоимость монитора, системного блока, клавиатуры и мыши. Сколько будут стоить 3 компьютера из этих элементов? N компьютеров?
Домашнее задание
Даны основания и высота равнобедренной трапеции. Найти площадь трапеции (формулу найти).
Известно значение температуры по шкале Цельсия. Найти соответствующее значение температуры по шкале:
а) Фаренгейта;
б) Кельвина.
Для пересчета по шкале Фаренгейта необходимо исходное значение температуры умножить на 1,8 и к результату прибавить 32, а по шкале Кельвина абсолютное значение нуля соответствует 273,15 градуса по шкале Цельсия.
3) Два автомобиля едут друг за другом с постоянными скоростями V1 и V2 км/час ( V1 V2 ). Определить, какое расстояние будет между ними через 30 минут после того, как первый автомобиль опередил второй на S км.
4) Известны координаты на плоскости двух точек x1,y1 и x2,y2. Составить программу вычисления расстояния между ними (формулу найти или вывести самостоятельно).
13PAGE \* MERGEFORMAT14115
b
h
(.
а
Root Entry