|
Последнее изменение документа:
|
|
Урок 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: Составте программу, рисующую в графическом режиме а) колобок; б) паровоз с) домик и др.