Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы алгоритмизации и программирования на языке Паскаль

..pdf
Скачиваний:
11
Добавлен:
15.11.2022
Размер:
2.96 Mб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Пермский национальный исследовательский политехнический университет»

Т.Б. Пермякова, М.Е. Лаищева

Основы алгоритмизации и программирования на языке Паскаль

Курс лекций

Утвержден Редакционно-издательским советом университета

Издательство Пермского национального исследовательского

политехнического университета 2014

УДК 004.438.021(075.8)

П26

Рецензенты:

кандидат технических наук, доцент А.Ю. Зобачева (Пермский национальный исследовательский политехнический университет);

доктор технических наук, профессор П.П. Гайджуров (Ростовский государственный строительный университет)

Пермякова, Т.Б.

П26 Основы алгоритмизации и программирования на языке Паскаль: курс лекций / Т.Б. Пермякова, М.Е. Лаищева. - Пермь: Изд-во Перм. нац. исслед. политехи, ун-та, 2014. - 102 с.

ISBN 978-5-398-01299-6

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

Предназначен для студентов-бакалавров направления подготовки «Строительство», для учащихся средних учебных заведений, изучаю­ щих основы языка программирования Паскаль.

УДК 004.438.021(075.8)

ISBN 978-5-398-01299-6

©ПНИПУ, 2014

Предисловие

Грамотное использование компьютера инженеромисследователем предполагает, что он знаком с основами программирования. Целью данного курса лекций является ознакомление бакалавров по направлению подготовки «Строительство» с основами структурной методики про­ граммирования. Язык Паскаль, созданный швейцарским профессором Николаусом Виртом в 1971 году, является наиболее подходящим средством для этой цели.

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

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

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

Изложенный материал соответствует курсу лекций «Информатика», читаемому студентам-бакалаврам строи­ тельного факультета.

Лекция 1

Введение

1.1.Этапы подготовки и решения задач на ЭВМ

Решение задач на ЭВМ представляет собой сложный процесс, который можно реализовать в несколько этапов.

Первый этап - постановка задачи, ее математическая формулировка.

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

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

Численные методы - это методы решения задач, сво­ дящиеся к конечному числу арифметических и логических действий над числами, т.е. к тем действиям, которые мо­ жет выполнить ЭВМ.

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

Третий этап - разработка алгоритма решения задачи. Алгоритм - это конечная последовательность дей­

ствий, необходимая для решения задачи, однозначно опре­ деляемая исходными данными.

Четвертый этап - программирование. Это процесс «перевода» алгоритма задачи на алгоритмический язык высокого уровня (Бейсик, Паскаль, Си и др.).

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

Программа для ЭВМ - это записанный на определен­ ном языке программирования разработанный ранее алго­ ритм решения задачи, представляющий собой упорядочен­ ную последовательность команд (операторов), предназна­ ченную для решения этой задачи.

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

В настоящее время программа пишется на каком-либо языке высокого уровня и вводится в персональный компь­ ютер (ПК). Далее она обрабатывается специальной про­ граммой - транслятором. Транслятор «переводит» текст программы (исходный модуль) на внутренний язык маши­ ны (машинные коды).

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

Алфавит - это набор основных символов, допускае­ мых для создания текста программы на этом языке.

Синтаксис - это система правил для записи допусти­ мых конструкций языка программирования.

Например, если команду проверки условия а/ < 0 надо писать в виде if а[/] < 0 then т:=аЩш, то всякая иная запись такой команды будет воспринята транслятором как ошиб­ ка, т.е. если нарушается форма записи оператора програм­ мы, то транслятор не может понять назначение этого опе­ ратора и выдает сообщение о синтаксической ошибке.

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

Правила синтаксиса и семантики определяют те или иные понятия языка, например операторы, идентификато­ ры, переменные, функции и процедуры, модули и так да­ лее, с которыми нам предстоит познакомиться.

Языки программирования отличаются от естественно­ го человеческого языка. Они отличаются ограниченным числом «слов», значение которых понятно транслятору, и очень строгими правилами записи команд (операторов) и допустимых конструкций языка.

Пятый этап - отладка программы. Это процесс устране­ ния ошибок и доведения программы до ее рабочего состояния.

Как правило, ошибки подразделяются на синтаксиче­ ские, ошибки вычисления и алгоритмические ошибки:

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

2. Ошибки вычисления. В процессе счета могут воз­ никнуть следующие ситуации - ошибки счета:

1/х, когда х=0, деление на нуль, -s/jc, когда х<0,

Ln(jc), когда JC<=0.

Вэтих случаях выполнение программы останавливается

итранслятор выдает на экран соответствующие сообщения.

3. Алгоритмические (логические) ошибки. Для устранения этих ошибок просчитывается контрольный пример, т.е. просчитывается вариант с упрощенными ис­ ходными данными вручную и по программе. Результаты сравниваются.

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

Шестой этап - решение задачи на ЭВМ, анализ полу­ ченных результатов.

1.2. Интегрированные системы

программирования

Интегрированные системы программирования, или просто системы программирования (СП) - это пакеты про­ грамм для создания или изменения программ для ЭВМ. Это инструментальные средства программного обеспечения.

Язык программирования, с которым работает СП, называется ее входным языком. Системы программирова­ ния именуются по названию своего входного языка. Например: «Система Бейсик», «Система Паскаль», «Си­ стема СИ» и т.д. Иногда название СП содержит префиксы, обозначающие, например, ее фирменное происхождение: «Турбо-Бейсик», «Турбо-Паскаль». Приставка «Турбо» означает, что данная СП разработана фирмой Borland In­ ternational (США).

Современные интегрированные системы программи­ рования предоставляют программисту удобные средства

для разработки программ и, как правило, включают в себя: текстовый редактор, транслятор, редактор связей (компо­ новщик), библиотеки подпрограмм и отладчик.

Текстовый редактор. Для создания исходного текста программы (исходного модуля) используются специализи­ рованные редакторы, ориентированные на конкретный язык программирования. Такие редакторы могут автома­ тически проверять правильность синтаксиса программы непосредственно в процессе ее ввода.

Транслятор является обязательным элементом любой системы программирования.

Для того чтобы исходный текст программы, написан­ ный на языке высокого уровня, был переведен на понят­ ный для ЭВМ язык машинных кодов, нужна программапереводчик - транслятор (англ, translater).

Существует два различных метода трансляции. Они соответственно называются интерпретацией и компиля­ цией (англ, compile - составлять, собирать).

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

1.Синхронный перевод. Преподаватель читает лек­ цию, переводчик одновременно с ним слово за словом пе­ реводит ее.

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

Интерпретация является аналогом синхронного пере­ вода, а компиляция —аналогом полного предварительного

перевода. Соответственно, программы-трансляторы, рабо­ тающие тем или иным методом, называются интерпрета­ тором и компилятором.

Интерпретатор в течение всего времени работы про­ граммы должен находиться в оперативной памяти. Там же помещается и исходный модуль программы. Интерпрета­ тор «читает» последовательно каждый оператор исходного текста, анализирует его структуру, переводит его в ма­ шинные команды и затем немедленно исполняет. Только после того, как текущий оператор успешно выполнен, ин­ терпретатор переходит к следующему.

Результаты этих переводов в памяти не сохраняются. Если один и тот же оператор встречается в тексте несколь­ ко раз, интерпретатор будет добросовестно выполнять его так, как будто встретил его впервые. Вследствие этого про­ граммы-интерпретаторы работают достаточно медленно. Но интерпретатор имеет свои преимущества - с его помо­ щью проще отлаживать программу.

Компилятор полностью обрабатывает весь исходный текст программы: просматривает текст в поисках синтак­ сических ошибок, выполняет определенный смысловой анализ, а затем автоматически переводит (транслирует) его на язык машинных кодов.

На этом этапе уже возможно получение программы, готовой к выполнению. Однако чаще всего в ней не хвата­ ет некоторых компонентов, поэтому компилятор обычно выдает промежуточный объектный модуль. Это двоичный файл со стандартным расширением - .OBJ.

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

Редактор связей (компоновщик или сборщик). Ис­ ходный текст большой программы, как правило, состоит из нескольких исходных модулей. Каждый модуль компили­ руется в отдельный объектный модуль, которые надо объ­ единить в одно целое.

К тому же к ним надо добавить машинные коды под­ программ, реализующих различные стандартные функции (например, вычисляющие математические функции In, sin и др.). Такие функции содержатся в библиотеках (файлах со стандартным расширением .ЫВ.), которые поставляют­ ся вместе с компилятором.

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

Исполняемый модуль - это законченная программа, ко­ торую можно запустить на любом компьютере, где установ­ лена операционная система, для которой эта программа созда­ валась. Итоговый файл имеет расширение .EXE или .СОМ.

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

На рис. 1.1 показан порядок создания исполняемого модуля в интегрированной системе программирования Pascal. Прежде всего с помощью экранного редактора вводится исходный текст программы (исходный модуль),