На основную страницу
Последнее изменение документа:
Основы языка программирования Паскаль
(уроки с примерами)

По занятиям проведенным в ЦДЮТ г. Дивногорска v1.9 2000-2001

СОДЕРЖАНИЕ

Урок 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.  

Урок 0. Вступление

  Язык программирования Паскаль был создан как язык для обучения
программированию, но оказался настолько удобным, что на нем создавались
многие простые и эффективные прикладные программы. Работает практически
на любых компьютерах и не требует больших ресурсов. (Мы начинали с IBM286 и
продолжали вплоть до Pentium II 333).
 Цель данного пособия в том, чтобы обучить учащихся начиная с "нуля" до
создания своих работоспособных программ, показать простейшие приемы на
примерах.
 Приведенные примеры можно скопировать для выполнения в среде TurboPascal:
 1. Включить просмотр в виде HTML
 2. Найти, выделить пример и скопировать его в буфер обмена.
 3. Вставить в редактор Word и  сохранить как файл DOS с разбиением на строки
    оставив в имени до 8 символов с расширением "pas", например "Primer15.pas".
 4. Открыть и запустить на выполнение пример в  среде TurboPascal.
Содержание


Урок 1. Среда ТурбоПаскаль
  Среда ТурбоПаскаль была создана для работы в 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    - Выход из среда ТурбоПаскаль (окончание работы)
Содержание


Урок 2. Структура программы
 Текст программы состоит из строго определенных по порядку разделов. Рассмотрим на примере:
(все что написано в таких скобках- {...} является комментарием и не влияет на выполнение
программы, служит для улучшения понимания автором или другим человеком, почаще используйте
комментарии даже для простых учебных программок)
Program Primer2;	{Заголовок программы, на выполнении не отражается, может быть пропущен}
Var			{Объявление раздела переменных, здесь до следующего раздела описываются
				использованные переменные и их тип}
 x,y:Integer;		{Собственно описание двух переменных, тип - целые числа}
BEGIN			{Начало программы}
 x:=5; y:=6;		{Операторы присваивающие значение переменным}
 Writeln(x+y);		{Оператор вывода на экран с переводом строки}
END.			{Конец программы, все что написано после точки - игнорируется}
***  Задание 2: Измените программу, так чтобы решать примеры на *, - и со скобками (деление
 будет чуть позже).

 Не забывайте использовать Alt+F5  для просмотра результата выполнения программы на текстовом
экране.
Содержание


Урок 3. Работа со строками
 Строки часто используются для оформления программы, для улучшения внешнего вида, для
хранения имен, паролей и т.д. Строка может храниться в переменной типа "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: Измените программу, так чтобы вывести другую часть строки - "Язык".
Содержание


Урок 4. Работа с дробными числами, формат вывода
 При работе с дробными числами (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   Вася

Содержание

Урок 5. Математические команды
 В тексте программы используют следующие команды:
   +     Сумма
   -     Разность
   *     Произведение
   /     Частное (разделить)
3*(2+4)  Скобки определяют порядок выполнения действий
  Abs(X) Модуль числа
  Sqr(X) Квадрат числа
 Sqrt(X) Квадратный корень
10 Div 3 Деление нацело (результат = 3)
10 Mod 3 Остаток от деления (результат = 1)
Trunc(x) Целая часть числа

Содержание


Урок 6. Ввод и использование переменных
 Для ввода переменных используют оператор 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: Измените программу, так чтобы она спрашивала фамилию.
Содержание


Урок 7. Типы переменных
 Тип переменых указывается в разделе "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    - символьный тип, используется для ввода нажатой клавиши.
Формат вывода
Содержание


Урок 8. Условный оператор. Случайные числа
 Условный оператор позволяет выполнять команды только при соблюдении определенного
условия. Часто применяется для проверки значения переменной, например пароля, нажатой
клавиши и т.д. Опрератор выглядит так:
 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.

Содержание


Урок 9. Работа с символьным экраном. 16 цветов.
 Для работы с символьным экраном (символьный,  в отличие от графического,
может быть заполнен только символами) используют униту 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: Добавьте надписи "верхний правый" и "нижний левый".
 
Содержание


Урок 10. Цикл Repeat ... Until.
 Циклы - это повторение участка программы, обычно с изменением какого
либо параметра. При работе с циклами проявляются скоростные возможности компьютера.
Все предидущие уроки можно было посчитать на пальцах или калькуляторе.
Все циклы должны заканчиваться, сработав по определенному алгоритму. Если почему-то цикл не
заканчивается, программа "зацикливается", не может остановиться, это ошибка программирования.
Существует три типа циклов. Первый из них - цикл с проверкой условия в конце цикла:
    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: Измените программу, так чтобы надписи выводились не столбиком, а лесенкой.
Содержание


Урок 11. Цикл While. Составной оператор.
 Цикл 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.
Содержание


Урок 12. Цикл For.
 Цикл "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: Измените программу, так чтобы рамка прорисовывалась другими символами,
добавьте ввод координат рамки с клавиатуры во время выполнения программы.
Содержание


Урок 13. Примеры использования цикла FOR
 Цикл 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 включительно.
Содержание


Урок 14. Движущиеся объекты
 Для использования движущихся объектов используют следующий алгоритм:
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: Измените скорость движения, начальные скорости, координаты стенок отражения.
		 Покажите след движущегося объекта.
                 Добавьте второй движущийся объект. 
Содержание


Урок 15. Процедуры в программе
 В примере 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: Придумайте еще несколько процедур на пройденный материал.

Содержание


Урок 16. Функции в программе
 Функции по структуре очень похожи на процедуры, так же описываются до использования,
но в отличие от процедур они возвращают в программу значение переменной
определенного типа. Удобно использовать функции для вычислений, которых нет в стандартном
Паскале или которые нужно вычислять много раз в разных частях программы.
Например, функция для суммирования двух целых:

 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 букв в строке.

Содержание


Урок 17. Массивы
 Массивы - это множество элементов одного типа, например, целые числа, строки и т.д.
Массивы задаются в разделе "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 строк, заполненную днями недели.


Содержание


Урок 17. Графический режим, команды
 Графический режим используется для вывода на экран графических эдементов. Для его включения
обычно используется унита 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: Составте программу, рисующую в графическом режиме
			а) колобок;
			б) паровоз
			с) домик и др.

Содержание




© KJA 2001
преподаватель информатики ЦДЮТ г.Дивногорск Курзюков Юрий Александрович 2001 г. mail