Создание программ в паскале с нуля. Пример программ на Паскале
Министерство образования и науки Российской Федерации
Государственное образовательное учреждение
высшего профессионального образования
«Омский государственный технический университет»
Ю. П. Чернов, О. П. Шафеева
Программирование в системе Pascal abc
Учебное пособие
Издательство ОмГТУ
УДК 004.4 (075)
ББК 32.973-018я73
Рецензенты :
В. И. Стариков, канд. техн. наук, доцент ОГИС;
С. С. Ефимов, канд. техн. наук, доцент ОмГУ им. Ф.М. Достоевского
Чернов, Ю. П.
Ч 49 Программирование в системе Pascal ABC : учеб. пособие / Ю. П. Чернов, О. П. Шафеева. – Омск: Изд-во ОмГТУ, 2010. – 100 с.
ISBN 978-5-8149-0897-1
Пособие включает теоретический материал с описанием элементов языка и системы программирования Pascal ABC, а также примеры разработки алгоритмов и программ на языке Паскаль для задач разного уровня сложности. Рассмотренные схемы проектируемых алгоритмов позволяют облегчить усвоение материала студентами.
Учебное пособие предназначено для изучения языка программирования высокого уровня Паскаль в дисциплинах «Информатика», «Основы алгоритмизации и программирования», «Алгоритмические языки и программирование», «Программирование на языке высокого уровня».
Печатается по решению редакционно-издательского совета Омского государственного технического университета
УДК 004.4 (075)
ББК 32.973-018я73
ISBN 978-5-8149-0897-1 © ГОУ ВПО «Омский государственный
технический университет», 2010
Введение
Наиболее распространенным в настоящее время языком программирования для компьютеров серии IBM PC является Паскаль. Это язык высокого уровня, отличающийся простотой синтаксиса, структурированный и удобный для начального обучения программированию.
Учебная система программирования Pascal ABC (автор С.С. Михалкович ) представляет собой диалект стандартного языка Паскаль.
Система Pascal ABCпредназначена для обучения программированию на языке Паскаль и ориентирована на студентов младших курсов. По мнению разработчиков этой системы, первоначальное обучение программированию должно проходить в достаточно простых и дружественных средах, в то же время эти среды должны быть близки к стандартным и иметь богатые и современные библиотеки подпрограмм.
К достоинствам системы Pascal ABC следует отнести то, что она позволяет:
программировать на языке Паскаль, подобном Delphi Pascal, включая объектно-ориентированные расширения;
работать с графикой;
создавать событийные приложения.
Система Pascal ABCоснована на языке Delphi Pascal и призвана осуществить постепенный переход от простейших программ к модульному, объектно-ориентированному, событийному и компонентному программированию. Некоторые языковые конструкции допускают, наряду с основным, упрощенное использование, что позволяет использовать их на ранних этапах обучения.
К важнейшим достоинствам пакета Pascal ABC относится соответствие стандартному Паскалю, быстрая компиляция программ, объединение компилятора с текстовым редактором, предупреждение об ошибках на уровне исходной программы, обширная библиотека подпрограмм и полезные расширения, упрощающие программирование. Начинающему программисту целесообразно начинать изучение языка и среды именно с этого пакета.
Компилятор Pascal ABCявляется компилятором переднего плана (front- end). Это означает, что он не генерирует исполняемый код в виде.exe -файла, а создает в результате компиляции дерево программы в памяти, которое затем выполняется с помощью встроенного интерпретатора. В итоге скорость работы программы оказывается медленнее скорости работы этой же программы, откомпилированной в среде Borland Pascal или в среде Borland Delphi. Однако на современных компьютерах это практически не ощущается.
Название "Pascal ABC" относится к интерактивной системе программирования, состоящей из компилятора языка и объединенного с ним экранного редактора. Интерактивность системы проявляется в основном в удобстве редактирования и обработки ошибок, обнаруженных в исходных текстах программ. Запуск программ в этой системе происходит на уровне исходных текстов. Высокая скорость компиляции приводит к тому, что переход от исходного текста к исполняемой программе происходит очень быстро. Это значительно сокращает цикл трансформации программ от редактирования к компиляции и исполнению программ.
Система Pascal ABC включает в себя как язык программирования, так и инструментальную среду, предназначенную для написания, отладки и исполнения программ. Язык характеризуется расширенными возможностями по сравнению со стандартом языка Паскаль и хорошо развитой библиотекой модулей, позволяющих использовать возможности операционной системы, формировать графическое изображение и т.д. Инструментальная среда программирования позволяет создавать тексты программ, компилировать их, находить ошибки и оперативно их исправлять, тестировать и выполнять отлаженную программу. Среда включает также большой объем справочной информации.
В настоящем учебном пособии описаны синтаксические правила и основные возможности языка, работа в интегрированной среде. Практические приемы программирования продемонстрированы на примерах решения конкретных задач.
Пособие подготовлено с учетом опыта чтения лекций и проведения авторами лабораторных занятий в компьютерном учебном центре ОмГТУ. В первую очередь пособие предназначено для студентов университета и представляет теоретическое руководство по программированию как в среде Pascal ABC, так и в средах Free Pascal и Turbo Pascal.
Казалось бы, программа на языке Паскаль - дело легкое и типичное для любого программиста, однако нельзя сказать, что сам язык слишком слаб для современного мира. Ведь не зря он считается базовым и изучается в школе.
Зачастую, для написания программ на Паскале пользуются такой как Turbo Pascal (Турбо Паскаль).
Почему новичкам следует выбирать именно этот язык? Попробуем разобраться. Для того чтобы полностью овладеть любым языком программирования, необходимо иметь соответствующую литературу. Именно поэтому большинство языков отпадают сразу, в частности и Лого. Он мало распространен в русскоговорящих странах, поэтому обучающих книг по нему нет. На данный момент самыми известными являются Pascal, Java, Basic и C. Рассмотрим каждый отдельно. Java, в основном, используется для программирования в сети. C - один из наиболее распространенных языков, однако и самый сложный (особенно для новичков). Для того чтобы в итоге научиться писать программы на нем, лучше всего сперва освоить Pascal или Basic. Они оба изучаются в школах (на выбор преподавателя). Причина их распространенности кроется в том, что на этих языках можно написать такую же программу, как и на C или C++, но само его освоение намного легче за счет простоты построения.
Стоит помнить, что версий Pascal и Basic достаточное количество, но в школах больше распространены такие виды, как Turbo Pascal 7.0 и QBasic. Если брать в сравнение именно их, то последний больше создан для того, чтобы писать маленькие программки длиной до 50 строк. Turbo Pascal же мощнее и быстрее.
Первая программа на Паскале
Пример программ на Паскале с легкостью можно найти в интернете, сложнее понять, как они устроены.
Для того чтобы понять, как устроен этот язык, необходимо написать небольшую «задачу». Допустим, нужно составить программу, которая будет складывать два числа: Q+W=E. Что же следует выполнить для ее создания?
Буква E будет выступать переменной (в математике - икс). Обязательно ей нужно присвоить имя (не более 250 символов). Оно может состоять из:
- букв (A..Z);
- цифр от 0 до 9. Но следует запомнить, что имя не должно начинаться с цифры;
- символа «_».
В названии не должны встречаться:
- русские буквы;
- знаки препинания;
- спец. символы, такие как решетка «#», процент «%», доллар «$», тильда «~» и др.
Примером правильного имени может быть «red_velvet4», «exo» или «shi_nee». Нужно также помнить, что Паскаль к регистру букв нечувствителен, поэтому переменные с названиями «btob» и «BtoB» рассматриваются как одна. Как именно в среде программирования «заводятся» и называются ячейки, будет понятно ниже. После этого процесса необходимо определить тип переменной. Это необходимо для того, чтобы программа корректно показывала результат на экране или печатала его на бумаге. Например, если складываются два числа, то указывается числовой тип, а если выводится приветствие, то - строковой. Для обычного сложения двух чисел подойдет тип Integer («число»).
С типом для переменных все понятно, но его нужно присвоить для всех числовых переменных, для того чтобы свободно ими манипулировать.
Опираясь на то, что написано выше, можно легко написать небольшую «задачку». Программа на Паскале будет выглядеть таким образом:
Program shi_nee;
Var Q, W, E: integer;
Первая строка, т. е. program shi_nee - название или заголовок самой программы. Это необязательный компонент, не влияющий на работу написанного вычисления. Он, если используется, в обязательном порядке должен находиться первым, иначе среда программирования выдаст ошибку.
Описание переменных происходит во второй строке благодаря оператору «var». Необходимо перечислить все переменные, которые фигурируют в программе и через двоеточие добавить
Пара операторов «BEGIN» - «END» начинает и, соответственно, завершает выполнение программы. Они наиболее важны; между ними находятся все действия, описанные программистом.
Синтаксис языка
Важно помнить, что каждая строка программы завершается точкой с запятой. Исключением из правила будут служебные команды типа var, begin, const и др. После конечного оператора end должна ставиться точка. В некоторых случаях, когда в программе несколько вложений и используются операторные скобки «BEGIN» - «END», после данной команды может ставиться точка с запятой.
Для того чтобы присвоить ячейке ее значение, например, E=15, необходимо перед знаком равно ставить двоеточие:
Двоеточие в данном языке называется присвоением. Программа на Паскале пишется очень легко, если освоить выше описанные правила синтаксиса.
Тестирование
Запустив Turbo Pascal, необходимо напечатать программу, правильно расположив требуемые знаки и установив нужный порядок строк. Запуск программы можно осуществить через или же при помощи клавиш Ctrl+F9. Если все набрано правильно, то экран немного мигнет. В том случае если присутствует ошибка, то работа программы приостановится, а курсор установится в той строке, где она имеется. При этом, в строке «Вывод» появится описание самой ошибки, например, error 85: «;» expexted. Эта строка указывает, что где-то отсутствует точка с запятой. Однако пока обращать внимание на подобные неполадки не стоит, нужно разобраться со структурой, используя примеры программ на языке Паскаль.
Что следует изучить в первую очередь?
Для начала полностью разобраться с каждой строкой программы. Затем обратить внимание на синтаксис, отложить в своей памяти специальные операторы, после которых знак препинания не ставится, усвоить логическую цепочку из begin и end. Запомнить, как именно заводятся переменные, какой тип им необходим и для чего он вообще нужен. Разобраться в функционировании самой среды программирования будет также не лишним. Для этого можно воспользоваться руководством или же «тыкать» в Turbo Pascal самостоятельно. Постоянно нужно практиковаться, разбирать уже готовые «задачи» из интернета и потихоньку набирать пример программ на Паскале самостоятельно.
Одномерные массивы
Массив используется для удобной работы с однотипными данными, которые в этом случае размещаются в последовательных ячейках памяти, а не отдельно. Вряд ли программистам удобно работать с 50 или 100 переменными. Удобнее записать их в массив.
Элементы, которые находятся в группе, имеют свой номер. В различных языках программирования счет начинается с определенной цифры, не обязательно с 1. А вот пример программ на Паскале говорит о том, что в нем нумерация начинается с нее. Данный порядковый номер назван индексом каждого элемента. Как правило, он является целым числом, реже символом. В принципе, для ячейки данных все равно, какая индексация будет задана: числовая или буквенная.
(примеры ниже) может иметь только один тип, к которому будут принадлежать и все его элементы. Не бывает такого, что одна ячейка типа real, а другая integer.
В среде программирования данные одномерного (т.е. простого) массива вводятся линейно:
Var a: array of char;
For i:=5 to 40 read (ch[i]);
For i:=5 to 40 write (ch[i]:3);
Разбирая пример программ на Паскале, можно увидеть, что выделяется память под простейший массив, состоящий из 35 знаков. Индексация () - от 5 до 40. В первой строке после команды BEGIN пользователь должен ввести 35 абсолютно любых символов (цифры, буквы), которые программой записываются в ячейки. Вторая строчка отвечает за вывод их на экран.
Двумерные массивы
Если одномерный массив - это тот, в котором все операции выстроены «в линию», т. е. все элементы и действия производятся друг за другом, то двумерный позволяет реализовать более сложные структуры с ветвлением.
Такие данные на языке Паскаль (примеры можно увидеть чуть ниже) описываются двумя способами: «array of тип» или же «array of array of тип».
Переменные b и f - константы. Вместо них можно вставлять и цифры (как в одномерных массивах), но в подобных задачах лучше такое не практиковать. Это объясняется тем, что язык программирования определяет первую константу в качестве количества строк, а вторую - столбцов данного массива.
Пример задачи через специальный раздел type:
Const b=24; f=13;
Type cherry=array of real;
Через раздел переменных описать массив несколько легче (для новичков):
Const b=24; f=13;
Var n: array of real;
Оба варианта будут верны, работа программы от выбранного способа записи никак не меняется.
Открытые массивы
Открытый массив - тот, у которого нет границ. Он имеет лишь тип (real, integer и др.). Иными словами, созданный массив - безразмерный. Его «тягучесть» определяется самой программой при выполнении. Записывается он таким образом:
Seulgi1: array of char;
Yeri: array of real;
Отличительной особенностью этих массивов является то, что индексация начинается с нуля, а не единицы.
Графика в Паскале
Те, кто имеет хотя бы малейшее представление о «внутренностях» операционной системы, знает, что все изображения строятся благодаря прямоугольным растрам. Растровые картинки состоят из пикселей, которые настолько маленькие, что глаз человека воспринимает нарисованное или сфотографированное за единое целое. При этом чем больше разрешение фотографии, тем меньше пиксели будут.
Второй способ представления графики - векторный. Как правило, это отрезки, круги, эллипсы и другие геометрические фигуры, которые и составляют весь рисунок.
В среде программирования на любом языке возможно и появления такого вида задач, как графические, результатом которых будет являться графика. Паскаль, примеры таких программ показывают в некоторой степени тяжесть их разработки, позволяет создавать картинки и рисунки. Для того чтобы «активировать» нужную библиотеку, нужно вставить строку «uses graph;».
Как правило, при описании графических данных, используется данная процедура:
InitGraph (var driver, choke: real; Path: string);
Здесь driver является переменной, тип которой integer; choke - переменная, действительного типа; а path позволяет активировать драйверы.
Первый сеанс работы по написанию новой программы.
В этом случае надо войти в главное меню (F10), выбрать пункт "File", нажать "Enter", далее в подменю выделить слово "New", нажать "Enter". В этом случае составляемой программе будет автоматически присвоено имя "NONAME.PAS", которое будет высвечено в правом верхнем углу окна EDIT. Чтобы дать программе какое-либо иное имя, следует в пункте "File" главного меню выбрать подпункт "Write to" и в появившемся окне набрать желаемое имя программы с указанием имени диска и, если необходимо, имени каталога. Выполнив перечисленное, следует нажать "Enter", после чего окно EDIT очистится, в верхнем правом углу окна будет выведено заданное название программы, а в левом верхнем углу будет мерцать курсор, приглашая к вводу с клавиатуры текста новой программы.
После окончания сеанса набора текста программы или его редактирования, надо сохранить текст на магнитном диске, нажав F2.
Общая структура программ на языке Паскаль:
Program Имя программы Раздел описаний Begin Раздел операторов End .Слова PROGRAM, BEGIN и END выделяют 2 части программы: раздел описаний и раздел операторов. Такая структура обязательна. Любой объект, используемый в программе, должен быть учтен в разделе описаний. Иными словами, в разделе описаний должны быть перечислены имена всех используемых в программе меток, констант, нестандартных типов данных, переменных. Кроме того, в разделе описаний приводятся тексты функций и процедур. Раздел операторов - это основная часть программы, здесь содержатся команды, составляющие программу.
Программа, написанная по правилам стандартного языка Паскаль, должна иметь в своем полном варианте (когда в ней задействованы все виды программных объектов) следующую структуру:
Program имя программы; Uses Список используемых модулей Label Список меток из основного блока программы Const Определение констант программы Type Описание типов Var Описание переменных Procedure Текст процедуры Function Текст функции Begin Основной блок программы (раздел операторов) End .Алфавит языка Турбо-Паскаль состоит из полного набора символов клавиатуры, при этом не различаются строчные и прописные буквы (компилятору безразлична высота букв). Пробел в Турбо-Паскале используется в качестве разделителя отдельных конструкций языка, поэтому слитное написание текста будет ошибочным.
В первой строке текста обычно объявляется имя программы. Для этого используется слово PROGRAM, которое не может далее использоваться в программе для других целей:
Program Имя программы;";" - этот разделитель в Паскале означает конец оператора или описания, его использование позволяет размещать несколько операторов в одной строке.
Во второй строке нашей программы находится раздел определения констант. В нем перечисляются используемые в программе константы и их значения. Слово "CONST" означает, что сразу за ним следует определение одной или нескольких констант. "Определить константу" значит указать ее имя и значение, которое не будет меняться на всем протяжении работы программы. Константа определяется так:
Const имя константы=значение;Имя константы и ее значение разделяются знаком равенства.
После значения константы обязательно ставится точка с запятой. Значение константы должно оставаться неизменным в ходе вычислений. Попытка изменить значение константы будет расцениваться как ошибка. Константы бывают числовые, символьные и логические.
В третьей строке программы имеется слово "Var". Оно означает, что раздел определения констант закончился и начинается раздел описания переменных. Переменные используются в для хранения и передачи данных внутри программы. Каждая переменная, используемая в программе, должна быть описана, т.е. в разделе "Var" должны быть указаны имена переменных и типы хранимых в них данных:
Var имя переменной: тип переменной;В Турбо-Паскале имя переменной должно начинаться с латинской буквы, состоять из латинских букв, цифр или знака подчеркивания "_". Имя должно состоять не более чем из 63 символов (больше не воспринимает компилятор). В имени переменной нельзя использовать пробел.
Вы находитесь в разделе материалов по пограммированию на Паскале. Перед тем как начать программировать, надо прояснить некоторые понятия, которые нам понадобятся в начале. Ведь просто так программировать нельзя. Мы не можем записать программу словами – компьютер кроме нулей и единиц больше ничего не понимает. Для этого в Паскале создана специальная символика – язык Паскаля, набор зарезервированных слов, которые нельзя использовать в своих программах больше нигде, кроме как по назначению. Перечислим основные понятия, которые нам понадобятся в начале:
✎ 1) program – по-английски «программа», пишется в самом начале кода, после чего идет название программы латиницей и точка с запятой. Например: program Summa; − программа под названием Summa. Но эту часть кода, называемую заголовком программы, можно и не писать − она присутствует только для наглядности и показывает, какую задачу решает данная программа. Здесь мы употребили слово «код» − так называется текстовая запись программы.
✎ 2) integer – по-английски означает «целое число» (или просто «целое») и в Паскале используется для обозначения 32-битных (8 байт) целых чисел со знаком с диапазона [-2147483648, 2147483647] . Что означают эти большие числа, мы потом разберем.✎ 3) real – с английского «реальный», «настоящий», «вещественный», «действительный». В языке Паскаль этим термином обозначаются вещественные числа с диапазона [-1.8∙10 308 , 1.8∙10 308 ] . Это очень большие числа, но значащих цифр выводится 15 – 16. Кстати, типы данных integer и real в среде программирования PascalABC.Net всегда автоматически выделяются синим цветом.
✎ 4) const – аналог англ. «constant», означающее «постоянная», «константа». В Паскале это величина, которая не может изменяться. Записывается так:
Эту запись надо воспринимать так, как она пишется: число N равно 12, S равно 5, «пи» равно 3,14 (как и в математике, только вместо запятой в Паскале используется точка). В последней строке мы использовали двойной слэш (две косые черты), после которых идет текст, – так в Паскале пишутся комментарии, и их программа не воспринимает. Всё, что начинается двойным слэшом и до конца строки – это комментарий, который пишется для пояснения к программе и всегда выделяется другим цветом (в PascalABC.Net - это зеленый, в Turbo Pascal не используется такой вид комментария). Существует и другой тип комментария – это {текст, заключенный в фигурные скобки, так же, как и здесь, тоже выделяющийся зеленым цветом} . Этот вид комментария может действовать несколько строк подряд – от начала скобки и до её закрытия, и всё, что находится в середине такой конструкции, компилятор не воспринимает как код и просто пропускает.
В действительности формат записи const немножко сложнее. По правилам мы должны были записать:
|
После объявления каждой величины указывается её тип, а потом присваивается значение. Но предыдущая запись тоже верна, поскольку компилятор Паскаля настроен так, что он автоматически определяет тип постоянной. Но этого нельзя сказать о следующем типе чисел – переменных.
✎ 5) var – происходит от англ. «variable» («переменная», или «изменчивый»), что в Паскале означает величину, которая в процессе программы может изменять свое значение. Записывается так:
Как видно из записи, знака «=» здесь нет – пересчитываются переменные одного типа (через запятую) и после двоеточия указывается только тип. Переменные N, m (целые) и Q, r, t (вещественные) в программе могут изменять значения в пределах integer и real соответственно. Ещё одно замечание: описание переменных всегда стоит после описания констант (постоянных) – сначала идет конструкция const , а потом var .
✎ 6) begin – в переводе с английского означает «начинать» и Паскале означает начало основной программы, в которой записываются команды (операторы). После слова begin точка с запятой не ставится.
✎ 7) end – по-англ. «конец», и в языке Pascal означает то же (конец программы). После последнего слова end всегда стоит точка. Мы выделили слово «последнего», поскольку использование конструкции begin – end возможно ещё в одном случае: это так называемые операторные скобки, которые применяются для объединения нескольких операций под одним оператором. Но об этом потом. Таким образом, основная программа будет выглядеть так:
|
Здесь операторы в теле программы – это разные команды компилятору.
✎ 8) write – по-английски означает «писать». Этот оператор выводит на экран текст, помещенный в него, поэтому так и называется – оператор вывода. Текст, помещенный в него, выделяется синим и записывается так:
Write("этот текст выведен на экране" );
Сообщение, находящееся в скобках и кавычках, будет показано в окне консоли (просто в скобках без кавычек нельзя). После выполнения этого оператора мы увидим на экране:
этот текст выведен на экране
В таком виде оператор write используется в том случае, когда надо показать подсказку, пояснение, комментарий и т. п. А от если необходимо вывести ещё и числовое значение, скажем, S = 50 кв. м, то используется формат:
Write(, S);
В результате получим на экране результат:
Величина площади равна: S = 50
А при необходимости вывести единицы измерения, надо после S снова вставить текст в кавычках:
Write("Величина площади равна: S = " , S, " кв.м" );
После выполнения последнего оператора вывода получим вывод на экран:
Величина площади равна: S = 50 кв.м
✎ 9) writeln – то же, что и write, но после выполнения курсор будет переведен на следующую строку.
✎ 10) read – в переводе с английского означает «читать», поэтому read называется оператором считывания, или ввода данных. Записывается как read(N), что означает необходимость ввода величины N, где N – любое число, или текст, или другой тип переменной. Например, если надо ввести возраст человека, которому 32 года, мы можем записать так:
В первой строчке этого кода программа выводит вопрос «Каков Ваш возраст? » и переводит курсор в следующую строку (окончание ln); во второй строке мы выводим « Year = » (в начале пробел); далее мы видим оператор readln(Year) означающий необходимость введения возраста Year (число 32); наконец, выводим сообщения «Мой возраст », «32 » и « года. » поочередно. Необходимо внимательно следить за пробелами. В результате выполнения данного кода мы получим сообщение:
Каков Ваш возраст?
Year = 32
Мой возраст 32 года
✎ 11) readln – то же, что и read, только с переводом на новую строку. Действительно, в приведенном выше примере после введения числа Year мы только в следующей строке пишем: «Мой возраст 32 года ».
Это пока что все. На следующей странице мы напишем первую программу, и в программировании на Паскале это будут наши