Государственное образовательное учреждение высшего профессионального образования
донской государственный технический университет
каф. «ПОВТ и АС»
Лекции по курсу
«Языки программирования высокого уровня»
Разработал
доц., к.т.н. Землянухин В.Н..
Ростов-на-Дону
2008
Методические рекомендации по организации изучения дисциплины.
Рабочей программой и учебным планом на изучение дисциплины отводится один семестр. В конце семестра, в качестве итогового контроля, предусмотрен экзамен.
В течение первых 5-ти недель студенты изучают основы алгоритмизации на псевдокоде, с помощью структурограмм Насси- Шнедермана, блок-схем. Затем типовые алгоритмы реализуются на Паскале (Object pascal).
В итоге студент должен изучить программирование стандартных типов данных, три вида циклов, условные операторы и оператор выбора, процедуры и функции. Должен знать приемы структурного программирования. Уметь писать, и отлаживать простые программы.
Лекции.
Лекция 3.1.1. Введение в программирование и языки см. в лекции 1. Остальные разделы лекции в 5.1.1: стр. 5-9. (5.1.15)Иванова Г.С. Основы программирования: учебник для вузов. М.: Издательство МГТУ им. Баумана, 2004: стр.12-24
Лекции 3.1.2. Алгоритмизация. 5.1.1: стр.10-53. в этом пособии достаточно подробно рассмотрены все вопросы алгоритмизации. И единственное издание, где подробно изложены схемы Насси- Шнейдермана. В учебнике (5.1.15): стр.12-24.
Лекции 3.1.3. Программирование на языке высокого уровня (Паскаль, Object Pascal). 5.1.1: стр. 82-98; (5.1.15): стр 28-49 здесь подробно вводятся нотации Бэкуса- Наура и синтаксические диаграммы.5.1.2: стр. 14-39.
Лекции 3.1.4 Концепция типов данных. 5.1.1: стр. 82-97; 5.1.2: 58-90; (5.1.15): 31- 40;
Лекции 3.1.5 Управляющие операторы языка. 5.1.1: стр.99-151; 5.1.2.: стр. 40-57; (5.1.15): стр.50-69;
Лекции 3.1.6 Структурированные типы данных. 5.1.1 : стр.186-201; 5.1.2.: стр. 60-80;( 5.1.15): стр. 77-136.
Лекции 3.1.7 Подпрограммы. 5.1.1 стр: 204-249; 5.1.2.: стр. 90-107;( 5.1.15): стр. 144-178.
Лекции 3.1. Файловый тип. Процедуры и функции обработки файлов 5.1.1 стр: 296-317; 5.1.2.: стр. 78-89;( 5.1.15): стр. 188-209.
Изучение курса в указанной последовательности и в объеме и содержании в приведенной литературе гарантирует качественное усвоение дисциплины. Для тех студентов, кто хочет получить дополнительные знания рекомендуется чтение дополнительной литературы 5.2.1.-5.2.7, а также периодической литературы: «Мир ПК», «Открытые системы», «Byte» и др. журналы.
Лекция 1.Этапы решения задач на ЭВМ. Жизненный цикл ПО.
В основе деятельности по созданию и использованию программного обеспечения лежит понятие жизненного цикла, который является моделью создания и использования программного обеспечения, отражающей его различные состояния, начиная с момента возникновения необходимости в данном программном изделии и заканчивая моментом его полного выхода из употребления у пользователей. Для каждого конкретного программного изделия количество, состав и последовательность этапов жизненного цикла определяется на ранних стадиях его создания. Непосредственный выбор определяется различными ограничениями и особенностями предметной области.
Решение любой задачи с использованием ЭВМ состоит из нескольких1. Техническое задание (постановка задачи).
2. Формализация (математическая постановка задачи).
3. Выбор (или разработка) метода решения.
4. Разработка алгоритма (алгоритмизация).
5. Выбор языка программирования.
6. Структура данных.
7. Оптимизация.
8. Подготовка отладки.
9. Тесты и методы «ручной» проверки (без использования ЭВМ).
10. Запись программы на конкретном языке программирования.
11. Тестирование и отладка.
12. Вычисления и обработка результатов.
13. Документирование.
Последовательное выполнение перечисленных этапов составляет полный цикл разработки, отладки и счета программы. Приведенное разделение является условным.
Рассмотрим более подробно некоторые наиболее общие и необходимые этапы.
Постановка задачи. При постановке задачи первостепенное внимание должно быть уделено выяснению конечной цели и выработке общегоподхода к исследуемой проблеме: выяснению, существует ли решение
поставленной задачи и единственно ли оно; изучению общих свойстврассматриваемого физического явления или объекта; анализу возможно-стей конкретной ЭВМ и данной системы программирования. На этомэтапе требуется глубокое понимание существа поставленной задачи
Правильно сформулировать задачу иногда не менее сложно, чем ее решить.
Формализация. Формализация, как правило, сводится к построениюматематической модели рассматриваемого явления, когда в результате
анализа существа задачи определяются объем и специфика исходныхданных, вводится система условных обозначений, устанавливается принадлежность решаемой задачи к одному из известных классов задачбирается соответствующий математический аппарат. При этом нужно уметь сформулировать на языке математики конкретные задачи физики, механики, экономики, технологии и т. д. Для успешного преодоленияэтого этапа требуются не только солидные сведения из соответствующейпредметной области, но и хорошее знание вычислительной математики,
т. е. тех методов, которые могут быть использованы при решении задачина машине.
Полная постановка многих сложных задач невыполнима средствамивычислительной техники. Поэтому эти задачи нужно упрощать. Грамот-ное упрощение задачи невозможно без хорошего представления о том,какие факторы и параметры наиболее важны для изучаемой задачи, а какие менее существенны. При этом также очень важно знать, какаяиз возможных расчетных схем может привести к упрощениям вычислительного характера, обусловленным выбором вычислительного метода.Если имеющихся средств недостаточно, тогда необходимо разработать
новый подход, новые методы исследования.
Выбор метода решения. После того как определена математическаяформулировка задачи, надо выбрать метод ее решения. Вообще говоряприменение любого метода приводит к построению ряда формули к формулировке правил, определяющих связи между этими формулами.Все это разбивается на отдельные действия так, чтобы вычислительныйпроцесс мог быть выполнен машиной. При выборе метода надо учитывать, во-первых, сложность формул и соотношений, связанных с тем илииным численным методом, во-вторых, необходимую точность вычислений и характеристики самого метода. На выбор метода решения большоевлияние оказывают вкусы и знания самого пользователя.
Этот этап - важнейший в процессе решения задачи. С ним связанымногочисленные неудачи, являющиеся результатом легкомысленногоподхода к ошибкам вычислений. При решении задачи на ЭВМ необходимо помнить, что любой получаемый результат является приближенным.Если известен алгоритм точного решения, то, кроме случайных ошибок(сбоев в работе ЭВМ), возможны ошибки, связанные с ограниченнойточностью представления чисел в ЭВМ. При вычислениях, заключающихся в нахождении результата с заданной степенью точности, возникает
дополнительная погрешность, которую, если возможно, оцениваютна данном этапе (до выхода непосредственно на ЭВМ). Эта погрешностьопределяется выбранным численным методом решения задачи.
Разработка алгоритма. Данный этап заключается в разложении вычислительного процесса на возможные составные части, установлениипорядка их следования, описании содержания каждой такой части в тойили иной форме и последующей проверке, которая должна показать,обеспечивается ли реализация выбранного метода. В большинстве случаев не удается сразу получить удовлетворительный результат, поэтому составление алгоритма проводится методом проб и устранения ошибоки для получения окончательного варианта требуется несколько шаговкоррекции и анализа.
Как правило, в процессе разработки алгоритм проходит несколькоэтапов детализации. Первоначально составляется укрупненная схема ал-горитма, в которой отражаются наиболее важные и существенные связимежду исследуемыми процессами (или частями процесса). На последующих этапах раскрываются (детализируются) выделенные на предыдущихэтапах части вычислительного процесса, имеющие некоторое самостоятельное значение! Кроме того, на каждом этапе детализации выполняетсямногократная проверка и исправление (отработка) схемы алгоритма. Подобный подход позволяет избежать возможных ошибочных решений.
Ориентируясь на крупноблочную структуру алгоритма, можно быстрее и проще разработать несколько различных его вариантов, провестиих анализ, оценку и выбрать наилучший (оптимальный).
Эффект поэтапной детализации алгоритма во многом зависит от того,как осуществляется его структуризация: расчленение алгоритмическогопроцесса на составные части, что должно определяться не произволомпользователя (программиста), а внутренней логикой самого процесса.Каждый элемент крупноблочной схемы алгоритма должен быть макси-мально самостоятельным и логически завершенным в такой степени,чтобы дальнейшую его детализацию можно было выполнять независимоот детализации остальных элементов. Это упрощает процесс проектиро-вания алгоритма и позволяет осуществлять его разработку по частям од-новременно нескольким людям.
В процессе разработки алгоритма могут использоваться различныеспособы его описания, отличающиеся по простоте, наглядности, компактности, степени формализации, ориентации на машинную реализациюн другим показателям. В практике программирования наибольшее распространение получили:
1. Словесная запись алгоритмов.
2. Схемы алгоритмов.
3. Псевдокод (формальные алгоритмические языки).
4. Структурограммы (диаграммы Насси-Шнейдермана).