
книги / Основы алгоритмизации и программирования на языке Паскаль
..pdfМинистерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Пермский национальный исследовательский политехнический университет»
Т.Б. Пермякова, М.Е. Лаищева
Основы алгоритмизации и программирования на языке Паскаль
Курс лекций
Утвержден Редакционно-издательским советом университета
Издательство Пермского национального исследовательского
политехнического университета 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. Прежде всего с помощью экранного редактора вводится исходный текст программы (исходный модуль),