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