Программа практических занятий по курсу: "Информатика" (Pascal) ГГФ
Учебник по информатике:
http://dssp.karelia.ru/web/tutorials.shtmlЗанятие N1
Введение в язык программирования Pascal
1. Запуск
Pascal (сделать поиск файла: turbo.exe) или Free Pascal из Пуск/Программы, создание окна с новой программой: F10, а затем File\NEW.2. Структура языка
Pascal - по примеру ниже.3. Основные типы переменных в
Pascal: Integer (целый), Real (дробный, с плавающей точкой), Boolean ( True (Истина), False (Ложь) ), String (строковый - набор символов). Описание констант, новых типов, переменных - по примеру, ниже. Объявление массива: Var Ar:Array[3..86] of Real; или двумерного массива: Var Array[0..10,4..8] Of Real;4. Как начинается и заканчивается основная программа:
Begin ... End.5. Присваивание:
X:=40, ввод с клавиатуры: read(x) или readln(x), вывод на экран: write(x) или writeln(x) - с переходом на следующую строку.6. Несколько операторов помещаются внутрь следующей конструкции:
Begin ... End (логические скобки в Pascal), операторы отделяются ";".7. Как и зачем подключаются модули. Часто используемые модули
Crt и Graph.ClrScr - очистка экрана {модуль CRT}.
8. Условия в Pascal: If условие Then ... Else ...
условия можно объединять с помощью логических конструкций - OR ("ИЛИ") или AND ("И").
Пример:
If (a>b) AND (x>10) Then WriteLn('a>b и x>10')
Else WriteLn('a<=b или x<=10');
9. Цикл FOR:
For...To, For...DownTo
(зарезервированные слова)Оператор
For вызывает оператор, находящийся после слова Do, по одному разу для каждого значения в диапазоне от начального до конечного значений.For
переменная:=начальное To (или DownTo для уменьшения) конечное Do оператор10. {Комментарий внутри этих скобок}
11. Правила оформления программ - смотреть на:
zed.karelia.ru (/Студентам/Оформление программ/Правила)http://zed.karelia.ru/go.to/for.students/coding.rules/rules
12. Работа в оболочке
Turbo (Borland) Pascal / Free Pascal:F10 - выход в Menu Ctrl+F1 - помощь по текущей команде (Help - русский) Ctrl+F9 - компиляция и запуск программы Ctrl+Break (в Borland и Turbo Pascal) или Ctrl+C (во Free Pascal) - прервать программу Alt+F5 - посмотреть окно вывода Редактирование такое же, как и в Бейсике. Для копирования из внешних программ и обратно во Free Pascal использовать: Edit\Paste from Windows или Edit\Copy to Windows
13. Отличие языка Pascal от QBasic:
Операции | Pascal | QBasic |
Присвоение значения к переменной | A:=15; X:='Hello!'; | A=15: X$="Hello!" |
Объявление массива | Var Arr:Array[0..99] of Real; | DIM ARR(100) |
Присвоение значения к элементу массива | Arr[3]:=5; | ARR(3)=5 |
Вывод на экран | WriteLn('Hello!',X); | PRINT "Hello!",X |
Ввод с клавиатуры | ReadLn(n); | INPUT N |
Цикл For (10 повторений) | For I:=1 To 10 Do оператор | FOR I=1 TO 10 оператор NEXT I |
Очистка экрана | ClrScr; | CLS |
Вывод текста в указанную позицию | GotoXY(X,Y); Write('Hello!'); | LOCATE Y,X: PRINT "Hello!" |
Получить символ нажатой клавиши | If KeyPressed Then Ch:=ReadKey Else Ch:='' | CH=INKEY$ |
Примеры:
Program Ex1_WriteLn_ReadLn; Uses Crt, Graph; Type MAS=Array[1..100] Of Integer; Const X=40; Y=14; St='Hello!'; Var A,I:Integer; R:Real; MS:MAS; Ar1:Array[0..10,4..8] Of Real; Begin ClrScr; WriteLn('Hello Student! ',St); Write(Y,';');WriteLn(X); ReadLn(A); Write(A); End.
For...To, For...DownTo
(зарезервированные слова)Оператор
For вызывает оператор, находящийся после слова Do, по одному разу для каждого значения в диапазоне от начального до конечного значений.For
переменная:=начальное To (или DownTo для уменьшения) конечное Do операторProgram Ex1_For; Var I:Integer; MS:Array[1..100] Of Integer; Begin WriteLn('Vvedite chisla:'); For I:=1 To 5 Do ReadLn(MS[I]); WriteLn('Chisla:'); For I:=1 To 5 Do WriteLn(MS[I]); ReadLn End.
Задание N1:
Подсчитать корни квадратного уравнения, с проверкой на существование корней и на существование только одного корня, соответственно вывести результат.
Задание N2:
Произвести сортировку чисел в массиве, расставив их по возрастанию. Результат вывести на экран.
Занятие N2
Трассировка программ:
Меню Debug: Add breakpoint... - добавить точку останова программы (Breakpoint во Free Pascal) Breakpoints - выдает список установленных точек останова (Breakpoint List во Free Pascal) Evaluate/Modify... - Ctrl+F4 - вычислить/изменить значения (можно наблюдать за значениями переменных, изменять их значения и вычислять выражения с несколькими переменными) Add watch... - Ctrl+F7 - добавление переменных для наблюдения в отдельном окне наблюдений Горячие клавиши для трассировки: F7 - Trace - трассировка со входом в функции и процедуры F8 - Step - трассировка с пропуском функций и процедур Ctrl+F2 - сброс трассировки
Вывод в заданные координаты
GotoXY(X,Y); - помещение курсора в заданные координаты {модуль CRT}
GotoXY(X,Y); Write('Hello!'); - вывод текста в заданные координаты
Delay(1000); - задержка в ms {модуль CRT}
Пример:
Program Ex2_Helix; Uses Crt; Const X=40;Y=14; Var I:Integer; Begin ClrScr; For I:=0 To 200 Do Begin GotoXY(X+Round(Cos(I/9)*I/9),Y-Round(Sin(I/9)*I/15)); Write('*'); Delay(100); End; ReadLn End.
Задание N3:
Используя GotoXY(X,Y) для вывода текста в заданные координаты и с использованием циклов, нарисовать цифру, соответствующую номеру компьютера из "*", в заданных координатах.
Задание N4:
Используя еще один цикл заставить фигуру из задания N3 двигаться.
Занятие N3
Операторы цикла
For...To, For...DownTo
(зарезервированные слова)Оператор
For вызывает оператор, находящийся после слова Do, по одному разу для каждого значения в диапазоне от начального до конечного значений.For
переменная:=начальное To (или DownTo для уменьшения) конечное Do оператор
While
условие выполнения цикла Do операторОператор после
Do будет выполняться до тех пор, пока булево выражением является истинным (True).
Repeat
операторы
...
Until условие выхода из цикла
Операторы между словами
Repeat и Until повторяются до тех пор, пока булево выражение является Истинным (True).ReadKey - функция приостанавливает выполнение программы, ожидая нажатия клавиши, читает символ из буфера клавиатуры, соответствующий нажатой клавише {модуль Crt}
KeyPressed - функция определяет, была ли нажата клавиша на клавиатуре (True - нажата, False - нет) {модуль Crt}
If KeyPressed Then Ch:=ReadKey - позволяет проверять на нажатую клавишу только в случае нажатия клавиши, иначе продолжается выполнение программы.
Примеры:
Program Ex3_While; Uses Crt; Var Ch:Char; Begin Ch:=Chr(0); While Ch<>'j' Do Begin Ch:=ReadKey; Write(Ch); End End. Program Ex3_Repeat; Uses Crt; Var Ch:Char; Begin Repeat Ch:=ReadKey; Write(Ch); Until Ch='j' End.
Задание N5:
Организовать движение фигуры из задания N3 по кругу с помощью циклов While или Repeat ... Until до нажатия клавиши, соответствующей номеру компьютера - при нажатии этой клавиши, должен происходить выход из программы. Для вычисления координат точки на окружности - использовать тригонометрические функции: Xi=R*COS(Ai), Yi=R*SIN(Ai) (где Ai это угол i-ой позиции точки, выраженный в радианах, а Xi,Yi, координаты этой точки).
Занятие N4
Работа со строками
Строки в Pascal имеют тип String и представляют из себя массив символов типа char, доступ к каждому из символов строки так же, как и к элементу массива, через [ ].
Пример:
Ch:=S[2]; {если S:='Hello!', то Ch='e'}Str(X[:Width[:Decimals]]; var S:string)
- Преобразовывает числовое значение X (Real, Integer) в строковое представление этого числа S. (Width - количество символов в результирующей строке, Decimals - количество знаков после запятой).Пример:
Str(X:3:2,S);
Val(S; Var V; Var Er:Integer)
- Преобразовывает строковое значение S, в его числовое представление V.S -
переменная строкового типа. Должна представлять последовательность символов, формирующих число. V - результат - переменная типа Real или Integer. Er - код ошибки - переменная типа Integer.Пример:
Val(S,V,Er);
Pos(Substr:String; S:String) -
Ищет подстроку в строке.Параметры
Substr и S - строковые выражения. Pos ищет первое вхождение строки Substr в строку S и возвращает целочисленное значение, которое является индексом первого символа Substr внутри S. Если строка Substr не найдена, то Pos возвращает нуль.Пример:
n:=Pos(SubStr,S);
{если SubStr:='e', а S:='Hello!', то n=2}
Delete(Var S:String; Index:Integer; Count:Integer) - Удаляет из строки ее часть.
Параметр
S - переменная со строковым типом. Index и Count - целочисленные выражения. Delete удаляет Count символов из строки S, начиная с позиции Index. Если значение Index больше, чем длина S, то никакие символы не удаляются. Если Count определяет большее количество символов, чем остается в строке с позиции Index до конца строки, то удаляется остаток строки.Пример:
Delete(S,3,2);
{если S:='Hello!', то в результате выполнения этой команды S='Heo!'}Insert(SubStr:String; Var S:String; Index:Integer) - Вставляет подстроку SubStr в строку S.
Параметр
S - исходная строка, SubStr - подстрока, вставляемая в строку S. Index - позиция, с которой подстрока SubStr вставляется в строку S. Если в результате строка длиннее 255-и символов, то она усекается до 255 символов.Пример:
Insert('Student',S,4);
{если S:='Hello!', то в результате выполнения команды S='HelStudentlo!'}Пример:
S2:=Copy(S,2,4); {если S:='Student', то в результате выполнения команды S2='tude'}Length(S : String) - Возвращает динамическую длину строки (количество символов в строке).
Пример:
n:=Length(S);
{если S:='Hello!', то в результате выполнения команды n='6'}
GetTime(Var Hour, Minute, Second, Sec100 : Word) - возвращает текущее время, установленное в операционной системе (Unit DOS)
Пример:
GetTime(HH, MM, SS, S100);
{параметры: HH, MM, SS, S100 - типа Word}Задание N6:
Заменить все символы "," на ";" в заданной с клавиатуры строке. Результат вывести на экран.
Задание N7:
Используя операторы работы со строками, преобразовать время, полученное с помощью процедуры GetTime (Unit DOS) в строковую переменную в формате: "Текущее время: HH-часов, MM-минут, SS-секунд" и вывести значение этой переменной в заданные координаты на экран.
Занятие N5
Задание N8:
Используя операторы работы со строками и вывода на экран текста в заданные координаты с помощью GotoXY, написать программу "бегущая строка". Строка вводится с клавиатуры и должна циклически двигаться справа налево.
Занятие N6
Подпрограммы. Процедуры и функции.
Procedure идентификатор(параметры); Var описание локальных переменных; Begin End; Function идентификатор(параметры):тип; Var описание локальных переменных; Begin идентификатор:=результат; End;
Пример:
Program Ex6_Procedure_Function; Uses Crt; Var R:Real; n,X1,Y1:Integer; Procedure WriteXY(Var X,Y:Integer;M:Real); Begin GotoXY(X,Y); Write(M); X:=WhereX; Y:=WhereY; End; Function XStepN(X:Real;N:Integer):Real; Var I:Integer; Y:Real; Begin Y:=1; For I:=1 To N Do Y:=Y*X; XStepN:=Y; End; Begin X1:=1; Y1:=5; R:=XStepN(3,4); WriteXY(X1,Y1,R); R:=XStepN(2,3); WriteXY(X1,Y1,R); End.
Задание N9:
Переделать задание N8 так, чтобы вращение "бегущей строки" (сдвиг на один символ) осуществлялось в процедуре. Пример вызова процедуры: ShiftStr(S) .
Задание N10:
Организовать процедуры рисующие цифры от '0' до '9' в заданных координатах (левый верхний угол цифры), в текстовом режиме (подобно заданию N3) и выполнить их вызов в основной программе так, чтобы получилось какое-то число. Пример вызова процедуры: Number0(X,Y); Number9(X,Y); .
Занятие N7
Оператор выбора Case
Оператор выбора
Case состоит из выражения (селектора) и списка операторов, каждый из которых выполнится в определенном случае.Case выражение Of вариант: оператор; ... вариант: оператор; Else оператор End
Часть "
Else" является необязательной."вариант" состоит из одной или большего количества констант или диапазонов, разделенных запятыми.
Примеры:
Program Ex7_Case1; Uses Crt; Var Ch:Char; Begin Repeat Ch:=ReadKey; Case Ch Of 'A'..'Z', 'a'..'z': WriteLn('Letter'); '0'..'9' : WriteLn('Numeric'); '+', '-', '*', '/': WriteLn('Operator'); Else WriteLn('Special symbol') End; Until Ch='q' End. Program Ex7_Case2; Uses Crt; Var Ch:Char; Begin Repeat Ch:=ReadKey; Case Ord(Ch) Of 72:WriteLn('Up'); 77:WriteLn('Right'); 80:WriteLn('Down'); 75:WriteLn('Left'); End; Until Ord(Ch)=27 End.
Задание N11:
Организовать процедуру, которой в качестве параметров подаются координаты вывода и строка, состоящая из цифр, которые нужно вывести. С помощью этой процедуры, используя оператор выбора Case, необходимо сделать вывод этой строки цифр, цифрами из задания N10. Пример вызова процедуры: BigNumb(X,Y,'60627943158'); .
Занятие N8
Генератор случайных чисел
Random(Range)
- возвращает случайное число.Если параметр
Range не определен, то результатом будет случайное число типа Real в диапазоне 0 <= X < 1.Если параметр
Range определен, то результатом будет случайное число в диапазоне 0 <= X < Range.Пример:
Write(Random);
Write(Random(100));
Randomize
- Инициализирует встроенный генератор случайных чисел с произвольным значением (полученным из системных часов).Задание N12:
Написать программу "Хранитель экрана". Организовать вывод текущего времени числами из задания N11, при этом необходимо добавить процедуру, выводящую разделитель часов, минут и секунд ":". Время должно периодически выводиться в произвольные координаты экрана. Выход из программы должен происходить при нажатии на любую клавишу.
Задание N12a:
Сделать презентацию по программе N12 в MS PowerPoint (при создании презентации руководствоваться следующим описанием Lab_N03.doc).
Для подготовки презентации нужно выслать себе на почту текст программы N12, а также скриншоты работы этой программы.
На слайдах презентации должны быть представлены:
- части текста программы, выполняющие определенные функции (отдельные процедуры, части основной программы);
- диаграмма, отображающая в качестве столбцов - количество строк в каждой процедуре программы;
- с помощью автофигур нарисованная блок-схема программы;
- эффекты анимации;
- навигация по слайдам.
Подготовить презентацию к следующему занятию (выслать себе на почту, чтобы можно было скачать и продемонстрировать ее на занятии).
Занятие N9
Работа с файлами
Assign(Fil, FileName);
- процедура, назначает файловой переменной имя внешнего файла.Параметр
Fil - переменная файлового типа - File (например: File of Integer) или Text. Параметр FileName - тип String, состоит из пути и имени файла: Примеры имен файла: 'FileName.txt' или 'C:\BP\FileName.txt'.Close(Fil);
- закрывает ранее открытый файл.
Procedure Reset(Var Fil :File [; Recsize :Word]);
- открывает существующий файл.Параметр
Fil - файловая переменная любого файлового типа - File (например: File of Integer) или Text.Параметр
RecSize - необязательный параметр, который может быть определен только, если Fil - нетипизированный файл. В этом случае, RecSize определяет размер блока, который нужно использовать при передаче данных. Если RecSize опущен, принят заданный по умолчанию размер блока в 128 байт. Пример:
Procedure ReWrite(Var Fil :File [; Recsize :Word]);
- создает и открывает новый файл. Пример:Append(Fil); -
процедура, открывает существующий файл для продолжения записи в файл.В режиме
{$I-} функция IOResult вернет 0, если операция была успешна, иначе, она возвращает отличный от нуля код ошибки.Program Ex9_File_SortString; Var Fil:Text; Nam:String; SA:Array [0..100] of String[60]; I,N:Integer; Begin N:=0; ReadLn(Nam); Assign(Fil,Nam); Reset(Fil); While Not EOF(Fil) Do Begin ReadLn(Fil,SA[N]); N:=N+1 End; Close(Fil); For I:=0 To N-1 Do WriteLn(SA[I]); Assign(Fil,'namesort.txt'); ReWrite(Fil); For I:=N-1 DownTo 0 Do WriteLn(Fil,SA[I]); Close(Fil) End.
Задание N13
Написать программу, считывающую файл и записывающую в другой файл, только те строки, в которых содержится ключевое слово, которое нужно ввести с клавиатуры.
Задание N14
Написать программу, считывающую текстовый файл и осуществляющую скроллинг его содержимого по экрану вперед и назад при нажатии определенных клавиш.
Занятие N10
Работа с графикой
(для работы с графикой в Pascal под Windows 7 и под Remote Desktop использовать Free Pascal или DOSBox)
Архиватор RAR
Модуль Graph:
Uses Graph
- подключение графического модуляInitGraph(GD,GM,Pat)
- Инициализирует графическую систему и переводит видеокарту в графический режим, соответствующий параметрам GD-"графический драйвер" и GM-"графический режим", информация по этим параметрам - в разделе "Помощь" по модулю Graph - "Константы и типы GRAPH.TPU".CloseGraph
- Закрывает графическую систему.SetColor(Color)
- Устанавливает текущий цвет, используя палитру.SetBkColor(Color)
- Устанавливает текущий цвет фона.Line(X1,Y1,X2,Y2)
- Рисует линию от точки с координатами (X1, Y1) до точки с координатами (X2, Y2).MoveTo(150,150)
- Перемещает текущий указатель (CP) в точку с координатами (X, Y).LineTo(X,Y)
- Рисует линию от текущего указателя (CP) до (X,Y).Rectangle(X1,Y1,X2,Y2)
- Рисует прямоугольник, используя текущий тип и цвет линии.Circle(X,Y,R)
- Рисует окружность текущим цветом, используя точку (X, Y) как центр.SetFillPattern(Pattern,10)
- Устанавливает определяемый пользователем шаблон закраски.SetFillStyle(Pattern,13)
- Устанавливает цвет и стиль закраски.Bar(110,80,150,95)
- Рисует закрашенный прямоугольник, используя текущие стиль и цвет закраски.Bar3D(80,30,120,60,10,TopOn)
- Рисует параллелепипед, используя текущий стиль и цвет закраски.OutTextXY(X,Y,TextString)
- Отображает TextString в координатах (X, Y), текущим цветом.PutPixel(X,Y,Color)
- Ставит точку в координатах (X, Y), цветом Color.GetMaxX и GetMaxY
- Возвращают текущее разрешение по горизонтали: GetMaxX и вертикали: GetMaxY.ClearDevice
- Очищает графический экран, используя цвет фона, установленный SetBkColor.
Пример:
Program Ex10_Graph; Uses Crt, Dos, Graph; Const Pat='C:\BP\BGI'; Patt:FillPatternType=(128,64,32,16,8,4,2,1); Var GD,GM:Integer; Begin GD:=VGA; GM:=VGAHi; {For VGALo} InitGraph(GD,GM,Pat); SetColor(Green); Line(0,0,150,150); MoveTo(150,150); LineTo(170,90); SetColor(Red); Circle(50,50,20); SetColor(Yellow); Rectangle(40,20,70,70); SetFillPattern(Patt,10); {SetFillStyle(1,13);} Bar(110,80,150,95); Bar3D(80,30,120,60,10,TopOn); {TopOff} ReadLn; CloseGraph End.
Задание N15
Написать процедуру рисования машинки в заданных координатах, с помощью линий, кружков и прямоугольников. Пример вызова процедуры: CarNissanPatrol(10,10) .
Задание N16
Заставить двигаться машинку из задания N15 от края, до края экрана. При достижении края экрана, заставить ее двигаться в обратном направлении, выход из программы по нажатию клавиши "q".
Задание N17
Закодировать в текстовом файле координаты произвольной фигуры, состоящей из линий и вывести ее на графический экран.
Занятие N11
Генерация звуковых сигналов
Пример:
Program Ex11_Sound; Uses Crt; Var I:Integer; Begin For I:=0 To 80 Do Begin Sound(200); {Звук с частотой 200 Гц} Delay(1000); {На 200 миллисекунд} NoSound; {Выключаем динамик} End; End.
Задание N18
Заставить фигуру из задания N17 циклически двигаться от края до края экрана. При достижении краев экрана проигрывать мелодию или звуковой сигнал. Выход из программы по нажатию клавиши "Esc".
Отображение графиков функций
Задание N19
Отобразить график функции: y=a*x*x+b*x+c (в заданном диапазоне значений [X1,X2] и с заданным шагом dX), где a, b, c, константы, заданные произвольно с клавиатуры. Начало диапазона X1 должно соответствовать левому краю экрана, в конец диапазона X2 правому краю экрана. Отдельные точки графика должны быть соединены линиями. Перед рисованием графика отобразить и подписать оси X и Y.
Занятие N12
Работа с записями
Пример:
Program Ex12_Record; Uses Crt; Type rec = record FirstName:String; LastName :String; Age :Byte; end; Var Baza: Array[0..100] Of rec; I: Integer; begin For I:=0 To 4 Do Begin Write('FirstName='); ReadLn(Baza[I].FirstName); Write('LastName='); ReadLn(Baza[I].LastName); Write('Age='); ReadLn(Baza[I].Age); End; WriteLn('FirstName LastName Age'); For I:=0 To 4 Do WriteLn(Baza[I].FirstName,' ',Baza[I].LastName,' ',Baza[I].Age); End.
Задание N20
Написать программу для воспроизведения рисунка, записанного в специальном формате в файле с расширением "vec". Рисунок поместить в центр экрана. Под рисунком вывести имя файла, включая путь.
Графическое изображение представляет собой набор графических примитивов: точек, отрезков, прямоугольников и эллипсов различных цветов. Прямоугольники и эллипсы могут иметь заливку. Изображение имеет 16 цветов (коды цветов 0-15).
Файл содержит записи, каждая из которых состоит из фиксированного набора полей, описывающих графический примитив. Все координаты указываются в пикселях относительно левого верхнего угла изображения, имеющего координаты (0,0). Оси направлены: 0X - вправо, 0Y - вниз. Графические примитивы отображаются относительно текущей позиции курсора, которая может быть изменена специальной командой.
Формат записи:
Таблица 1. Содержимое поля Operation.
Код операции | Вид операции |
0 | Запись содержит указание размера рисунка в пикселях (в полях X и Y). Если 7 бит поля Color установлен, то рисунок имеет заливку фона, код цвета которого указан в битах 0-3. |
1 | Указание позиции курсора (X,Y) относительно левого верхнего угла рисунка. Поле Color не несет полезной информации. |
2 | Рисование пикселя в позиции (X,Y). Цвет пикселя задан в младших 4-х битах (0-3) поля Color. |
3 | Рисование отрезка из текущей позиции курсора в точку (X,Y). Цвет задан в битах 0-3 поля Color. Позиция курсора изменяется на (X,Y). |
4 | Рисование прямоугольника, два диагональных угла которого заданы текущей позицией курсора и точкой (X,Y). Цвет задан в битах (0-3) поля Color. Признак заливки - бит 7 установлен в 1. |
5 | Рисование эллипса с центром в текущей позиции курсора, и радиусами, заданными в полях X и Y. Цвет задан в битах (0-3) поля Color. Признак заливки - бит 7 установлен в 1. |
6 | Заливка области, ограниченной контуром, начиная с точки (X,Y). Цвет контура задан в битах 0-3, а цвет заливки - в битах 4-7 поля Color. |
Примечания:
1. Запись с кодом 0 является первой и единственной в файле.
2. Позиция курсора изменяется на (X,Y) только в операциях с кодами 1 и 3.
Кодировка цвета:
Цвет | Код |
Black | 0 |
Blue | 1 |
Green | 2 |
Cyan | 3 |
Red | 4 |
Magenta | 5 |
Brown | 6 |
LightGray | 7 |
DarkGray | 8 |
LightBlue | 9 |
LightGreen | 10 |
LightCyan | 11 |
LightRed | 12 |
LightMagenta | 13 |
Yellow | 14 |
White | 15 |
Литература
1. Учебные и методические пособия [Электронный ресурс] - Режим доступа: http://dssp.karelia.ru/web/tutorials.shtml