Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по информатике.doc
Скачиваний:
465
Добавлен:
17.03.2015
Размер:
3.59 Mб
Скачать

29. Язык программирования Паскаль. Общая характеристика. Основные правила записи программ на языке Паскаль. Структура программы. Пример программы

Введение

В кратком изложении история языков программирования такова: изначально вычислительные машины программировались в машинном коде. То есть в их оперативную память напрямую вводили последовательность чисел, являющиеся кодами команд, которые процессор может выполнить. При этом программа составлялась с периодическим заглядыванием в таблицу кодов команд процессора и была отнюдь не наглядной. Затем появилась идея обозначить коды какими-то короткими, но осмысленными, и потому легко запоминаемыми словами – мнемониками, и создать программу, которая бы, руководствуясь таблицей команд, переводила последовательность мнемоник – мнемокод в последовательность машинных кодов. Такую программу называют ассемблером (assembler - сборочное устройство, транслятор, ассемблер). Программы стали гораздо нагляднее, но решение практических задач требовало написания очень длинных программ (например, файловый менеджер Volkov Commander имеет размер около 64000 байт). Тогда появились языки программирования высокого уровня. При их создании использовали то обстоятельство, что в программе часто встречаются участки одинакового кода, выполняющие какое либо одно действие: вывод строки, запись в файл, вычисление математической функции и т.д. В языках высокого уровня таким последовательностям кода присвоены имена, и программа составляется на условном языке, каждое, из слов которого заменяет десятки, ато и сотни команд процессора. Таким образом, программа становится еще нагляднее и короче. Существует множество условных языков высокого уровня, для каждого из них написано немало вариантов пограммы, переводящей условный код в последовательность машинных команд. Один из таких языков – Паскаль.

Язык программирования Pascal был разработан в 1968-1971 гг. Никлаусом Виртом в Цюрихском Институте информатики (Швейцария), и назван в честь Блеза Паскаля – выдающегося математика, философа и физика 17-го века. Первоначальная цель разработки языка диктовалась необходимостью создания инструмента "для обучения программированию как систематической дисциплине". Однако очень скоро обнаружилась чрезвычайная эффективность языка Pascal в самых разнообразных приложениях, от решения небольших задач численного характера до разработки сложных программных систем - компиляторов, баз данных, операционных систем и т.п. К настоящему времени Pascal принадлежит к группе наиболее распространенных и популярных в мире языков программирования:

существуют многочисленные реализации языка практически для всех машинных архитектур;

разработаны десятки диалектов и проблемно-ориентированных расширений языка Pascal;

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

Характеристика и особенности языка

Существует ряд объективных причин, обусловивших выдающийся успех языка Pascal. Среди них в первую очередь необходимо указать следующие:

Язык в естественной и элегантной форме отразил важнейшие современные концепции технологии разработки программ:

a. развитая система типов,

b. ориентация на принципы структурного программирования,

c. поддержка процесса пошаговой разработки.

Благодаря своей компактности, концептуальной целостности и ортогональности понятий, а также удачному первоначальному описанию, предложенному автором языка, Pascal оказался весьма легок для изучения и освоения. В противоположность громоздким многотомным описаниям таких языков, как PL/l, Cobol, FORTRAN, достаточно полное описание языка Pascal занимает около 30 страниц текста, а его синтаксические правила можно разместить на одной странице.

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

Pascal весьма технологичен для реализации практически для всех, в том числе и нетрадиционных, машинных архитектур. Утверждается, что разработка Pascal-транслятора "почти не превышает по трудоемкости хорошую дипломную работу выпускника вуза". Благодаря этому для многих ЭВМ существует несколько различных реализаций языка, отражающих те или иные практические потребности программистов.

Язык Pascal стандартизован во многих странах. В 1983 году был принят международный стандарт (ISO 7185:1983)

1.Общая характеристика языка ПаскальЯзык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан американским ученым Никласом Виртом в 1971г. в качестве языка для обучения программированию. Базой при разработке явился язык Алгол. Достоинства языка Паскаль: 1) относительная простота (т.к. разрабатывался с целью обучения программированию); 2) идеология языка Паскаль близка к современным методикам и технологиям программирования, в частности, к структурному программированию и нисходящему проектированию (метод пошаговой детализации) программ. Паскаль может использоваться для записи программы на различных уровнях ее детализации, не прибегая к помощи схем алгоритмов; 3) гибкие возможности в отношении используемых структур данных; 4) высокая эффективность программ; 5) наличие средств повышения надежности программ, включающих контроль правильности использования данных различных типов и программных элементов на этапах трансляции, редактирования и выполнения. В связи с этим язык Паскаль в настоящее время находит самое широкое распространение для решения большого круга разнообразных практических и научных задач. Грамматическое описание любого языка программирования включает в себя: 1. алфавит – набор основных символов языка, используемых при записи текста программы; 2. синтаксис – правила построения фраз языка; 3. семантику – смысловое значение фраз языка.2.Основные элементы языка ПаскальНапомним вначале некоторые основные понятия программирования. Опытный программист уже знает, а новичку полезно узнать, что главными элементами любой программы являются переменные, константы и операторы. Переменная — это ячейка (или несколько ячеек) оперативной памяти компьютера. Такой ячейке присвоено определенное имя, ее содержимое может изменяться в ходе выполнения программы. Вид информации, содержащейся в ячейке, набор преобразований, которые можно выполнять над этой информацией, и множество допустимых значений определяются типом переменной. Константа отличается от переменной тем, что ее значение фиксировано и не может быть изменено в ходе выполнения программы. Операторы задают те или иные действия, которые должна выполнять программа. Язык Турбо Паскаль состоит приблизительно из 80 зарезервированных слов и специальных символов. Алфавит языка составляют буквы латинского алфавита, цифры, а также специальные символы, такие, например, как +, -, _. Специальными символами языка являются и некоторые пары символов. Как уже отмечалось, зарезервированные слова в языке Паскаль могут применяться только по своему прямому назначению, то есть в качестве имен операторов, названий операций и т. д. В табл. 1.1 приведен алфавитный список зарезервированных слов. В большинстве случаев овладение даже небольшой частью этого «словаря» достаточно для начала успешной работы по программированию на Паскале.^Таблица 1.1. Зарезервированные слова языка Паскаль

absolute

and

array

assembler

begin

break

case

const

constructor

continue

destructor

div

do

dpwnto

else

end

external

far

file

for

function

goto

if

implementation

in

inline

interface

interrupt

label

mod

near

nil

not

object

of

or

packed

private

procedure

program

public

record

repeat

set

shl

shr

string

then

to

type

unit

until

uses

var

virtual

while

with

xor

 

 

В дальнейшем мы разберем применение приведенных в данной таблице зарезервированных слов, а сейчас лишь кратко поясним смысл некоторых из них, наиболее часто используемых в программах на Паскале. Заголовки, то есть первые операторы программ и библиотечных модулей — это program и unit. Для описания переменных, констант и составных частей программы — подпрограмм-процедур и подпрограмм-функций — используются зарезервированные слова var, const, procedure, function. Операторы описания типов переменных, задаваемых пользователем, — это type, array, string, record...end, file of... . Слова, используемые для программирования составных операторов, а также начинающие и оканчивающие последовательность исполняемых операторов программы, — begin и end. Операторами, управляющими ходом выполнения программы (они так и называются — управляющие операторы), являются if-then...else, for...to...do, repeat...until, case...of...end, for...downto...do, while...do. В библиотечных модулях используются зарезервированные слова implementation, interface. Зарезервированные слова для обозначения арифметических и логических операций — div, mod, shl, shr, and, or, not и некоторые другие. В программах, написанных с использованием методов объектно-ориентированного программирования, применяются зарезервированные слова object, constructor, destructor, public и virtual. Как уже было отмечено, кроме зарезервированных слов в программах на языке Паскаль используются как отдельные специальные символы, так и пары символов, которые имеют специальное значение. Перечень таких символов приведен в табл. 1.2. ^Таблица 1.2. Одиночные и двойные специальные символы языка Паскаль

:=

Присваивание переменной (слева от символа) значения выражения (справа от символа)

;

Разделитель операторов в программе

( )

Скобки для арифметических и логических выражений

:

Разделитель в описаниях переменных и формате операторов вывода

..

Многоточие для списков

+,-,*,/

Бинарные операции (не только арифметические!)

=

Логическое равенство, элемент описания констант и типов

<>

Логическое неравенство

<=

Отношения «меньше чем» и «больше чем»

>=

Отношения «меньше или равно» и «больше или равно»

.

Конец программы или модуля, а также десятичная точка в константах вещественного типа

'

Ограничители константы строкового типа

{} (* *)

Пары скобок для комментариев

,

Разделитель элементов списка

[ ]

Скобки для ссылки на элемент массива или указания диапазона значений индекса

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

Program P1; {заголовок, название программы} {±}Uses………;{подключение внешних модулей с расширением *.tpu}{±}Const……...; {описание констант} {±}Type………; {задание типов} {±}Var………..; {раздел объявления переменных}{±}Function F1….; {описание функций} {±}Procedure Pr1….; {описание процедур} {±}

Begin{начало основной программы} {+} ….. {тело основной программы} {±}End. {конец основной программы} {+}.

^ 4.Технология программированияВключает пять технологических операций (этапов):

    1. Постановка задачи.

    2. Математическое описание.

    3. Алгоритм – структограмма.

    4. Написание текста программы.

    5. Отладка, получение результатов.

5.В ходе отладки программы приходится сталкиваться с тремя видами ошибок: 1. Синтаксические ошибки- текст программы не отвечает требованиям языка Паскаль. Такие ошибки выявляются сразу при попытке компиляции и запуска программы. 2.^ Ошибки периода выполнения программы (RUNTIME ERROR)– ошибки, возникающие при выполнении программы, когда текст программы формально записан правильно, но при выполнении программы в результате неблагоприятного стечения обстоятельств возникает ошибочная ситуация и компьютер не может продолжить работу (например, в случае деления на ноль). 3.^ Ошибки в алгоритме (семантические ошибки)- программа работает без сбоев, но результаты получаются неверные. Ошибки 1 и 2 видов помогает отыскать сам компьютер, приостанавливая работу и выводя на первой строке сообщение о характере ошибки. Более того, при компиляции неправильной программы Турбо-Паскаль автоматически загружает в окно редактора сбойный участок текста программы и помешает курсор вблизи обнаруженной ошибки. Перечислим ошибки, наиболее часто допускаемые начинающими программистами, и разъясним сообщения Турбо-Паскаля, выдаваемые им при выявлении этих ошибок в процессе компиляции текста программы:^ Identifier expected- в этом месте программы должен находиться идентификатор (имя программного объекта). Возможно, программист пытался использовать в качестве идентификатора слово, зарезервированное Паскалем для других целей.^ Unknown identifier- идентификатор (имя переменной, константы. процедуры и т.п.) не был упомянут в разделе описаний программы.Duplicate identifier- попытка дважды описать один и тот же идентификатор.^ Syntax error- синтаксическая ошибка, например строка символов не была заключена в кавычки.Line too long- компилятор не может обрабатывать текст программы со строками длиннее 126 символов. Скорее всего, программист забыл поставить апостроф, закрывающий текстовую строку, записываемую в переменную или выводимую на экран.^ Type identifier expended- не указан тип идентификатора.Variable identifier expended- на этом месте в программе должна стоять переменная.Error in type- объявление типа данных не может начинаться с этого символа.^ Type mismath-

  1. тип переменной, стоящей слева от знака присваивания, тличается от значения выражения, стоящего справа;

  2. при обращении к процедуре типы формального и фактического параметров не совпадают;

  3. переменная данного типа не может служить индексом массива.^ Begin expected - нужен begin. End expected - нужен end. Integer expression expected - требуется выражение типа integer. Boolean expression expected - требуется выражение типа boolean. Do expected - пропущено слово "Do". ^ Of expected - пропущено слово "of". Then expected - пропущено слово "then". To expected - пропущено слово "to". String variable expected- требуется строковая переменная.^ Error in expression- данный символ не может участвовать в выражении таким образом.Division by zero- деление на ноль.Constant and case types do not math- тип меток и тип селектора в операторе CASE не соответствуют друг другу.^ Label not within current block- оператор GOTO не может ссылаться на метку, находящуюся вне текущего модуля.Label already defined- такая метка уже есть.Floating point overflow operation- величина вещественного числа вышла за пределы диапазона, допускаемого Паскалем (обычно при делении на ноль).Invalid procedure or function reference- неправильный вызов подпрограммы.

^