Графика и повторение

advertisement
2015 год
Графический режим
Простейшие операторы
графики Паскаля
При работе с графикой в Паскале необходимо в разделе описания
программы задать модуль graph и 2 переменные gd и gm.
А в основном разделе прописать два оператора:
gd:=detect; initgraph(gd,gm,'');
0
640
(320,240)
480
Графический режим
Устанавливает цвет фона и линий:
Простейшие операторы
графики Паскаля
Замечания:
С – цвет
По умолчанию у линий - белый
SETBKCOLOR(C);
SETCOLOR(C);
Вычерчивание линий:
0
LINE(X1,Y1,X2,Y2)
(X1,Y1)
X
640
Цвета:
0 – черный
1 – синий
2 – зеленый
3 – голубой
4 – красный
5 –малиновый
6 – коричневый
7 – светло серый
Примерный вид программы:
uses crt,graph;
var gd,gm:integer;
begin
gd:=detect;initgraph(gd,gm,'');
setcolor(5);line(10,10,200,200);
Y
(X2,Y2)
480
readkey;
end.
Выход
Графический режим
Простейшие операторы
графики Бейсика
Вычерчивание прямоугольников:
Замечания:
С – цвет линий
0
SETCOLOR(C);
RECTANGLE (X1,Y1,X2,Y2);
X
640
(X1,Y1)
Цвета:
8 – темно серый
9 – светло синий
10 – светло зеленый
11 – бледно голубой
12 – розовый
13 –бледно малиновый
14 – желтый
15– белый
Примерный вид программы:
uses crt,graph;
(X2,Y2)
Y
480
var gd,gm:integer;
begin
gd:=detect;initgraph(gd,gm,'');
setcolor(5); rectangle(400,100,500,300);
readkey;
end.
Выход
Графический режим
Простейшие операторы
графики Бейсика
Вычерчивание закрашенных прямоугольников:
Замечания:
С – цвет заливки
1 –стиль,
признак закраски цветом С
SETFILLSTYLE(1,C)
BAR(X1,Y1,X2,Y2);
0
X
640
(X1,Y1)
Примерный вид программы:
uses crt,graph;
var gd,gm:integer;
begin
gd:=detect;initgraph(gd,gm,'');
setfillstyle(1,14);
Y
(X2,Y2)
480
bar(100,300,300,400);
readkey;
end.
Выход
Графический режим
Простейшие операторы
графики Бейсика
Вычерчивание круга:
SETCOLOR(C);
CIRCLE(X,Y,R)
0
X
Замечания:
X,Y – центр круга
R – радиус
C – цвет окружности, по
умолчанию - белый
640
Примерный вид парограммы:
R
(X,Y)
Y
480
uses crt,graph;
var gd,gm:integer;
begin
gd:=detect; initgraph(gd,gm,'');
setcolor(4);
circle(320,240,100);
readkey;
end.
Выход
Графический режим
Простейшие операторы
графики Бейсика
Вычерчивание эллипсов:
Замечания:
R1, R2 – радиусы эллипса
SETCOLOR(C);
ELLIPSE(X,Y,0,360,R2,R1)
0
X
640
Примерный вид программы:
R1
Y
480
R2
uses crt,graph;
var gd,gm:integer;
begin
gd:=detect; initgraph(gd,gm,'');
setcolor(4);
ellipse(320,240,0,360,100,50);
readkey;
end.
Выход
Графический режим
Простейшие операторы
графики Бейсика
Вычерчивание дуг
SETCOLOR(C);
ELLIPSE(X,Y,а,b,R2,R1)
0
X
640
Примерный вид парограммы:
R1
R2
a
b
Y
480
Замечания:
uses crt,graph;
var gd,gm:integer;
begin
gd:=detect; initgraph(gd,gm,'');
setcolor(4);
ellipse(320,240,320,180,100,50);
readkey;
end.
а – начало дуги (в градусах)
b – конец дуги
отсчет идет против часовой стрелки от точки 0
Выход
Графический режим
Отображение точки:
Замечания:
PUTPIXEL(X,Y,C)
0
Простейшие операторы
графики Бейсика
X,Y – координаты точки
C – цвет точки, по умолчанию белый
X
640
Примерный вид программы:
Y
350
uses crt,graph;
var gd,gm:integer;
begin
gd:=detect; initgraph(gd,gm,'');
putpixel(320,240,5);
putpixel(100,100,2);
putpixel(400,400,14);
putpixel(450,200,6);
putpixel(500,150,4);
readkey;
end.
Выход
Пишем программу № 20.
uses crt,graph;
Вывести на экран
var gd,gm:integer;
всевозможные фигуры.
begin
gd:=detect; initgraph(gd,gm,'');
Setbkcolor(15);
setcolor(5); line(10,10,200,200);
rectangle(250,100,350,150);
setfillstyle(1,14); bar(100,300,300,400);
setcolor(5); circle(500,240,50);
setfillstyle(5,8);floodfill(500,240,5);
setcolor(2);ellipse(500,100,0,360,100,20);
setcolor(4);ellipse(500,400,320,180,100,50);
putpixel(520,140,5); putpixel(500,170,0);
setcolor(3);setfillstyle(1,4);fillellipse(320,170,100,10);
readkey; end.
Выход
Пишем программу № 21.
100
200
300
400
500
Вывести на экран рисунок
600
640
uses crt,graph;
var gd,gm:integer;
begin
gd:=detect;
initgraph(gd,gm,'');
line(160,180,80,240);
line(160,180,240,240);
rectangle(80,240,240,460);
rectangle(120,280,200,360);
line(120,310,200,310);
line(160,280,160,360);
circle(60,60,25);
readkey;
end.
480
400
300
200
100
0
Задание:
А. Составить программу вывода на экран Домика и Солнышка (программа прилагается)
В. Составить программу вывода на экран всего предлагаемого рисунка
С. Доработать программу вывода на экран рисунка, добавив дополнительные детали (Дверь, трубу и крыльцо у
домика, беседку, кустарник и т.п.)
Графический режим
Простейшие операторы
графики Бейсика
Закрашивание замкнутой области:
Замечания:
X,Y – координаты точки внутри
SETFILLSTYLE(1,C)
FLOODFILL (X, Y, C1)
0
замкнутого контура
C – цвет заливки
X 640
С1 – цвет контура
Примерный вид программы:
uses crt,graph;
var gd,gm:integer;
begin
gd:=detect; initgraph(gd,gm,'');
Y
480
setcolor(1); circle(100,100,50);
setfillstyle(1,14);floodfill(100,100,1);
line(320,175,200,350);
line(320,175,440,350);
line(200,350,440,350);
setfillstyle(1,4);floodfill(320,300,1);
readkey;
end.
Выход
Пишем программу № 22.
100
200
300
400
500
Вывести на экран рисунок
600
640
480
400
300
200
100
0
uses crt,graph;
var gd,gm:integer;
begin
gd:=detect; initgraph(gd,gm,'');
setcolor(1);
line(160,180,80,240);
line(160,180,240,240);
line(80,240,240,240);
setfillstyle(1,4);
floodfill(160,200,1);
rectangle(80,240,240,460);
setfillstyle(1,3);
floodfill(160,300,1);
setcolor(6);
rectangle(120,280,200,360);
setfillstyle(1,15);
floodfill(160,300,6);
line(120,310,200,310);
line(160,280,160,360);
readkey;
end.
Задание:
А. Составить программу вывода на экран ДОМИКА и раскрасить его (программа прилагается)
В. Составить программу вывода на экран всего предлагаемого рисунка
С. Доработать программу вывода на экран цветного рисунка, добавив дополнительные детали (Дверь, трубу и
крыльцо у домика, беседку, кустарник и т.п.)
Выход
Пишем программу № 23.
Вывести на экран рисунок
uses crt,graph;
var gd,gr:integer;
begin
gd:=detect; initgraph(gd,gr,'');
setcolor(3);
circle(320,100,30);
circle(320,180,50);
ellipse(320,300,0,360,100,70);
ellipse(260,140,0,360,30,10);
ellipse(380,140,0,360,30,10);
setcolor(4);
circle(330,90,3);
circle(310,90,3);
line(315,95,325,95);
line(302,112,315,95);
line(302,112,325,95);
setfillstyle(1,4);
floodfill(320,97,4);
bar(330,110,310,113);
readkey;
end.
Задание:
А. Составить программу вывода на экран снеговика (программа прилагается)
В. Составить программу вывода на экран всего предлагаемого рисунка
С. Доработать программу вывода на экран рисунка, добавив дополнительные детали (заливку ёлочки, снеговика,
вставить изображение шляпы у снеговика, дерева и т.п.)
Выход
Пишем программу № 24.
Вывести на экран рисунок
uses crt,graph;
var gd,gr:integer;
begin
gd:=detect;
initgraph(gd,gr,'');
circle(280,130,5);
ellipse(280,130,352,200,30,60);
ellipse(280,140,360,190,20,50);
circle(360,130,5);
ellipse(360,130,340,190,30,60);
ellipse(360,140,355,180,20,50);
ellipse(320,200,0,360,120,60);
ellipse(320,340,130,50,80,110);
ellipse(395,455,0,360,70,10);
ellipse(255,455,0,360,70,10);
setcolor(4);
line(205,220,435,220);
readkey;
end.
Задание:
А. Составить программу вывода на на экран контура жабы (программа прилагается).
В. Составить программу вывода на экран всего предлагаемого рисунка.
С. Доработать программу вывода на экран рисунка, добавив дополнительные детали.
Выход
Графический режим
Организовать движение
круга по экрану
Задержка изображения на доли секунды:
DELAY(к);
Замечания:
Очистка графического экрана заданным цветом:
SETBKCOLOR (C);
CLEARDEVICE;
0
Y
480
к – время, доли секунды
С – цвет фона
Примерный вид программы:
uses crt,graph;
var gd,gm,x:integer;
X 640 begin
gd:=detect; initgraph(gd,gm,'');
setbkcolor(3); cleardevice;
For x:=50 to 600 do
begin
setcolor(1); circle(x,50,10);
setfillstyle(1,14);floodfill(x,50,1);
Delay(5000);
setfillstyle(1,3);floodfill(x,50,3);
end;
readkey;
end.
Выход
Пишем программу № 25.
Вывести на экран рисунок
uses crt,graph;
var gd,gm,i,x:integer;
begin
gd:=detect; initgraph(gd,gm,'');
setcolor(1);
line(160,170,80,200);
line(160,170,240,200);
line(80,200,240,200);
setfillstyle(1,4); floodfill(160,190,1);
rectangle(80,200,240,350);
setfillstyle(1,3);floodfill(160,300,1);
setcolor(6); rectangle(130,240,190,290);
setfillstyle(1,15); floodfill(160,280,6);
x:=0;
for i:=1 to 15 do
begin
line(x,480,x+20,480);line(x+20,480,x+20,360);
line(x+20,360,x+10,320);line(x+10,320,x,360);
line(x,360,x,480);
setfillstyle(1,7); Floodfill(x+10,360,6);
x:=x+20;
end;
readkey;
End.
Задание:
А. Составить программу вывода на экран ДОМИКА и забора (примерная программа прилагается)
В. Составить программу вывода на экран всего предлагаемого рисунка
С. Доработать в программу движение солнца по экрану
ПОВТОРЕНИЕ
основные понятия
и операторы
Алфавит Паскаля
Все прописные и строчные буквы
латинского алфавита
Цифры от 0 до 9
Знаки арифметических операций: +, -, *, /.
Знаки операций отношения: =, <, >, >=,
<=,<>
Знаки препинания :
, ; . : ' ..
Специальные символы:
:= ( ) [ ] { } (* *)
Буквы русского алфавита используются только как
константы (в кавычках). Например, ‘Русский язык’
Основные понятия Паскаля
Программа - это последовательность строк,
описывающая алгоритм поставленной задачи
Программа состоит из двух разделов: описаний и
операторов
Program <имя программы>;
Uses <список модулей>;
Var <список переменных>;
Const <список констант>;
Label <список меток>;
Type <описание типов>;
Procedure …
Function…
Begin
…
end.
Список стандартных математических
функций Паскаля
Функция
Назначение
Тип
аргумента
Тип функции
Abs(x)
Вычисление абсолютного
значения x
вещественный
целый
вещественный
целый
sqr(x)
Вычисление квадрата x
вещественный
целый
вещественный
целый
sqrt(x)
Вычисление квадратного корня из
x
вещественный
целый
вещественный
вещественный
sin(x) /
cos(x)
Вычисление синуса / косинуса от
x
вещественный
целый
Вычисление арктангенса от x
вещественный
целый
вещественный
вещественный
вещественный
целый
вещественный
вещественный
вещественный
целый
вещественный
вещественный
нет
вещественный
arctan(x)
exp(x)
Вычисление экспоненты (числа
e=2,71828…) в степени x
ln(x) / log(x) Вычисление логарифмов x
Pi
Число 
вещественный
вещественный
Стандартные функции используются в выражениях.
Аргументы функций пишутся в круглых скобках.
Например, 2+Sqr(x)-Abs(2*y); a-Int(a)
Оператор вывода информации на экран
Структура оператора:
Простейшие операторы
Паскаля
Write( <список>);
Writeln( <список>);
Список – это перечень констант, переменных или выражений, разделенных запятыми
Замечания: При использование оператора Write после вывода списка на экран курсор остается на
той же строке.
При использование оператора Writeln после вывода списка на экран курсор переносится
на следующую строку.
Примеры операторов
Оператор
Комментарий
WRITELN(‘Все хорошо,’);
WRITE(‘что хорошо кончается’);
На экране появится:
WRITE(‘Все хорошо,’);
WRITE(‘что хорошо кончается’);
На экране появится:
WRITE(‘Все хорошо,’);
WRITELN (‘что хорошо кончается’);
На экране появится:
Все хорошо,
что хорошо кончается _
Все хорошо, что хорошо кончается _
Все хорошо, что хорошо кончается
___
Операторы управления цветом
Структура оператора изменения цвета фона:
Textbackground ( <№ цвета>);
Структура оператора изменения цвета символов (переднего плана):
TextColor( <№ цвета>);
Номер-Цвет
Константа
модуля Crt
Цвета в Паскаля:
Номер-Цвет
Константа
модуля Crt
0 – чёрный
Black
8 – темно-серый
DarkGray
1 – синий
Blue
9 – светло-синий
LightBlue
2 – зелёный
Green
10 – светло-зелёный
LightGreen
3 – морской
волны
Cyan
11 – светл.-морской
волны
LightCyan
4 – красный
Red
12 – светло-красный
LightRed
5 –фиолетовый
Magenta
13 – светло-фиолетовый LightMagenta
6 – коричневый
Brown
14 – жёлтый
7 – светло-серый
LightGray 15 – белый
Yellow
White
Оператор очистки экрана
Clrscr;
Оператор ввода символа с клавиатуры
Readkey;
Замечание: оператор используется для ввода символов с клавиатуры в символьную
переменную или для задержки информации на экране.
program pr2;
uses crt;
begin
Textbackground(3); Clrscr;
TextColor(4);
Пример программы
с использованием
очистки цветом
writeln(‘ Моя первая программа'); writeln;
TextColor(5);
writeln(‘Буря мглою небо кроет,');
writeln(‘Вихри снежные крутя');
writeln(‘То как зверь она завоет,');
writeln(‘То заплачет, как дитя.');
Readkey; end.
Запуск программы на
выполнение – Ctrl+F9
Просмотр результатов –
Alt+F5
Описание переменных
Пример описания переменных:
Переменные
Var a:<тип переменной>;
Паскале
b,c,d:<тип переменной>;
Список
наиболее распространенных типов переменных
Название типа
Тип
в
Описание
Строковый
String
Символы в количестве от 0 до 255 шт.
Символьный
Char
Один любой символ
Целые положительные
числа
Byte
Word
0…255
0 ... 65535
Целые числа со знаком
ShortInt -128…127
Integer -32768 ...32767
Longint -2147483648 ... 2147483647
Вещественные числа
Single
Real
7-8 значащих цифр(-1.510-45...3.410-48)
11-12 значащих цифр
(-2.910-39... 2.910-38)
Оператор присваивания
Простейшие операторы
Паскаля
Структура оператора:
<переменная>:=<выражение>;
Замечания:
Слева от знака «:=» в операторе присваивания записывается имя той переменной,
которой нужно присвоить новое значение, а справа – выражение, значение которого
надо сначала вычислить, а затем присвоить указанной переменной
Примеры операторов
Оператор
Комментарий
X:=10;
Переменной Х присваивается 10
X:=2*a+6;
Переменной Х присваивается значение выражения
2*a+6
A:=‘Информатика’;
Текстовой переменной A присваивается текстовая
константа ‘Информатика’
S:=S+1;
Переменной S присваивается предыдущее
значение S плюс 1
Оператор ввода информации с клавиатуры
Структура оператора:
Простейшие
операторы Паскаля
READ(<список>);
READLN(<список>);
Список – это перечень переменных, разделенных запятыми
Замечания: При выполнение оператора ввода программа ожидает нажатия на Enter.
Данные, в список переменных, вводятся через пробел.
Пример использования оператора
Оператор
Комментарий
Var A,B:byte;
…
Read(A,B);
…
На экране появится мигающий курсор
Только после ввода двух чисел, например, 2 5 (через
пробел), и нажатия Enter программа продолжит
выполнение.
…
Write(‘введи число ’);
Readln(a);
…
На экране появится:
введи число _
После ввода числа и нажатия клавишиEnter
программа продолжит выполнение.
Функции, преобразования числовых
переменных
Функция
Назначение
Нахождение целой части x
trunc(x) (дробная часть числа
отбрасывается)
int(x)
Округление вещественного числа
x по направлению к нулю
Округление x в сторону
round(x) ближайшего целого по
математическим правилам
Frac(x)
Вычисление дробной части числа
Х
Тип аргумента
Тип
функции
вещественный
целый
целый
вещественный
вещественный
вещественный
целый
целый
целый
вещественный
вещественный
Примеры:
Y:=trunc(13.999); (переменной Y присваивается 13), Y:=trunc(13.111);
(переменной Y присваивается 13),
Y:=round(3.145); (переменной Y присваивается 3), Y:=round(23.5); (переменной Y
присваивается 24), Y:=round(-12.5); (переменной Y присваивается -13).
Y:=int(2.7); (переменной Y присваивается 2), Y:=int(-32.3); (переменной Y
присваивается -32).
Целочисленные арифметические
операции
Операция
Назначение
Вычисление целой
части частного при
делении
div
mod
a на b
Вычисление остатка
от деления a на b
Пример записи
C:=a div b;
D:=a mod b;
Например,
Y := 25 div 3; (переменной Y присваивается 8), Y := - 25 div 4; (переменной Y присваивается -6),
Y := 13 mod 3; (переменной Y присваивается 1), Y := 15 mod 4; (переменной У присваивается 3).
Операции div и mod используются только
с целочисленными переменными
Генерация случайных чисел
Randomize – оператор установки базы случайных чисел в
Функции:
зависимости от текущего времени
Random – генерация дробных чисел в диапозоне от 0 до 1
Random(X) – генерация целых чисел в диапозоне от 0 до Х-1
Примеры:
Генерация случайного числа в диапазоне от 0 до 45:
А : = Random(46);
Генерация случайных двухзначных чисел:
А : = Random(90)+10;
Генерация двухзначных четных чисел:
А : = Random(45)*2+10;
Генерация вещественных чисел от 0 до 50:
X:=Random*50;
Оператор ветвления
Простейшие операторы
Паскаля
Структура оператора:
if <условие> then <оператор 1> [ else <оператор 2> ];
если
тогда
иначе
Замечания:
Если условие истинно, выполняется оператор1, иначе выполняется оператор2.
Если структура else отсутствует, то при ложности условия выполняется следующий оператор за
оператором if
Оператор1 или оператор2 может быть составным, то есть содержать несколько операторов, между
Begin и end.
Примеры операторов
Оператор
Комментарий
if a > b then writeln (‘большее число Из двух чисел a и b выводится
a - ’, a)
на экран значение большего
числа.
else writeln (‘большее число b - ’,
b);
if x>0 then y:=x;
if x<=0 then y:L=sqr(x);
Вычисление значения функции:
 x, если x  0
y 2
 x , если x  0
Ветвление на несколько направлений
Структура оператора:
Простейшие операторы
Паскаля
case <переменная или выражение> of
<список значений выбора1>:<оператор1>;
<список значений выбора2>:<оператор2>;
. . . . . . . . . . . . . . . . . . . . . . . . .
<список значений выбора N>:<оператор N>;
[else <оператор>]
end;
Замечания:
Переменная должна быть типа word, boolean, integer, char…
Список значений выбора - это значения, которые могут принимать переменная или выражение, перечисленные
через запятую или " . . " (например, 1..7 или 'а' ..'м')
Оператор – это любой оператор, в том числе составной (begin .. . end;)
Принцип работы оператора:
¨
- Значение переменной или выражения сравнивается с предложенными списками значений
¨
- Если найдено нужное значение, выполняется соответствующий оператор
¨
- Если нужное значение не найдено в перечисленных списках, выполняется оператор после else
- Если else отсутствует, то, когда нужное значение не найдено, выполняется следующий за case оператор.
Операторы перехода
Оператор безусловного перехода
Структура оператора:
GOTO <метка>;
Замечания:
Метка – число или идентификатор (буквы и цифры), которые ставятся
перед оператором и отделяются от него двоеточием. Метки используются для
передачи управления на оператор, перед которым стоит метка.
Например, М1: writeln(‘метка’);
Метки обязательно описывается в разделе описаний:
Label <метка>;
Оператор перемещения курсора в
координаты Х,Y
Gotoxy(x, Y);
Оператор выхода из программы
Halt;
Оператор цикла с параметром
Простейшие операторы
Паскаля
Структура оператора:
for <переменная>:=<начало> to/downto <конец> do <оператор>;
для
до
Замечания:
начало, конец - арифметическое выражение
to - используется когда начало меньше конца
downto - используется когда начало больше конца
оператор - тело цикла, любой оператор, в том числе и составной
делать
Принцип работы оператора:
• Переменной присваивается значение «начало»
• Выполняется оператор - тело цикла.
• Затем переменная сравнивается с «концом».
• Если параметр больше/меньше конца, то цикл заканчивается.
• Иначе к переменной прибавляется/отнимается единица и снова выполняется оператор.
• Так продолжается пока параметр не станет больше/меньше конца.
Пример записи оператора
Оператор
S:=0;
For I:=25 To 43 do
S:=S+I;
Writeln(‘S=‘,S);
Комментарий
Цикл для подсчета суммы чисел
от 25 до 43.
Оператор цикла с предварительным условием
Простейшие операторы
Паскаля
Структура оператора:
While <условие> do <оператор>;
пока
делать
Замечания:
Условие - логическое выражение
оператор - тело цикла, любой оператор, в том числе и составной
Принцип работы оператора:
•Проверяется истинность условия,
•Если условие истинно выполняется оператор,
•Цикл работает, пока условие не станет ложным.
Пример записи оператора
Оператор
readln (n1,n2);
while n1<>n2 do
if n1>n2 then n1:=n1-n2 else n2:=n2-n1;
nod:=n1;
writeln 'Наименльший общий делитель ',nod);
Комментарий
Найти наименьший
общий делитель двух
введенных целых
чисел (Алгоритм
Евклида).
Оператор цикла с последующим условием
Простейшие операторы
Паскаля
Структура оператора:
Repeat <оператор> until <условие>;
повторять
до тех пор пока
Замечания:
Условие - логическое выражение
оператор - тело цикла, любой оператор, в том числе и составной
Принцип работы оператора:
•Выполняются все операторы между repeat и until,
•Проверяется ложность условия ,
•Цикл работает, пока условие не станет истинным.
Пример записи оператора
Оператор
readln (n1,n2);
Repeat
if n1>n2 then n1:=n1-n2 else n2:=n2-n1;
until n1=n2;
nod:=n1;
writeln 'Наименьший общий делитель -',nod);
Комментарий
Найти наименьший
общий делитель двух
введенных целых
чисел (Алгоритм
Евклида).
Конец
Выход
Download