Сборник задач по программированию. Старая версия

 

 Приходько А. Н.

 

учебный материал, pascal, prolog, jsp, класс, сервлет, ответы, язык программирования
 

Паскаль. P.1. Простейшие программы

Процесс выполнения компьютерной программы можно рассматривать как перекладывание шариков из одной коробочки в другую и выполнение над ними каких-то операций. При такой интерпретации, компьютерная программа это то, что находится внутри центрального блока компьютера и состоит из шариков, наборов шариков, коробочек для шариков и операторов. Каждый шарик имеет свое имя. В качестве имени шарика может выступать любая последовательность символов (буквы и цифры). Несколько шариков могут быть объединены в набор шариков, который также имеет свое имя. Например, набор шариков T = (AA,BB,CC); состоит из шариков с именами AA, BB, CC. Имя данного набора шариков есть T. Набор шариков не может содержать 2-х одинаковых шариков. Один и тот же шарик не может входить в 2 различных набора шариков. Никакой шарик не может существовать сам по себе, не входя ни в один набор шариков.
Коробочки предназначены для хранения шариков. Каждая коробочка имеет свое имя и предназначена для хранения шариков только из одного набора шариков. Например, коробочка X : T; имеет имя X и предназначена для хранения шариков из набора T. В любой момент времени в коробочке всегда находится только один шарик. Такого состояния, что коробочка есть, а шарика в ней нет, быть не может. Над шариками и коробочками можно выполнять следующие операции:
ИЗВЛЕЧЕНИЕ ШАРИКА ИЗ КОРОБОЧКИ: при извлечении шарика из коробочки внутри коробочки в тот же самый момент появляется еще один шарик с тем же самым именем. Например, если в коробочке X был шарик AA и мы извлекли этот шарик из коробочки, то в результате мы получим 2 шарика с именем AA - один извлеченный шарик и один в коробочке X.
ПОМЕЩЕНИЕ ШАРИКА В КОРОБОЧКУ: Если мы имеем некоторый шарик и помещаем его в коробочку, то шарик, который был в коробочке до этого, пропадает. Например, если в коробочке X находится шарик AA и мы помещаем в эту коробочку шарик BB, то шарик AA из коробочки X пропадает и там остается шарик BB.
Внимание! Если вы пытаетесь поместить в коробочку шарик из другого набора шариков (набора шариков, для которого данная коробочка не предназначена), то произойдет ошибка.
ПЕРЕМЕЩЕНИЕ ШАРИКА ИЗ ОДНОЙ КОРОБОЧКИ В ДРУГУЮ: мы извлекаем шарик из одной коробочки и помещаем в другую коробочку. В результате, в первой коробочке останется старый шарик, а во второй коробочке появится шарик, имя которого совпадает с именем шарика из первой коробочки.
Операция помещения шарика в коробочку записывается так: X:=AA; где X - имя коробочки, AA - имя шарика. Операция перемещения шарика из одной коробочки в другую записывается следующим образом: X:=Y; где X - имя коробочки, куда помещается шарик; Y - имя коробочки, откуда берется шарик. Операция извлечения шарика из коробочки в чистом виде не используется. Она является частью операции перемещения шарика из одной коробочки в другую. Если у нас есть T = (AA,BB,CC); X, Y, Z : T; и первоначально коробочки X, Y, Z содержат шарики BB, AA, CC, соответственно, то после выполнения операций X:=Z; Z:=Y; коробочки будут содержать шарики CC, AA, AA.
Операторы делятся на простые и сложные. Простые операторы выполняют различные операции над шариками и коробочками, а сложные операторы управляют простыми и другими сложными операторами. Существует несколько типов сложных операторов и каждый из них по-своему управляет зависимыми операторами. Выполнение сложного оператора Begin..End заключается в последовательном выполнении зависимых операторов.
Обычно, имена шариков и наборов шариков отражают сущности и реалии нашей жизни. Например, набор шариков с именем Дом может содержать шарики Пол, Стена, Потолок, Комната. Некоторые наборы шариков настолько часто используются, что они описаны заранее и всегда содержатся в программе, даже если вы их не описывали. К таким наборам относятся: набор шариков Integer, содержащий шарики с именами, соответствующими числам в диапазоне от -32768 до +32767; Integer = (-32768, 32767, ..., -1, 0, 1, 2, ..., 32766, 32767); набор шариков Boolean = (false, true); false - ложь, true - истинна; набор шариков char, содержащий шарики с именами, соответствующими названиями всех символов, которые есть на клавиатуре Char = (..., ‘*’ , ‘+’ , ‘-‘ , ..., ‘0’ , ‘1’ , ‘2’ , ..., ‘8’ , ‘9’ , ..., ‘a’ , ‘b’ , ‘c’ , ‘d’ , ‘e’ , ‘f’ , ‘g’ , ‘h’ , ‘i’ , ‘j’ , ‘k’ , ‘l’ , ‘m’ , ‘n’ , ‘o’ , ‘p’ , ‘q’ , ‘r’ , ‘s’ , ‘t’ , ‘u’ , ‘v’ , ‘w’ , ‘x’ , ‘y’ , ‘z’ , ‘[’ , ... );
Простые операторы могут выполнять не только перемещение шариков из коробочки в коробочку, но и более сложные операции. Если у нас есть три коробочки X, Y, Z : Integer, то оператор X:=Y+Z извлекает шарики из коробочек Y, Z, находит сумму чисел этих шариков и в коробочку X помещает шарик, имя которого есть данная сумма чисел. Аналогично, существуют операторы для нахождения разницы (X:=Y-Z), произведения (X:=Y*Z), частного от деления (X:=Y div Z) и остатка от деления (X:=Y mod Z).
Оператор Readln(X) ждет, пока на клавиатуре не будет набрано какое-нибудь имя и нажата клавиша «Enter». После этого в коробочку X помещается шарик с набранным именем (шарик обязательно должен быть из набора шариков, для которого предназначена данная коробочка, иначе будет ошибка). Оператор Writeln(X) извлекает из коробочки X шарик и отображает его имя на экране дисплея.
Как вы уже поняли, шарик это значение, коробочка - переменная, а набор шариков - перечислимый тип.
Сложные операторы это оператор блока Begin..End, оператор цикла For, оператор сравнения If, оператор выбора Case, операторы циклов While и Repeat.

 

©   Александр Приходько    1996 - 2006