Последнее изменение документа:
|
Урок 0.   Вступление. Урок 1.   Среда ТурбоПаскаль. Урок 2.   Структура программы. Урок 3.   Работа со строками. Урок 4.   Работа с дробными числами, формат вывода. Урок 5.   Математические команды Урок 6.   Ввод и использование переменных. Урок 7.   Типы переменных. Урок 8.   Условный оператор. Случайные числа. Урок 9.   Работа с символьным экраном. 16 цветов. Урок 10.   Цикл Repeat ... Until Урок 11.   Цикл While. Составной оператор Урок 12.   Цикл For |
Урок 13.   Примеры использования цикла FOR Урок 14.   Движущиеся объекты Урок 15.   Процедуры в программе Урок 16.   Функции в программе Урок 17.   Массивы Урок 18.   Графический режим, команды Урок 19.   Урок 20.   Урок 21.   Урок 22.   Урок 23.   Урок 24.   Урок 25.   |
Язык программирования Паскаль был создан как язык для обучения программированию, но оказался настолько удобным, что на нем создавались многие простые и эффективные прикладные программы. Работает практически на любых компьютерах и не требует больших ресурсов. (Мы начинали с IBM286 и продолжали вплоть до Pentium II 333). Цель данного пособия в том, чтобы обучить учащихся начиная с "нуля" до создания своих работоспособных программ, показать простейшие приемы на примерах. Приведенные примеры можно скопировать для выполнения в среде TurboPascal: 1. Включить просмотр в виде HTML 2. Найти, выделить пример и скопировать его в буфер обмена. 3. Вставить в редактор Word и сохранить как файл DOS с разбиением на строки оставив в имени до 8 символов с расширением "pas", например "Primer15.pas". 4. Открыть и запустить на выполнение пример в среде TurboPascal.
Среда ТурбоПаскаль была создана для работы в DOS, но также хорошо работает под WINDOWS 95/98. Нужно учитывать, что переключение регистра Rus/Lat происходит по иному, чем в WINDOWS и зависит от русификатора. У нас латинский включается Ctrl+LeftShift, а русский - Ctrl+RightShift. Текст программы набирается в окне желтым цветом на синем фоне, при правильном написании основные операторы перекрашиваются в белый цвет (но не все). Операторы конечно должны быть написаны без ошибки, регистр верхний или нижний среде безразличен, но для удобства рекомендуется писать с большой буквы (Begin), соcтавные - каждое использованное слово с большой буквы (ClrScr), начало и конец программы - полностью в верхнем регистре (END.) Рекомендуется использовать отступы в начале строки (лесенка) для улучшения наглядности программы, см. примеры. Мышь использовать можно, но после перехода в некоторые режимы ее работа может нарушиться, старайтесь пользоваться клавиатурой. Основные сочетания клавиш в среде ТурбоПаскаль: Ctrl+F9 - Запуск программы на выполнение. Alt +F5 - Просмотр выполнения программы на текстовом экране Shift+Курсор - Выделение текста (например для копирования) Ctrl+Ins - Копирование выделенного текста в буфер Shift+Ins - Вставка текста из буфера обмена в позицию курсора Alt+Забой - Отмена редактирования (при ошибочном действии) Ctrl+K+H - (Hide) Скрыть выделение текста Ctrl+K+V - Перенести (moVe) выделенный текст в позицию курсора Ctrl+K+C - (Copy) Скопировать выделенный текст Ctrl+Home - Переход в начало текста Ctrl+End - Переход в конец текста Home (End) - Сдвиг курсора в начало (конец) строки Ctrl+<- (->) - Сдвиг курсора на слово влево (вправо) Shift+F1 - получить помощь по текущему оператору Alt +X - Выход из среда ТурбоПаскаль (окончание работы)
Текст программы состоит из строго определенных по порядку разделов. Рассмотрим на примере: (все что написано в таких скобках- {...} является комментарием и не влияет на выполнение программы, служит для улучшения понимания автором или другим человеком, почаще используйте комментарии даже для простых учебных программок)
Program Primer2; {Заголовок программы, на выполнении не отражается, может быть пропущен} Var {Объявление раздела переменных, здесь до следующего раздела описываются использованные переменные и их тип} x,y:Integer; {Собственно описание двух переменных, тип - целые числа} BEGIN {Начало программы} x:=5; y:=6; {Операторы присваивающие значение переменным} Writeln(x+y); {Оператор вывода на экран с переводом строки} END. {Конец программы, все что написано после точки - игнорируется}
*** Задание 2: Измените программу, так чтобы решать примеры на *, - и со скобками (деление будет чуть позже). Не забывайте использовать Alt+F5 для просмотра результата выполнения программы на текстовом экране.
Строки часто используются для оформления программы, для улучшения внешнего вида, для хранения имен, паролей и т.д. Строка может храниться в переменной типа "String" или выводиться на экран прямо из текста программы. Строка может состоять из любых символов и обязательно указывается в одинарных кавычках: 'Это строка'. Две строки можно складывать в одну (S3:=S1+S2). Из строки можно вырезать часть в другую, например команда S2:=Copy(S1,3,6) означает вырезать из строки S1 6 символов начиная с 3-го и положить их в строку S2. Чтобы узнать длину строки используют оператор Length(S); он возвращает длину строки в символах, например Length('123456789') будет равен 9.
Program Primer3; {Заголовок программы} Var {Объявление раздела переменных} S1, S2, S3: String; {Переменные S1,S2 и S3 типа String (строка)} BEGIN {Начало программы} Writeln('Меня зовут Вася!'); {Оператор вывода на экран строки} S1:='Язык Паскаль '; {Оператор присваивающий значение переменной S1} S2:=' легко работает со строками'; S3:=S1+S2; {Две строки можно складывать в одну} Writeln(S3); {Оператор вывода на экран результата} Writeln(S1, S2); {Тоже самое на экране, другой способ} S3:= Copy(S1,6,7); {Вырезаем слово "Паскаль"} Writeln(S3); {Проверяем на экране} END. {Конец программы}
*** Задание 3: Измените программу, так чтобы вывести другую часть строки - "Язык".
При работе с дробными числами (1.55) используют переменные типа "Real". Для вывода на экран дробных чисел используют формат вывода: команда Writeln(1/2 :5:3) означает вывести число на 5 знакоместах с 3 знаками после запятой (0.500). При выводе целых чисел или строк можно использовать формат только с указанием количества знакомест: Writeln(Name :10, God :5). Обратите внимание, что разделитель - точка, а не запятая.
Program Primer4; Var {Объявление раздела переменных} Name: String; {строка} God: Integer; {целое} Many: Real; {Дробное} BEGIN {Начало программы} Name:='Вася'; {Оператор заполнения переменной} God:=1986; {Оператор заполнения переменной} Many:=88.12; {Оператор заполнения переменной} Writeln(Name :10, God :5, Many :7 :2); {Оператор вывода на экран с использованием формата вывода} Writeln(Name , God , Many ); {Тоже самое без формата, неудобочитаемо} END. {Конец программы}
*** Задание 4: Измените программу, так чтобы вывести переменные в обратном порядке: 88.12 1986 Вася
В тексте программы используют следующие команды: + Сумма - Разность * Произведение / Частное (разделить) 3*(2+4) Скобки определяют порядок выполнения действий Abs(X) Модуль числа Sqr(X) Квадрат числа Sqrt(X) Квадратный корень 10 Div 3 Деление нацело (результат = 3) 10 Mod 3 Остаток от деления (результат = 1) Trunc(x) Целая часть числа
Для ввода переменных используют оператор Readln, для подсказки, что именно ждет компьютер от вас, перед этим выведите строку-приглашение.
Program Primer6; Var {Объявление раздела переменных} Name: String; {строка} God: Integer; {целое} Many: Real; {Дробное} BEGIN {Начало программы} Write('Как Вас зовут? '); {Вывод приглашения} Readln(Name); {Ввод переменной Name} Write('Ваш год рождения? '); {Вывод приглашения} Readln(God); {Ввод переменной God} Write('Сколько стоит булка хлеба? '); {Вывод приглашения} Readln(Many); {Ввод переменной God} Writeln('Привет ',Name); {Оператор вывода на экран} Readln; {Пустой ввод используют для остановки программы до нажатия "Enter"} END. {Конец программы}
*** Задание 6: Измените программу, так чтобы она спрашивала фамилию.
Тип переменых указывается в разделе "Var" до начала программы "BEGIN". Знаком "*" отмечены наиболее часто используемые типы. Type Range Shortint -128..127 * Integer -32768..32767 Longint -2147483648..2147483647 * Byte 0..255 Word 0..65535 * real 2.9e-39..1.7e38 single 1.5e-45..3.4e38 double 5.0e-324..1.7e308 extended 3.4e-4932..1.1e4932 comp -9.2e18..9.2e18 * String Строка от 0 до 255 символов String[10] Строка от 0 до 10 символов (используется для экономии памяти) Boolean - логический тип, принимает только зачение True (Истина) или False (Ложь). * Char - символьный тип, используется для ввода нажатой клавиши.Формат вывода
Условный оператор позволяет выполнять команды только при соблюдении определенного условия. Часто применяется для проверки значения переменной, например пароля, нажатой клавиши и т.д. Опрератор выглядит так: If (Логическое выражение) Then (Оператор выполняется при истинности условия) Else (Оператор выполняется при ложности условия, может не использоватья, пропускаться); Обратите внимание что перед Else знак ";" не ставится. Случайное число генерирует оператор "Random(Х)", где Х - максимальное целое число, от 0 до которого (не включительно) генерируются числа. Для "перемешивания" случайных чисел используют оператор "Randomize" (в начале программы).
Program Primer8_1; {Проверка пароля} Var {Объявление раздела переменных} Pasw: String; {строка для пароля} BEGIN Write('Стой, скажи пароль? '); {Вывод запроса пароля} Readln(Pasw); {Ввод переменной Pasw} If Pasw='Луна' {Проверка пароля} Then Writeln('Проходи, друг!'){Пароль верный} Else Writeln('Стой, шпион!'); {Пароль неверный} Readln; {остановка программы до нажатия "Enter"} END. {Конец программы}
*** Задание 8_1: Измените в программе пароль, результирующие надписи.
Program Primer8_2; {Программа "Угадайка"} Var {Объявление раздела переменных} a,b: Integer; {Загаданное и отгадываемое числа} Label M1; {Метка M1} BEGIN Randomize; {"перемешивание" случайных чисел} Write('ПРОГРАММА УГАДАЙКА '); {Вывод заголовка} a:=Random(10)+1; {интервал [0..9]+1 получается интервал [1..10]} M1: {Метка для перехода "еще раз угадать"} Write('Угадай число до 10 '); {Вывод приглашения} Readln(b); {Ввод угадываемого числа} If a > b Then Writeln('Больше!');{В следующий раз вводи число больше} If a < b Then Writeln('Меньше!');{В следующий раз вводи число меньше} If a = b Then Writeln('Ура! Угадал'); {И так понятно ;)} If a<>b Then Goto M1; {Еще попытка, переход на метку} Readln; {остановка программы до нажатия "Enter"} END. {Конец программы}
*** Задание 8_2: Измените интервал загадываемых чисел до 100.
Для работы с символьным экраном (символьный, в отличие от графического, может быть заполнен только символами) используют униту Crt. Для учащегося это означает, что написав в программе строку "Uses Crt;" мы сразу можем использовать новые команды, которые раньше Паскаль не знал: ClrScr - очистка экрана, обычно используется в начале программы; GotoXY(x,y) - установка курсора (для Write) в позиции x - номер столбца (от 1 до 80) и y - номер строки от 1 до 25. TextBackground - цвет фона выводимых символов TextColor - цвет выводимых символов KeyPressed - нажата любая клавиша (Boolean) ReadKey - чтение символа нажатой клавиши (Char) =======16 цветов: (Можно использовать цифры или название: TextColor(Red) = TextColor(4) ) Black 0 DarkGray 8 Blue 1 LightBlue 9 Green 2 LightGreen 10 Cyan 3 LightCyan 11 Red 4 LightRed 12 Magenta 5 LightMagenta 13 Brown 6 Yellow 14 LightGray 7 White 15
Program Primer9; {Использование Crt} Uses Crt; {Подключение униты Crt для работы с экраном} BEGIN ClrScr; {Очистка экрана} TextColor(14); {Желтый цвет} GotoXY(35,12); {Установка курсора примерно в середине экрана} Write('Это середина экрана'); {Вывод надписи} TextColor(11); {Зеленый цвет} GotoXY(1,1); Write('Это верхний левый угол'); TextColor(5); {Красный цвет} GotoXY(55,25); Write('Это нижний правый угол'); GotoXY(30,25); Write('Нажмите Enter'); Readln; {остановка программы до нажатия "Enter"} END. {Конец программы}
*** Задание 9: Добавьте надписи "верхний правый" и "нижний левый".
Циклы - это повторение участка программы, обычно с изменением какого либо параметра. При работе с циклами проявляются скоростные возможности компьютера. Все предидущие уроки можно было посчитать на пальцах или калькуляторе. Все циклы должны заканчиваться, сработав по определенному алгоритму. Если почему-то цикл не заканчивается, программа "зацикливается", не может остановиться, это ошибка программирования. Существует три типа циклов. Первый из них - цикл с проверкой условия в конце цикла: Repeat (оператор) (оператор) ... Until (условие) Видно, что внутри цикла может находиться множество операторов и они будут повторяться до тех пор, пока условие не будет истинно.
Program Primer10; {Использование цикла Repeat ... Until} Uses Crt; {Подключение униты Crt} Var i:Integer; BEGIN ClrScr; {Очистка экрана} i:=0; {переменная для счетчика цикла} Repeat TextColor(i); {цвет по порядку} GotoXY(30,i+3); {Установка курсора в середине экрана соответствующей строки} Write('Это цвет N ',i); {Вывод номера цвета} i:=i+1; {Увеличение счетчика на 1} Until i=16; {При i=16 цикл заканчивается} TextColor(12);GotoXY(30,25); Write('Нажмите Enter'); Readln; {остановка программы до нажатия "Enter"} END. {Конец программы}
*** Задание 10: Измените программу, так чтобы надписи выводились не столбиком, а лесенкой.
Цикл While похож на цикл Repeat, но проверка условия цикла происходит в начале цикла, таким образом цикл While может сразу закончиться, ни разу не выполнившись. Схема цикла: While (условие) do (один оператор); Еще одно отличие от предыдущего цикла в том что после оператора "do" выполняется один оператор. Чтобы заставить программу выполнять несколько операторов делают составной оператор по следующей схеме: While (условие) do begin (оператор1); (оператор2); (...); end; Одну и ту же программу можно написать используя разные циклы, вот как будет выглядеть программа Primer10 с циклом While:
Program Primer11; {Использование цикла While ... do ...} Uses Crt; {Подключение униты Crt} Var i:Integer; BEGIN ClrScr; {Очистка экрана} i:=0; {переменная для счетчика цикла While} While i<16 do {При i<16 цикл выполняется} begin TextColor(i); {цвет по порядку} GotoXY(30,i+3); {Установка курсора в середине экрана соответствующей строки} Write('Это цвет N ',i); {Вывод номера цвета} i:=i+1; {Увеличение счетчика на 1} end; TextColor(12);GotoXY(30,25); Write('Нажмите Enter'); Readln; {остановка программы до нажатия "Enter"} END. {Конец программы}
*** Задание 11: Измените программу, так чтобы цвета выводились в обратном порядке, начиная с 15 до 0.
Цикл "For" - наиболее часто используемый в программировании. Он применяется в тех случаях, когда заранее известно количество циклов. Вид оператора: For i:=0 to 10 do (оператор), где i - переменная цикла, тип - целое, автоматически увеличивается на 1 после каждого цикла, ее можно использовать внутри цикла (см Primer12_1), но нежелательно изменять, так как вожможно проскочить конец цикла и цикл не остановится. оператор - один простой оператор или составной (см. урок 10). Для цикла с уменьшением переменной используется вид: For i:=20 downto 1 do (оператор).
Program Primer12_1; {Использование цикла For} Uses Crt; Var i:Integer; {переменная цикла} BEGIN ClrScr; {Очистка экрана} For i:=1 to 24 do {24 раза} WriteLn(i); {вывод чисел 1-24 столбиком} Write('Нажмите Enter'); Readln; {остановка программы до нажатия "Enter"} END.
*** Задание 12_1: Измените программу, так чтобы эти же числа выводились в обратном порядке.
Program Primer12_2; {Использование цикла For для рисования символьной рамки} Uses Crt; Var i:Integer; {переменная цикла} x1,y1, x2,y2: Integer; {координаты верхнего левого и нижнего правого углов} BEGIN ClrScr; {Очистка экрана} x1:=3;y1:=3; x2:=50;y2:=20; {Задание координат рамки} For i:=x1 to x2 do {верх рамки} begin GotoXY(i,y1);Write('*'); end; For i:=x1 to x2 do {низ рамки} begin GotoXY(i,y2);Write('*'); end; For i:=y1 to y2 do {левая часть рамки} begin GotoXY(x1,i);Write('*'); end; For i:=y1 to y2 do {правая часть рамки} begin GotoXY(x2,i);Write('*'); end; Write('Нажмите Enter'); Readln; {остановка программы до нажатия "Enter"} END.
*** Задание 12_2: Измените программу, так чтобы рамка прорисовывалась другими символами, добавьте ввод координат рамки с клавиатуры во время выполнения программы.
Цикл FOR широко используется в программировании, например: задача на суммирование числовых рядов. Требуется найти сумму всех натуральных чисел от 1 до 100 включительно. В разделе переменных нужно завести переменную цикла (обычно используют i) и переменную для суммирования, назовем Sum.
Program Primer13_1; {Использование цикла For для суммирования рядов} ... Var i,Sum: Integer; ... {Здесь пропушено оформление программы, аналогичное предыдущим примерам} Sum:=0; {Обнуление суммы} For i:=1 to 100 do Sum:=Sum+i; {Добавление всех 100 чисел к сумме} Writeln('Сумма первых 100 чисел равна ',Sum); {Вывод результата} ...
*** Задание 13_1: Найдите сумму квадратов чисел от 1 до 10 включительно.
Для использования движущихся объектов используют следующий алгоритм: 1. Задаются начальные координаты x,y и скорости 2. Выводится объект с координатами x,y 3. Небольшая задержка для того чтобы объект увидеть 4. Стирается объект с координатами x,y 5. Изменяются координаты x,y (при необходимости проверка на ограничение координат) 6. Пока объект движется - переход на п.2 Для изменения координат используют величину изменения - скорость, причем скорость по координатам x и y - отдельные независимые переменные, назовем их vx, vy. Для плвного изменения координат и скорости используем тип Real (дробные), а для вывода будем каждый раз использовать функцию Trunc(x), которая отбрасывает от числа дробную часть, превращая его в целое.
Program Primer14; { Движущиеся объекты} Uses Crt; {Нужно для организации задержки и установки курсора} Var X,Y,Vx,Vy: Real; {дробные величины} BEGIN ClrScr; X:=10.0; Y:=5.0; {Задаем начальные координаты} Vx:=0.5; Vy:=1.2; {Задаем начальные скорости} Repeat {Начало цикла движения} GotoXY(Trunc(X),Trunc(Y)); {Установка курсора по целым координатам} Write(Chr(2)); {Вывод символа с номером 2 - рожица} Delay(300); {Задержка на 0,3 сек. (число в тысячных долях сек)} GotoXY(Trunc(X),Trunc(Y)); Write(' '); {Вывод пробела - стирание рожицы} X:=X+Vx; Y:=Y+Vy; {Изменение координаты} If (X>78) or (X<2) Then Vx:=-Vx; {Отражение от боковых стенок} If (Y>24) or (Y<2) Then Vy:=-Vy; {Отражение от верхних-нижних стенок} Until KeyPressed; {Повторять цикл движения до нажатия любой клавишы} END.
*** Задание 14: Измените скорость движения, начальные скорости, координаты стенок отражения. Покажите след движущегося объекта. Добавьте второй движущийся объект.
В примере 12_2 видно что две строки постоянно повторяются, при этом изменяются только несколько параметров (значений). Наглядность программы не высока, то есть не сразу видно, что делается и зачем. В таких случаях очень эффективно использовать процедуры. Процедура описывается перед началом основной программы (перед BEGIN) и имеет такую же структуру, как и сама программа: Заголовок (обязательно), разделы Var, Const для описания местных переменных и констант, Begin, End;. Вызывается процедура в программе по имени. Вот как выглядит пример 12_2 с использованием процедур.
Program Primer15; {Использование процедур} Uses Crt; Var i:Integer; {переменная} Procedure Ramka1(x1,y1,x2,y2: Integer); {Заголовок процедуры для рисования символьной рамки} Var i,j: integer; {Местная переменная для цикла} Begin GotoXY(x1,y1);Write(#218); {Верхний левый угол} For i:=x1+1 to x2-1 do Write(#196); {Верхняя линия} Write(#191); {Верхний правый угол} For j:=y1+1 to y2-1 do {В цикле стенки и внутренности рамки} begin GotoXY(x1,j);Write(#179); {Правая стенка} For i:=x1+1 to x2-1 do Write(#32); {Пробелы внутри рамки} Write(#179); {Левая стенка} end; GotoXY(x1,y2);Write(#192); {Нижний левый угол} For i:=x1+1 to x2-1 do Write(#196); {Нижняя линия} Write(#217); {Нижний правый угол} end; BEGIN ClrScr; {Очистка экрана} Ramka1(1,1,79,25); {Вызов большой рамки} Ramka1(9,9,40,15); {Вызов другой рамки} Write('Нажмите Enter'); Readln;{остановка} END.
*** Задание 15_1: Добавьте еще несколько рамок. Добавьте в процедуру еще один параметр - цвет рамки. 15_2: Составьте процедуру для двойной рамки Ramka2 (символы 201,205,187,186,186,200,205,188,32), 15_3: Составьте процедуру для комбинированной рамки Ramka12 (символы 218,196,183,179,186,212,205,188,32). Еще несколько полезных процедур.
{Процедура для вывода строки в определенном месте экрана:} Procedure GWrite(x,y:Integer;S:String); begin GotoXY(x,y); Write(S); end; {Процедура для установки цвета символов и фона (да и писать короче):} Procedure ColFon(c,f:Integer); begin TextColor(c); TextBackground(f); end;
*** Задание 15_4: Придумайте еще несколько процедур на пройденный материал.
Функции по структуре очень похожи на процедуры, так же описываются до использования, но в отличие от процедур они возвращают в программу значение переменной определенного типа. Удобно использовать функции для вычислений, которых нет в стандартном Паскале или которые нужно вычислять много раз в разных частях программы. Например, функция для суммирования двух целых:
Function Summa2(a,b:Integer):Integer; begin Summa2:=a+b; end;
Обратите внимание, что кроме типа параметров указывается тип функции, который конечно же может быть и другим типом. Значение функции присваивается внутри функции, имя должно совпадать с объявленным в заголовке. В программе вызов функции выглядит например так:
WriteLn(Summa2(3,4)); {Выводит на экран число "7"}
*** Задание 16: Составте следующие функции: а) Суммирование трех целых чисел a,b,c; б) Расстояние между двумя точками (x1,y1) и (x2,y2); в) Выделение первых 5 букв в строке.
Массивы - это множество элементов одного типа, например, целые числа, строки и т.д. Массивы задаются в разделе "Var" в следующем виде:
M:Array[0..10]of Integer; {Одномерный массив из 11 целых чисел} M10x10:Array[0..9,0..9]of Integer; {Двумерный массив из 100 целых чисел} MS:Array[0..999]of String; {Одномерный массив из 1000 строк}
Обращение к элементу массива происходит по его индексу:
M[0]:=1000; M10x10[5,9]:=10000; MS[1]:='Строка N1';
Для пробегания всего массива удобно использовать цикл "For":
For i:=0 to 10 do M[i]:=0; {Обнуление массива} For i:=0 to 999 do MS[i]:='Строка N'+IntToStr(i); {Заполнение массива строками с номерами}
Заполнять массив можно с клавиатуры, но нужно позаботиться об интерфейсе, чтобы заполняющему было понятно, что делать:
For i:=0 to 4 do {Ввод 5 строк} begin Writeln('Введите строку N',i+1);{Номера строк начинаются с 0, а человек привык с 1 ;)} Readln(MS[i]); {Заполнение массива строками с клавиатуры} end;
Также для вывода на экран используется цикл "For". Пример вывода небольшой двумерной матрицы на символьный экран:
For i:=0 to 9 do {по столбцам} For j:=0 to 9 do {по строкам} begin GotoXY(i*5+1,j+2);Write(M10x10[i,j]); {Расстановка и вывод элементов} end;
*** Задание 17: Составте и выведите на экран матрицы заполненные по правилу: а) Одномерная матрица из 10 целых чисел, первое равно 1, каждое последующее больше предыдущего в 2 раза; б) Матрицу 10 на 10 заполненную случайными целыми числами до 1000; в) Матрицу из 7 строк, заполненную днями недели.
Графический режим используется для вывода на экран графических эдементов. Для его включения обычно используется унита Graph и файл egavga.bgi, у нас он находится в отдельной директории BGI. Для ускорения набора текста можно воспользоваться каким либо графическим примером, например, для LINE:
uses Crt, Graph; {графическая унита} var Gd, Gm: Integer; {служебные переменные} begin Gd := Detect; {автоматический подбор графического режима, можно другие} InitGraph(Gd, Gm, 'BGI');{в кавычках - путь до файла egavga.bgi} if GraphResult <> grOk then Halt(1); {если чего либо не хватает - выход} Randomize; { Эти строки} repeat { из примера } Line(Random(200), Random(200), Random(200), Random(200)); { можно удалить} until KeyPressed; { и заменить своими} Readln; {остановка} CloseGraph; {Закрытие графического режима} end.
При таком режиме включается графика 640х480 точек, координаты отсчитываются от верхнего левого угла: X - вправо, Y - вниз. Некоторые графические команды: LINE(x1,y1,x2,y2) - линия между двумя точками; Rectangle(x1,y1,x2,y2) - прямоугольник, определяемый двумя точками; Circle(x,y,R) - круг с центром x,y и радиусом R; PutPixel(x,y,c) - точка с координатами x,y и цвета c; SetColor(c) - установка текущего цвета; ClearDevice - очистка экрана; *** Задание 18: Составте программу, рисующую в графическом режиме а) колобок; б) паровоз с) домик и др.