1.50M
Category: programmingprogramming

Линейный алгоритм (версия для Pascal ABC)

1.

(Версия для Pascal ABC)
2012 год

2.

Введение
1
Заголовок
Program n1;
программы
Uses Crt, GraphABC;
Begin
МодульПодключение
для
CLRSCR;
дополнительных
Модуль работы
для
работы
Оператор
в очистки
модулей
с графикой
// комментарии
(пояснения)
экрана,
от
текстовом
режиме
End.
посторонних
надписей.
(Crt.TPU)
Блок операторов

3.

Блок 1. Графические возможности Pascal ABC
2
Y
x
A
Xmax=640
y
A
y
x
A(
Ymax=400
Y
X
,
)
X

4.

Блок 1. Графические возможности Pascal ABC
X1
3
X2
Y1
Y3
Y2
Line( X1 , Y1 , X2 , Y2 );
LineTo( X3, Y3 );
Y
X3
X

5.

Блок 1. Графические возможности Pascal ABC
X1
4
X2
X
Y1
R
Y
Y2
Rectangle( X1, Y1 , X2 , Y2 );
Circle( X , Y , R );
Y
X

6.

Блок 1. Графические возможности Pascal ABC
Стандартные цвета задаются константами:
clBlack – черный
clBlue – синий
clRed – красный
clGreen – зеленый
clYellow – желтый
clWhite – белый
SetPenColor(цвет);
- установка цвета рисования
5

7.

Блок 1. Графические возможности Pascal ABC
6
Только для SetPenWidth(1); толщина
Виды линий задаются константами:
линии равна одному пикселю
psSolid
psDash
psDot
psDashDot
SetPenStyle(вид линии);
- установка
вида линии
SetPenWidth(w);
- устанавливает ширину линии,
равную w пикселам.

8.

Блок 1. Графические возможности Pascal ABC
X
Y
FloodFill( X , Y , цвет );
SetPixel( X , Y , цвет );
- закрашивает один пиксель
Y
7
X

9.

Блок 1. Графические возможности Pascal ABC
X
Y
строка
TextOut( X , Y , 'строка' );
Точка (x,y) задает верхний левый угол
прямоугольника, который будет содержать текст.
Y
8
X

10.

Блок 1. Графические возможности Pascal ABC
Составить программу изображающую
прямоугольный параллелепипед ABCDA1B1C1D1, и
построить сечение через ребра AD и B1C1.
Задача 1.
Program n1;
Uses Crt, GraphABC;
begin
clrscr;
End.
Заготовка для программы,
подключаем модуль
графики.
9

11.

Блок 1. Графические возможности Pascal ABC
B1
А1
C1
D1
B
А
C
D
Rectangle(50,100,210,300);
SetPenStyle(psDot);
TextOut(25,100,'A1');
Line(50,100,120,50);
TextOut(212,100,'D1');
line(50,300,120,250);
lineTo(280,50);
TextOut(25,300,'A');
lineTo(120,50);
lineTo(210,100);
TextOut(212,300,'D');
lineTo(50,300);
line(280,50,280,250);
TextOut(120,30,'B1');
line(120,250,280,250);
LineTo(210,300);
TextOut(280,30,'C1');
lineTo(280,50);
TextOut(125,230,'B');
TextOut(285,230,'C');
Рисуем видимые
линии
Рисуем невидимые
Выводим названия
линии вершин
10

12.

Блок 1. Графические возможности Pascal ABC
Задача 2. Составить
программу выводящую на экран
следующее изображение.
11

13.

Блок 2. Линейная вычислительная программа
12
2 байта 2 байта 2 байта
A
B
C
Var A, В, С : тип данных ;
Integer
Подготовили
в памяти
три переменных для
хранения целых чисел
Real

14.

Блок 2. Линейная вычислительная программа
13
Целые числа
Тип
Byte
Word
Integer
LongInt
Диапазон
0..255
0..65535
-32768..32767
−2147483648..2147483647
Размер в байтах
1
2
2
4
Числа с плавающей запятой:
Тип
Диапазон
Real
2,9 ∙ 10-39 - 1,7 ∙ 1038
double
5 ∙ 10-324 - 1,7 ∙ 10308
Extended 3,4 ∙ 10-4932 - 1,1 ∙ 104932
Размер в байтах
6
8
10

15.

Блок 2. Линейная вычислительная программа
Переменная
Операция
присваивания
14
Значение
9
:= - знак присваивания
имя := значение
А:=5;
А:=B+5;
А:=B+C;
А:=C;

16.

Блок 2. Линейная вычислительная программа
15
Переменная
9
Значение
WriteLn - вывод информации на
экран
WriteLn(A) - выводит содержимое переменной
А
WriteLn('A') - выводит на экран букву А

17.

Блок 2. Линейная вычислительная программа
Выводим
десятичную
WRITELN('Надпись');
дробь
Выводим поясняющую
WRITELN(A:10:5);
Выводим надпись
целое число
Выводим число в
WRITELN(A:10);
стандартном виде
Выводим поясняющую
WRITELN(A);
надпись и десятичную
дробь
WRITELN('Надпись=',A:10:5);
16

18.

Блок 2. Линейная вычислительная программа
WriteLn('1-я строка');
WriteLn('2-я строка');
WriteLn('3-я строка');
Write('1-я строка');
Write('2-я строка');
Write('3-я строка');
Окончание LN указывает, что
следующая выводимая на экран
информация будет выводится с новой
строки
17

19.

Блок 2. Линейная вычислительная программа
Переменная
18
Значение
Клавиатура
9

20.

Блок 2. Линейная вычислительная программа
ReadLn(a) - ввод информации с клавиатуры
в переменную А
Write('Введите А='); ReadLn(a);
Ждем,
пока
Выводим силу '); ReadLn(F);
Write('Введите
поясняющую пользователь не
Write('Введите
массу
');
ReadLn(m);
введет
с
клавиатуры
надпись, что вводить
значение
и нажмет
Write('Введите время
'); АReadLn(t);
Enter
19

21.

Блок 2. Линейная вычислительная программа
20
Запись математических выражений
Математическая
запись
x 2
x2
2 х
y 5
x 2
ex
ln X
Строчная запись
SQRT(x+2)
SQR(x) или х*х
(2 – x) / (y + 5)
ABS(x – 2)
EXP(x)
Ln(X)

22.

Блок 2. Линейная вычислительная программа
21
Запись тригонометрических функций
Математическая
запись
Строчная запись
sin X
сos X
tg X
ctg X
Arctg X
sin2X
sin X2
SIN(x)
COS(x)
SIN(x) / COS(x)
COS(x) / SIN(x)
ArcTan(x)
SQR(SIN(x))
SIN(X*X)

23.

Блок 2. Линейная вычислительная программа
22
Функция
Назначение
Frac(x)
Int(x)
Random(N)
Дробная часть числа
Целая часть числа
Псевдослучайное число
в интервале [0, N)
Округление до
ближайшего целого
Отбрасывание дробной
части числа
Round(x)
Trunc(x)
Используется для преобразования из
дробного к целому типу

24.

Блок 2. Линейная вычислительная программа
y
23
2( x 4) 1
2
x 3x
2
y:=(2*(x*x-4)+1)/sqrt(x*x-3*x);
x 3x
3
y
x 4
y:=abs(x*x*x-3*x)/(sqrt(x)+4);

25.

Блок 2. Линейная вычислительная программа
b D
x1
2a
x1:=(-b+sqrt(D))/2*a;
x1:=(-b+sqrt(D))/(2*a);
?
2x x 1 0
2
1 9
x1
2 1 3 2
2
1 9 1 3 2 1
x1
2 2
4
4 2
24

26.

Блок 2. Линейная вычислительная программа
25
Задача 3. (Алгебра 8 класс.Ю.Н. Макарычев. Стр. 123, №556) Найдите
выражения, a 2a 1
a
1 a
3a
значение
при а = -1,5.
(Ответ: 7,5)
Program n1;
Объявляем в памяти
Uses Crt;
две
переменных
Очищаем
экран от
var a,b:real;
посторонних
надписей
Устанавливаем
begin
Вычисляем
значение
начальное значение
А
clrScr;
выражения
a:=-1.5;
b:=(a-(2*a-1)/a)/((1-a)/(3*a));
writeln(b:10:5);
Выводим результат на
end.
экран

27.

Блок 2. Линейная вычислительная программа
Начало
а = - 1,5
2a 1
a
a
b
1 a
3a
Вывод B
Конец
26
begin
clrScr;
a:=-1.5;
b:=(a-(2*a-1)/a)/((1-a)/(3*a));
writeln(b:10:5);
end.

28.

Блок 2. Линейная вычислительная программа
27
Задача 4. Даны стороны прямоугольника a и b. Найти его
площадь S=a*b и периметр P=(a+b)*2.
Program n1;
Описаны
четыре
Подключаем
Вводим
с
клавиатуры
Uses Crt;
переменных
модуль
CRT.TPU
значения
переменных
А
Очищаем
экран
от
Var a,b,s,p:Real;
действительного
иВ
посторонних
begin
типа
надписей
ClrScr;
Write('ВВеди сторону А = '); Readln(a);
Write('ВВеди сторону B = '); Readln(b);
S:=a*b;
Вычисляем
P:=2*(a+b);
Выводим
площадь и на
Writeln(' S = ',S: 10: 5);
результаты
периметр
экран
Writeln(' P = ',P: 10: 5);
end.

29.

Блок 2. Линейная вычислительная программа
28
Начало
Ввод
А, В
Write('ВВеди сторону А = '); Readln(a);
Write('ВВеди сторону B = '); Readln(b);
S=ab
P=2(a+b)
S:=a*b;
Ждем ввода значения
Выводим поясняющую
P:=2*(a+b);
переменной А с
надпись, что вводить
клавиатуры
Вывод
S,P
Начало
Writeln(' S = ',S: 10: 5);
Writeln(' P = ',P: 10: 5);

30.

Блок 2. Линейная вычислительная программа
29
Задача 5. Составить
программу обмена значениями двух
переменных. (Например: если А=1 а В=3 то при
выводе А должно выводиться 3, а при выводе В
должно выводиться 1.)
Алгоритм
1
А
3
В
1
t
t:=A;
A:=B;
B:=t;

31.

Блок 2. Линейная вычислительная программа
А можно ли без дополнительной переменной?
A=
134
B = 31
A:= A + B;
A=1+3=4
B:= A – B;
B=4–3=1
A:= A – B;
A=4–1=3
30

32.

Блок 2. Линейная вычислительная программа
31
Дано число а. Не используя никаких операций,
кроме умножения, и никаких функций получите а8 за три
операции и а10 за четыре операции.
Задача 6.
n
m
n+m
a ∙a =a
1+1
a =
2
a
a∙a =
2
2
2+2
4
a ∙a = a = a
4
4
4+4
8
a ∙a = a = a
8
2
8+2
10
a ∙a = a = a
c:=a*a;
b:=c*c;
d:=b*b;
m:=d*c;

33.

Блок 2. Линейная вычислительная программа
Program n3;
Uses Crt;
var a,c,b,d,m:integer;
Begin
ClrScr;
Write('ВВеди А = '); Readln(a);
c:=a*a;
b:=c*c;
d:=b*b;
writeln(a, ' в 8 степени = ',d:8);
m:=d*c;
writeln(a, ' в 10 степени = ',m:8);
end.
32

34.

Блок 2. Линейная вычислительная программа
33
Составить программу вычисляющую xy .
Где x – основание степени, а y – показатель
степени.
Program n1;
y
y ln x
Uses Crt;
var a,x,y:real;
2
begin
clrScr;
Write('Введи x= ');Readln(x);
Write('Введи y= ');Readln(y);
a:=exp(y*ln(x));
writeln(a);
end.
Задача 7.
x e
12 144

35.

Блок 2. Линейная вычислительная программа
DIV
– операция
деления
25 DIV
10 =целочисленного
2
11 DIV 2 = 5
- целочисленное деление на 10
MOD
– остаток от деления целого на
уменьшает число на один разряд
целое
11 MOD 2 = 1
25 MOD 10 = 5
11 2
DIV
- остаток
10 5при делении на 10
выделяет
разряд
1 последний
MOD
34

36.

Блок 2. Линейная вычислительная программа
35
Задача 8. Дано трехзначное число. Определить сумму
цифр этого числа.
Математическая модель:
а – исходное число 256 – исходное число
с:= a mod 10
c = 256 mod 10 = 6
a:= a div 10
a = 256 div 10 = 25
d:= a mod 10
d:= 25 mod 10 = 5
a:= a div 10
a:= 25 div 10 = 2
S:= c + d + a
S:= 6 + 5 + 2 = 13

37.

Блок 2. Линейная вычислительная программа
Program n1;
Uses Crt;
Вводим
var a,b,c,d,s:Integer;
трехзначное
begin
число
clrScr;
Write('Введи A= ');Readln(a);
c:= a mod 10;
Производим
a:= a div 10;
необходимые
d:= a mod 10;
операции
a:= a div 10;
Выводим
S:= c + d + a;
сумму на
writeln('S =',S:5);
экран
end.
36

38.

Блок 3. Геометрические построения.
37
Задача 9. С клавиатуры вводятся стороны
прямоугольника и масштаб. Необходимо построить
этот прямоугольник увеличив в соответствии с
масштабом
(x,y-b)
а
(x+a,y-b) X
b
Y
(x,y)
(x+a,y)

39.

Блок 3. Геометрические построения
38
Program n1;
Подключаем
Uses Crt,GraphAbc;
var a,b,m,x,y:Integer;
модуль графики
Можно построить
begin
прямоугольник,
clrScr;
используя процедуру
Write(‘Введи длину ');Readln(a);
построить
Write(‘Введи ширину ');Readln(b);Можно
построения
Write(‘введи масштаб ');Readln(m);
прямоугольник,
как
прямоугольника
в виде
x:=10;
замкнутую
ломаную
рамки
по диагонали
Вводим
Устанавливаем
y:=300;
линию
a:=a*m;
координаты стороны и
b:=b*m;
базовой
точки масштаб
Увеличиваем
Рисуем
линии
line(x,y,x+a,y);
line(x,y,x,y-b);
Rectangle(x,y,x+a,y-b);
стороны
в с
line(x,y,x,y-b);
lineTo(x+a,y-b);
использованием
соответствии с
line(x+a,y,x+a,y-b); lineTo(x+a,y);
метода
базовой
масштабом
line(x,y-b,x+a,y-b); lineTo(x,y);точки
end.

40.

Блок 3. Геометрические построения
39
Задача 10. С клавиатуры вводятся стороны
равнобедренного треугольника и масштаб.
Необходимо построить этот треугольник увеличив в
соответствии с масштабом.
A(x+(a div 2),?)
b
X
c
B(x+a,y)
а
Y С(x,y)
M(x+(a div 2),y)

41.

Блок 3. Геометрические построения
40
Из треугольника CMA – прямоугольного по
теореме Пифагора, найдем катет МА.
MA CA CM
2
2
CA=b, СM= a div 2
MA
b (a div 2)
2
2
Так как скорее всего МА будет выражаться дробным
числом, то применим функцию преобразования
типов TRUNC
MA Trunc ( b (a div 2) )
2
2
Точка А будет иметь координаты:
A(x+(a div 2),y-MA)

42.

Блок 3. Геометрические построения
41
Задача 11. С клавиатуры вводятся стороны
треугольника и масштаб. Необходимо построить этот
треугольник увеличив в соответствии с масштабом
X
A(?,?)
b
Y
С(x,y) M а
c
B(x+a,y)

43.

Блок 3. Геометрические построения
42
Решим геометрическую задачу
СВ = а
СМ = x
MB = a - x
В треугольниках СМА и АМВ катет АМ общий
AC CM AB MB
2
2
2
2
b x c (a x)
2
2
2
2
b x c ( a x)
2
2
2
2
2
b x c a 2ax x
2
2
2
2ax b c a
2
2
2
b c a
x
2a
2
2
2
2
cm:=trunc((b*b-c*c+a*a)/(2*a));

44.

Блок 3. Геометрические построения
43
Из треугольника CMA, прямоугольного, по теореме
Пифагора:
MA b CM
MA:=trunc(sqrt(b*b-CM*CM));
2
2
A(x+cm,y-ma)
line(x,y,x+a,y);
line(x,y,x+cm,y-ma);
line(x+cm,y-ma,x+a,y);
Построим
треугольник
English     Русский Rules