Программирование на Паскале.     На главную         Примеры программ на Pascal

(Из рубрики: Начинающим о компьютерных технологиях. Автор - NK)    nk-inform.narod.ru


Зачем учить язык программирования Pascal? На ум не приходит ни одной общеупотребительной программы, написанной на нем. И, поэтому, возникают естественные вопросы.

- Зачем зря терять силы и время на его изучение?
- И в выпускных классах школы зачем  обучать программировать именно на Паскале?
- Да и во многих вузах, нужно ли, для знакомства с основами программирования преподавать именно Pascal.

Ответ на эти вопросы прост, как все гениальное и гениален, как все простое. Это лучший из языков, с которого можно взять старт в необъятный мир технологий программирования. 


Итак, почему Паскаль? А давайте сравним его c Бейсиком.
 

  Pascal   BASIC
  Настоящий компилятор. Мы получаем программу EXE, которую можно запустить на любом компьютере.    Программы работают внутри оболочки (правда, есть редкие исключения - например Turbo Basic).
  Исходник программы на Паскале остается работоспособным практически во всех версиях и в некоторых случаях даже в Delphi.   Существует огромное количество Бейсиков несовместимых друг с другом.
  Строгое отношение к типам данных одновременно дисциплинирует и защищает от ошибок.   Строгая типизация появилась только в последних версиях.
  Модульность программ, и их структурированность с использованием функций и процедур наглядна и логична.   Модульность и реальную процедурность   поддерживают только последние версии.
  Переход с объектного Паскаля на Дельфи проходит довольно мягко.   VisualBasic очень сильно отличается от обычного Бейсика, к тому же постоянно меняется от версии к версии.
 

      Мое кратенькое руководство по программированию на Pascal не претендует на истину в последней инстанции. При желании можно найти кучу литературы, которая поможет вам усовершенствоваться на этом поприще. Но, как сложны и утомительны бывают для начинающих фундаментальные увесистые труды. Ведь весь тот объем, который в них заложен,  для простеньких программ может и не понадобиться. И как же тогда занырнуть в этот удивительный омут программистских изысканий, не слишком отягощая свои мозги объемной теорией?

     Мой курс, как раз и предназначен для этого. Все будет очень просто и доступно. Мы пройдемся по всем основным моментам программирования на Паскале. Будет рассмотрено большое количество примеров, которые помогут вам понять, как программы управляют компьютером для получения нужного результата.

Для наших экспериментов подойдут практически любые версии оболочек языка Pascal.

Предлагаются для рассмотрения следующие базовые темы основ программирования на Pascal.

1. Как создавать программы.
2. Программирование на Паскале - что это такое.
3. Программы работают с данными.
4. Переменные нужно объявлять.
5. Операция присваивания.
6. Простые примеры.
7. Построение выражений и встроенные функции.
8. Технология алгоритмического программирования.
9. Работа со строками.
10. Процедуры и функции.
11. Массивы.
12. Работа с файлами.
13. Графика на Pascal.
14. В заключение.
 

1. Как создавать программы?       В начало

    Рассмотрим создание простой программы:  таблица умножения.

Компьютер может выполнять сложные вычисления, но, для начала, научимся заставлять его выполнять простые. Как выглядит столбик таблицы умножения знают все школьники. Создадим программу, которая будет такой столбик выводить.

     Просто внимательно посмотрите на две таблицы ниже. Если вы хотите научиться программировать, эти пути вам придется проходить каждый раз при создании своего очередного программистского  шедевра.

  Постановка задачи Блок-схема Программа Комментарий
 

Начало программы


Ввод первого сомножителя


Присвоить второму 1


Получить произведение


Вывести его на экран


Увеличить второй на 1


Проверить не больше ли он 10


Выход

Var  A, B, C : Integer;

Begin
Write('Введи первый сомножитель: ');
Readln(A);


B:=1;

 Repeat
   C:= A * B;


   Writeln(A,' x ',B, ' = ', C);


   B:=B+1;

Until B > 10;


Readln;
end.

Объявление переменных определенного типа
Вывод на экран приглашения для ввода числа.
Считывание числа введенного с клавиатуры в переменную А
Присвоение переменной В значения равного 1.

Цикл вычисления произведения.

Вывод значений сомножителей и произведения на экран.
Увеличение второго сомножителя
Проверка величины сомножителя.

Ожидание нажатия Enter перед выходом из программы.

Теперь посмотрим,  как это работает.
 

  Оболочка программы Turbo Pascal 6.0 Ctrl + F9 - Запуск программы.
 

Только что я продемонстрировал вам на практике фундаментальные положения программирования:

 - Постановка задачи (создание модели эксперимента).
 - Формализация  (Перевод поставленной задачи на язык формул).
 - Создание компьютерной программы (создание программного кода).
 - Компьютерный эксперимент (запуск и выполнение программы).
 - Анализ результата и внесение корректировок при необходимости.

 

2. Программирование на Паскале - что это такое?       В начало

Программа - это набор команд (инструкций), которые управляют работой компьютера.
Инструкции записываются в виде строк в редакторе программной среды Pascal (например Turbo Pascal) и являются законченными командами. Несколько команд в одной строке должны быть разделены точкой с запятой.

Команды могут заставить компьютер:
- получить от пользователя какие то данные. (Ввод)
- отобразить данные на экране, записать в файл, распечатать на принтере, передать в сеть. (Вывод)
- Выполнить какие то  действия, например: арифметические, алгебраические,  логические. (Вычислительные выражения).
- Перескочить в программе с одного места на другое или выполнить какой то блок команд многократно (Ветвление и цикл).

   - Команды записываются на языке программирования и, фактически,  состоят из операторов и параметров.
 
   - Операторы это слова или символы, которые зарезервированы в языке программирования для выполнения определенных функций и по другому назначению использоваться не могут.
 
   - Параметры уточняют или конкретизируют выполнение необходимых действий команды.

Посмотрите на пример выше и вам сразу станет ясно, где в команде операторы (Begin - начать, Write - вывести, Repeat - повторять, := присвоить значение.)
И где параметры: (Выводить то, что в кавычках, прочитать в переменную и тд).

Если команда - вычислительное выражение, то в ней обычно присутствуют переменные и арифметические или иные операции, которые выполняют необходимую обработку данных.
Например: SUMM:=A+B; - суммирование двух чисел.
Нужно учитывать, что, называя переменные, мы должны подчинятся определенным правилам. В имени только латиница и цифры и никаких точек, запятых, пробелов и тд.

Как же выглядит в общем виде "заявка"от человека с требованием к компьютеру: выполнить определенные действия.


"Скелет" программы на Паскале.

Слово Var не является обязательным, но серьезных программ без переменных не бывает.

Var
{Оператор Var обозначает начало блока для объявления переменных.}
K : Integer;
{Oбъявление переменных}
{То, что в фигурных скобках, программа не обрабатывает, это комментарии для пояснения действий программы}


Begin
Writeln(‘Введи К’);

{Приглашение ввести значение переменной К}
Readln(K);
{Считывание значения, введенного с клавиатуры, в переменную c именем K}

Writeln(‘Это К = ’, K);
{Вывод на экран значения введенной переменной K}
{Любая команда в Паскале завершается точкой с запятой.}


End.
{Begin и End обозначают начало и конец, какого либо программного блока. End с точкой - конец программы.}


Посмотрите на пример.
В программе на Паскале обязательными элементами являются только Begin и End. - c точкой, все остальное - ваше творчество, Но прежде чем затевать написание любой программы, вы должны определиться с ее базовыми составляющими.

  Состав программы  Выполняемые операции Способы выполнения
  Ввод Нужно решить: какие данные
(цифры, текст, изображения и т.д.) и как попадут в вашу программу.
- Будут заложены в самой программе.
- Будут введены с клавиатуры.
- Будут взяты из файла.
- Другие вырианты.
 
  Обработка Что и как вы будете делать с исходной информацией,
чтобы получить результат.
- Вычисление по формулам.
- Шифрование, кодирование, сортировка, поиск.
- Изменение свойств.
- Другие действия.
 
  Вывод  Что и куда выводить. - На экран.
- На принтер
- В файл.
- Другой вариант .
 

 

3. Программы работают с данными.       В начало 

Ту информацию, с которой работают программы принято называть данными. И, в самом деле, мы передаем программе для обработки числа, символы, текст, изображения.

Перед использованием данных программа должна отвести для них место в памяти,а значит программист должен знать возможности различных типов данных, а программа их потребности. Вот и настало время рассказать о типах данных.

С какой же информацией-данными может работать Паскаль?
С объемными изображениями, физическими объектами, и запахами - конечно же, это шутка. Все горазда прозаичнее.

Основные, но не все типы данных, которыми может пользоваться язык программирования Pascal указаны в таблице.

Основные типы данных Pascal

Идентификатор Занимаемое место в памяти Диапазон значений

Целые числа
 
integer 2 -32768..32767
byte 1 0..255
longint 4 -2147483648..2147483647

Вещественные числа
 
real 6 2,9x10-39 - 1,7x1038
extended 10 3,4x10-4932 - 1,1x104932

Логический тип данных
 
boolean 1 true, false

Символьный тип данных
 
char 1 все символы кода ASCII

Структурированные типы данных
 
массив - array Сумма  потребностей всех  элементов -
строка - string Можно указать, например - string[10] -
файл - file. Зависит от определения его  структуры -

 

4. Переменные нужно объявлять.       В начало

      Хотя данные, которые использует программа могут быть неизменяющимися, например: имя, адрес, номер квартиры, чаще используют данные меняющиеся, например: вклад в банке, остаток на складе, скорость автомобиля и т.д.

    Некоторой порции данных, которую программа использует, как единое целое, дали название: ПЕРЕМЕННАЯ.

Сказать проще для работы с данными программы используют переменные, то есть величины, которые могут менять свое значение. Каждая переменная в любом языке имеет три характеристики.

 Имя,тип, и значение.

Имя 
- это название переменной, по которому к ней будет обращаться программа.

Тип
- указывает на то, какие данные в ней хранятся, например символьные или числовые.

Значение
- это то что конкретно хранится в этой переменной, например число 10 или 0.55. А если это символы то, например, буква А или слово РОССИЯ.


Программа должна знать, какие переменные будут в ней использованы. А для этого в программе выполняют объявление переменных Посмотрите на пример.

Var

   N : integer;   c : char;

   S1 : string;
  
A : array[1..100] of  integer;

После Var мы указываем имена переменных и типы данных, которые они будут хранить.
В Паскале, в отличии от BASIC-а, все переменные нужно объявлять явно, то есть нельзя использовать переменную, которой  нет в блоке объявлений.

Как я говорил, данные могут быть, как изменяющимися, так и постоянными. Неизменяющиеся порции данных называются константами и могут быть определены например так:


Const
Min = 0;
Max = 100;
RAZN = (Max - Min) div 2;
Beta = Chr(255);
Mess = 'Out of memory';
Schar = #13;                            
{Символ без видимого представления}
Ln10 = 2.30258;
Number = ['0'..'9'];
                  {Константа в виде массива}

 

5. Операция присваивания.      В начало 

A:=10;

Да, это выглядит именно так. В этой коротенькой строчке переменной с именем A присваивается значение - число 10. Многие думают, что прекрасно понимают, что в этом случае происходит с компьютером и программой. А если это так, то дли-и-и-и-н-н-н-ы-е рассуждения об этом вам не покажутся скучными.

Встретив такую конструкцию, программа ищет в памяти компьютера отведенный для этой переменной блок, на который будет указывать имя этой переменной - в данном случае A. В этот блок, размер которого определяется типом этой переменной: в данном случае числовым; поместит значение этой переменной: в данном случае число 10. В дальнейшем, когда в программе встретится где-то в выражении или другой конструкции имя этой переменной то будет использоваться не символ A, а значение этой переменной, то есть число 10 на которое и указывает имя этой переменной, а это ничто иное, как A.

 

6. Простые примеры.       В начало

Чтобы научиться программировать, нужно это делать. Итак начнем.

 

Program POGRESHNOST;
{N+}
{Директива для использования числового сопроцессора}
Var       
  
x : single;   
   y : double; 
   POGR : extended;

Begin

  x := 1/3;   y := 1/3; {x и y, казалось бы, равны, но...}

   POGR := abs(x-y);
  writeln('POGR=',POGR:15:15);
{<Мы вычисляем разность между одинаковыми операциями. Погрешность указывает на разницу в  диапазонах разных типов данных}
Readln; End.

 

Program KUB;
Var
A : Integer;  V, S : Longint;

Begin

  Write('Введи целое число – размер ребра куба ');
 
Readln(A);

    V:=A*A*A;
   
Writeln('Объем куба  = ',V<);
   
   
S:=6*A*A;
   
Writeln('Площадь поверхности = 'S);

Readln;  end.  {В программе нечего объяснять}

 

Uses Crt;  {Вывод звукового сигнала

 Begin

    Sound(600); {включение звука, частота 600Гц}

    Delay(100); {Задержка 100мс}

    NoSound; {выключение звука}

End.

 

Поэкспериментируйте с частотой и длительностью и сможете услышать гудки и писки из своего компьютерного динамика.
 

Var   {Определение максимального числа}
A, B, C : Integer;
Max : Integer;

Begin

   Write('Введи 3 числа');
   Readln(A,B,C);

     Max:=A;
        If B>Max then Max:=B;
        If C>Max then Max:=C;

   Writeln('MAX=',Max);<

Readln; End.

 

Uses Dos;  {Определить версию операционной системы}

Var

V:Word;

Begin

V:=DosVersion;

WriteLn('OS-version: ',Lo(V),'.',Hi(V));

Readln;
End.


Я сознательно не комментировал подробно эти очень простые примеры. Вы уже в состоянии разобраться с ними сами. Как и во всех следующих программах (за очень редким исключением) в них идут:


- Объявление переменных.
- Ввод исходных данных.
- Обработка или простые вычисления.
- Вывод результата на экран.

Так как это простые программы, то, сделав свое дело, они исчезают с экрана. Для анализа результатов их работы в конце почти каждой стоит оператор ReadLn;. В работающей программе он просто ждет, что вы, просмотрев результаты, нажмете клавишу Enter, и лишь после этого произойдет завершение ее работы.
 

7. Построение выражений и встроенные функции.       В начало

      Любая программа что то вычисляет, или что то обрабатывает.  Поэтому без программной конструкции вычислительное выражение не обходится практически ни одна из них. Выражения формируются из констант, переменных, функций, знаков операций и круглых скобок по определенным синтаксическим правилам.

Круглые скобки используются для изменения порядка вычисления частей выражения. Выражения без скобок вычисляются в порядке, соогласно приоритета операций.

 - вычисление значений функций;
 - унарные операции ( not,+,- );
 - операции типа умножения ( *,/,div,mod,and );
 - операции типа сложения ( +,-, or, xor );
 - операции отношения ( =, <>, <, >, <=, >= ).

Построение вычислительных выражений мы рассмотрим на примере использования встроенных функций языка Pascal.

VAR
X : Integer;
Y : Real;
 
Begin
  Write('Введи число '); Readln(X);
  Writeln('Модуль X =', ABS(X));
  Writeln('Синус X=',SIN(X));

  Write('Введи вещественное '); Readln(Y);
  Writeln('Целая часть Y =', INT(Y));
  Writeln('Корень из Y =', SQRT(Y):4:4);
  Writeln('Случайное число =', RANDOM);
  Writeln('Логарифм Y =', LN(Y));
  Writeln('('Округленное  Y =', ROUND(Y));
  Writeln('Дробная часть Y =', FRAC(Y));
  Writeln('Y без дробной части =', TRUNC(Y));

Inc(X);
Writeln('X+1=',X);
Dec(X);
Writeln('X-1=',X);

readln;
End.

      
В программе показано использование часто употребляемых  функций Паскаля. Все остальные функции могут быть вами рассмотрены самостоятельно. Достаточно нажать в оболочке Паскаля комбинацию клавиш Shift+F1 и вы увидете очень подробную подсказку. Почти по каждой функции имеется демонстрационный пример.

8. Технология алгоритмического программирования.       В начало

    Как это ни покажется  банальным, но  технология алгоритмического программирования, а Pascal использует   именно такие технологии, базируется на методе последовательной детализации алгоритмов. (Не пугайтесь этой умной фразы).  Это, всего-навсего, означает, что большой и сложный алгоритм, (другими словами порядок выполнения программы), разбивается на отдельные простые блоки, которые должны представлять собой стандартные алгоритмические структуры:

1. Линейную 

2. Ветвление
 
3. Циклическую 

    Их, для наглядности, представляют в виде блок-схем. Рассмотрим их и примеры самых простых программ, которые эти структуры используют.
 

 

Алгоритмическая структура
ЛИНЕЙНАЯ (СЛЕДОВАНИЕ)

 

Program Date; {Показ сегодняшней даты и времени}
Uses Dos;
{Объявление модуля, возможности которого мы хотим использовать в нашей программе<}>

Var

Year,Month, Day, DayOfWeek : Word;
Hour, Minute, Second, Hund : Word;

Begin
   GetDate(Year,Month,Day,DayOfWeek); { определение даты }
   Writeln('Сегодня - ', Day, '.', < Month,<'.',Year); {вывод даты }

   GetTime(Hour,Minute,Second,Hund); { определение времени }
   Write('Сейчас - ');
   WriteLn(Hour,':',Minute,':',Second,'.',Hund); { вывод времени }

End.

Внимание: Write - после вывода не переводит курсор на следующую строку, a Writeln - переводит.

 

Алгоритмическая структура
ВЕТВЛЕНИЕ

Program VETVLENIE; {Программа тестирования  знания дат}

Var
God: Integer;

Begin
Write('Введите год начала Великой Отечественной войны - ');
Readln(God);

If God = 1941 then
   Writeln('Ответ верный')
   else
   Writeln('Вы ошиблись');

Readln;

End.

 

Алгоритмическая структура ЦИКЛ

Program Tumn; {Таблица умножения}
Var

P1, I : Integer;

Begin
  Write('Введи первый сомножитель: ');
  Readln(P1);

For I:=1 to 10 do
{Организация цикла со счетчиком}

Begin
   Writeln(P1,' x ',I, ' = ', P1*I);
end;

Readln;
end.

Внимание: Внутрь операторных скобок Begin - end; можно помещать несколько выражений, В этом случае все они будут считаться единым блоком.
В данном случае тело цикла
Writeln(P1,' x ',I, ' = ', P1*I); окружено Begin и  end; - для демонстрации.

Ветвление в программах

Формат условного оператора на языке Паскаль:

If <условие> Then <оператор 1> Else <оператор 2>;

При выполнении условия программа обрабатывает первую группу операторов, при невыполнении вторую

If <условие> Then  Begin <группа операторов 1> end  {Внимание! Перед Else точка с запятой не ставятся}
                          Else   Begin < группа операторов 2> end;
 

Рассмотрим пример
Из двух чисел выбрать наибольшее.

Program Example;
Var A,B,C : Real;
{A,B - для хранения аргументов, C - результат}

Begin
   Writeln('Введите два числа');
   Readln(A,B); {
Вводим аргументы с клавиатуры}

If A>B Then C:=A Else C:=B;  
{Если A>B, то результат - A, иначе результат - B}

Writeln('Наибольшее  = ',C);
{Выводим результат на экран}
End.
 

Циклические алгоритмы в программах
 

  Описание конструкции   Пример
 

Цикл с параметром (со счетчиком) FOR


FOR n:=1 TO 10 DO
BEGIN
ПРЫЖОК (10 РАЗ)
END;

Телом цикла называется последовательность операторов, которая может выполняться многократно (ПРЫЖОК).

  Var n,x,y : longint;  {Десять четных чисел и их квадраты}
Begin
x:=2;

FOR n:=1 to 10 do
   Begin
     y := x*x;
     writeln (‘x и y = ’, x, ’ – ‘, y);
     x:= x+2;
   End<;
Readln;
End.
 
 

Цикл с предусловием WHILE

WHILE силы есть? DO
BEGIN
ПРЫЖОК
END;

Если условие истинно, то выполняются операторы циклической части. (Прыгаем пока есть силы)
 

  Var x,y : longint;  {Десять четных чисел и их квадраты}
Begin
x:=2;
WHILE x<=10 do
   Begin
      y := x*x;
      writeln (‘x и y = ’, x, ’ – ‘, y);
      x:= x+2
   end;
Readln;
end.
 
 

Цикл с постусловием REPEAT

REPEAT

ПРЫЖОК

UNTIL УСТАЛ?

Выполняются до тех пор, пока условие ложно. Как только условие становиться истинным, цикл прекращается. (Прыгаем пока не устанем)
 

  Var x,y : longint;   {Десять четных чисел и их квадраты}
Begin
x:=2;
  REPEAT
      y := x*x;
      writeln (‘x и y = ’, x, ’ – ‘, y);
      x:= x+2
   UNTIL x>10;
Readln;
end.
 

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

9. Работа со строками       В начало

Объявление переменной строчного типа.

Var
S : String [20]; {Квадратные скобки со значением  указывают максимальную длину строки}

Var st : String;
Begin
   Write('Введи строку'); Readln(st);
   if st[5] = ‘A’ then Writeln('Пятый символ в строке это А');  
end.
{Обращаемся к символу, как к элементу массива - строка}

Символ с индексом 0 является байтом, указывающим длину строки.
ORD(st[0]) это текущая длина строки, но можно получить и так LENGTH(st).

К строкам можно применять операцию «+» – сцепление, например:
st := ‘а’ + ‘b’; st := st + ‘с’; {st содержит «abc»}

Стандартные процедуры и функции работы со строками.
 

  CONCAT(S1 [,S2, ... , SN] )  – возвращает строку, сцепление строк-параметров S1, S2, …, SN.
  COPY(ST, I, C)  – копирует из строки ST C символов, начиная с символа с номером I.
  DELETE (ST, I, C)  – процедура; удаляет С символов из строки ST, начиная с символа с I.
  INSERT (SB, ST, I)  – процедура; вставляет подстроку SB в строку ST, начиная с символа I.
  POS (SB, ST) – отыскивает в строке ST первое вхождение подстроки SB и возвращает номер позиции, если подстрока не найдена, возвращается ноль.
 
  Str(X: арифметическое выражение; var st: string)  - процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
 
  Val(st: string; x: числовая переменная; var code: integer)  - процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление.
 
  UpCase(Переменная)  - позволяет преобразовывать любой символ из строчного в прописной.

Примеры использования строк очень хорошо проиллюстрированы в помощи к Pascal (Shift+F1)


10. Процедуры и функции.
      В начало

Вспомогательный алгоритм, может быть оформлен, как подпрограмма (Процедура). Затем эту процедуру можно вызывать по имени из любого места программы.

В общем виде оформление процедуры можно представить следующим образом.
 

  Описание конструкции   Пример
  VAR {Объявление переменных программы}
x : Integer;s : String;

Procedure MyProc(a : Integer; b : String); {Заголовок Процедуры. а и b – фиктивные параметры, работают внутри процедуры}
Begin
..... {тело Процедуры}
End;


BEGIN
..... {x, s – фактические параметры}
MyProc(x,s); {вызов Процедуры}
....
END.
  Program HelloAll;

Procedure Hello(Name:string);
Begin
   Writeln(‘Привет, ‘, Name, ‘!’);
   Writeln(Name, ‘ как дела?’);
   Writeln;
End;

Begin
    Hello(‘Катя’);
    Hello(‘Андрей’);
    Hello(‘Лена’);
End.
 


Пример создания и использования функции из помощи к Pascal.

Program Func;
    function IntToStr(i: Longint): string;
      
 
{ Функция конвертирует число в строку }
           var
              string[11];
    begin
      Str(i, s);
      IntToStr := s;
    end;

  WriteLn(IntToStr(-5322));
end.

Пояснение.  Зачем нужно конвертирование?  Если у вас в программе  VAR  S :  String;  K :  Integer; N : Integer;  То  Если даже Writeln(S,' - ',K);  выдает на экран  5 - 7 то,  все равно, нельзя сделать  N:=K + S; потому, что  N  и  S  -  разные типы данных, и S нужно сначала попытаться конвертировать в число.  Если эта длиннючая фраза вам понятна, то вы преодолели серьезный рубеж в понимании, что такое типы данных. Если пока что то туманно, продолжайте экспериментировать. Понимание придет неожиданно постепенно.  

Внимание. Функция внутри себя использует так называемые формальные переменные, которые не видны из основной программы. А вот когда она (функция) вызывается, то получает для обработки значения фактических  переменных, которые объявлены и используется вне функции.
 

11. Массивы       В начало

Если в программе требуется использовать 10, или 100, или 1000 однотипных переменных, то они могут быть определены для использования в виде массива.

Var  Имя переменной-массива : Array [ Диапазон индексов ] Of  Тип элементов;

Примеры описания массивов:

Var

S, BB : Array [1..40] Of Real;
N : Array ['A'..'Z'] Of Integer;
R : Array [-20..20] Of Word;
T : Array [1..40] Of Real;

Массив - это переменная с индексом (номером). Имя у всех переменных одно, но при обращении к каждой отдельной мы используем соответствующий номер (индекс).


Правила заполнения массива
 

  Program M1;
Var
  A : Array [1..10] Of Integer;
Begin
  A[1]:=7; {Заполняем массив значениями }
  A[2]:=32;
  A[3]:=-70;
  .............. {Трудоемкая задача?}
  A[10]:=56;
  Writeln(A[1],A[2],A[3], ?,A[10])
End.
Program M2;
Var A : Array [1..10] Of Integer;
  I : Integer;

Begin
  For I:=1 To 10 Do {Организуем цикл }
  Readln(A[I]); {вводим A[I] }
  For I:=1 to 10 Do {Выводим массив}
  Writeln(A[I],'-',I,’-й’);

End.
 
Program M3;
Const N=40; {Константа N будет содержать количество элементов массива}

Var  A : Array [1..N] Of Integer;
  I : Integer;

Begin
  For I:=1 To N Do
    Begin
      A[I]:= Trunc(Random(256));
      Write(A[I],'- *-');
    End;
End.  {Массив из случайных чисел}
 


Двумерные массивы

Массивы могут быть многомерными. Двумерный массив принято называть МАТРИЦЕЙ.

Пример объявления двумерного массива

Var A : Array [1..20,1..30] Of Integer;

Договоримся сначала указывать номер строки, а затем - номер столбца.

Рассмотрим пример работы с матрицей - программу, вычисляющую сумму элементов находящихся на диагонали.
    Здесь значения элементов матрицы задает сам компьютер в виде случайных чисел.


Program M4;
 Var A : Array[1..10,1..10] Of Integer;
    I, K : Byte;
    S : Integer;

Begin
  S:=0;
  For I:=1 To 10 Do
    Begin  
{Блок заполнения строки<}
      For K:=1 To 10 Do
        Begin 
{Блок заполнения строки элементами}
          A[I,K]:=Trunc(Random*100)+1;
          Write(A[I,K]:6);
            If K=I Then S:=S+A[I,K];
{Суммирование диагональных элементов}
        End;
          Writeln
    End;
  Writeln('Сумма элементов гл. диагонали = ',S)
End.

Внимание! Матричные вычисления, то есть различные операции с матрицами встречаются в инженерных и научных расчетах очень часто. Трудно назвать сферу, где бы матрицы не использовались так или иначе,  начиная с электротехники и электроники и заканчивая статистикой и биологией, Понимание механизмов работы с матрицами многим может пригодиться в жизни.

    
Если программа имеет сложную структуру, например много Begin-ов и End-ов, располагайте их так, чтобы Begin и  End относящиеся к одному блоку, имели одинаковый отступ. Тогда вы не запутаетесь в их расстановке.


12. Работа с файлами
      В начало

     Данные для долговременного хранения помещаются на диски в виде файлов. Файл, как и любая переменная, должен быть объявлен, например так:

File of
Тип данных.
   
Это означает, что в файл на диск будут последовательно записываться порции данных указанного типа.
Файл состоящий из символьных строк объявляется, как  File: text; где File - имя файловой переменной.

Рассмотрим пример с подробными комментариями.
 

  Uses Crt;
Var
ch : char;
F : text;
Name, S : String;

Begin
  Writeln('‘Список класса.’');
  Assign(F, 'spis.txt');
  Rewrite(F);
    repeat  
      Write('‘Введи имя ученика: ’'); Readln(Name);
      Writeln(F, Name);
      Writeln('Дальше – любая клавиша. Esc- Выход.');
    ch:=readkey;
   until ch=#27;

   Close(F);

Assign(F, 'spis.txt');
Reset(F);
while not Eof(F) do 
begin
Readln(F,S);
Writeln(S);
end;
Close(F);

readln;
End.
 
 Дополнительные функции, расширяющие возможности Паскаля, располагаются в модулях, которые перед использованием нужно объявлять




Назначаем файлу имя, которое будет являться именем файла на диске
Перезапишем дисковый файл. Те данные, что хранились на диске   под этим именем перестают существовать
Заполняем файл списком класса, пока не будет нажата клавиша Esc
Записать имя ученика в файл.



Закрываем запись в файл. Операционная система фиксирует размер файла и разрешает работать с ним другим программам.

Открываем доступ к файлу для чтения. Предупреждаем операционную систему, что будем читать из данного файла
Будем читать, пока не встретим конец  - End of file (Eof)

Вывод на экран

Закрывать доступ при чтении  не обязательно,

Важно!  Когда вы в программе собираетесь читать файл, вы должны точно знать данные какого типа там хранятся.
 

13. Графика на Pascal.       В начало

Овладение основами работы с графикой на Паскале нельзя недооценивать. Мы рассмотрим только самые азы применения графических возможностей в программах. Итак, начнем...
    Перед использованием программной графики мы должны перевести работу нашей видеосистемы (видеоконтроллера и монитора) в соответствующий графический режим.
Группа команд включения графического режима имеет вид:

Gd := Detect; InitGraph(Gd, Gm, '');
if GraphResult <> grOk then Halt(1);
Использование графического режима ...
CloseGraph;

Графические режимы различаются разрешением (максимально отображаемым количеством точек по горизонтали и вертикали) экрана и количеством возможных цветов.

Рассмотрим полный пример программы вывода цветных точек до нажатия любой клавиши

uses
Crt, Graph;
{Объявление дополнительных модулей, которые будет использовать наша программа}

Var                                                              {Объявление необходимых переменных}
Gd, Gm : Integer;
Color : Word;


Begin {Начало программы}
  Gd := Detect; InitGraph(Gd, Gm, '');
{Определение и включение графического режима}
  if GraphResult <> grOk then Halt(1);

  Randomize;                                             {Перенастройка генератора случайных чисел}
repeat
  Color := Random(15);  
                         {Выбор случайного цвета}
  PutPixel(Random(640), Random(480), Color); { Цветное «звездное» небо}
  Delay(300);                                               {Задержка времени}
until KeyPressed;                                    {Ожидание нажатия любой клавиши}

CloseGraph;  
                                           {Закрытие графического режима}
end.                                                              {Закрытие программы}

Научимся рисовать различные геометрические фигуры.

Uses Crt, Graph;
const
Gray50 : FillPatternType = ($AA, $55, $AA, $55, $AA, $55, $AA, $55);
var
  Gd, Gm : Integer;
  Color : Word;
begin
  Gd := Detect; InitGraph(Gd, Gm, '');
  if GraphResult <> grOk then Halt(1);
  Randomize;

repeat
  SetColor(Random(GetMaxColor)+1);
  Line(Random(400), Random(400), Random(400), Random(400));
{Линии}

  Circle(Random(500), Random(500), Random(200));                          
{Окружности}

  SetFillPattern(Gray50, Random(15));
  Bar(Random(400), Random(400), Random(400), Random(400));   
 {Закрашенные прямоугольники}

  delay(9000);
until KeyPressed;
CloseGraph;
end.

Внимание!
Примеры создания графики построены по принципу программ хранителей экрана - выводят меняющееся изображения до нажатия любой клавиши.


14. В заключение.
      В начало

  Я постарался охватить те разделы создания программ на языке программирования Pascal которые наиболее часто используются в инженерных расчетах и при написании учебных и других полезных программ. 
  Для уяснения темы обратитесь к страничке примеров программ с комментариями.
 

Примеры на Паскале

Hosted by uCoz