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.510-45...3.410-48) 11-12 значащих цифр (-2.910-39... 2.910-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); Комментарий Найти наименьший общий делитель двух введенных целых чисел (Алгоритм Евклида). Конец Выход