Основы алгоритмизации и программирования
.pdfРУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
3.Решение задач.
4.Выполнение лабораторных работ.
5.Участие в форуме.
6.Тестирование.
7.Изучение дополнительной литературы.
Методические указания
Вопросы темы:
1.Структура программы.
2.Описание и вызов процедур
3.Описание функции.
4.Формальные и фактические параметры.
5.Область действия имен.
6.Рекурсивные процедуры и функции.
7.Структура модуля. Подключение модуля.
При изучении первого вопроса:
Ознакомьтесь с материалом раздела «Структура программы на языке Паскаль» базового учебного пособия «Основы алгоритмизации и программирования». Как Вы видите, не все разделы обязательны, и до сих пор Вы писали программы, в которых обычно присутствовало только два раздела: раздел операторов и раздел описания переменных.
При изучении второго и третьего вопросов:
Ознакомьтесь с материалом разделов «Описание и вызов процедур» и «Описание функции» базового учебного пособия «Основы алгоритмизации и программирования». Проанализируйте отличия в описании процедуры и функции. Проанализируйте отличия в вызове процедуры и функции. Обратите внимание на то, что функции, не являющиеся стандартными, можно вызывать, как процедуры, если программиста не интересует значение результата выполнения самой функции.
При изучении четвертого вопроса:
Ознакомьтесь с материалом раздела «Формальные и фактические параметры» базового учебного пособия «Основы алгоритмизации и программирования. Обратите внимание, как описываются входные данные процедуры (функции), а как выходные.
При изучении пятого вопроса:
Ознакомьтесь с материалом раздела «Область действия имен» базового учебного пособия «Основы алгоритмизации и программирования». Обратите внимание, что одинаковые имена, описанные во внешнем и внутреннем блоках, представляют собой разные объекты, расположенные в различных участках памяти.
При изучении шестого вопроса:
Ознакомьтесь с материалом раздела «Рекурсивные процедуры и функции» базового учебного пособия «Основы алгоритмизации и программирования. Обратите внимание на то, что выход из рекурсии должен находиться в теле процедуры (функции), в противном случае программа будет работать не верно.
156
РУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
При изучении седьмого вопроса:
Ознакомьтесь с материалом раздела «Модули» базового учебного пособия «Основы алгоритмизации и программирования». Здесь рассмотрен пример оформления модуля, который поможет Вам при выполнении лабораторной работы «Модульное программиро-
вание».
Решите задачи из практикума «Задание длярешения задачна процедуры ифункции».
Выполните лабораторную работу «Процедуры и функции». В лабораторной работе должны быть реализованы все четыре варианта организации вычислений: в процедуре, в функции, включение процедуры из внешнего файла с помощью директивы компилятора, включение функции из внешнего файла с помощью директивы компилятора. Физически все четыре варианта могут быть в одной программе, но при этом имена у процедур и функций, естественно, должны быть разными, а в главной программе необходимо предусмотреть четыре вызова подпрограмм и четыре вывода результатов. Другой вариант: для каждого случая оформляется отдельная главная программа. Тогда имена процедур и функций могут совпадать и вывод результатов должен быть один раз. Оформите отчет о выполненной лабораторной работе.
Структура отчета о лабораторной работе.
1.Титульный лист с указанием названия лабораторной работы, номера варианта, номера группы, автора работы и года.
2.Постановка задачи.
3.Алгоритм (блок-схема или схема МЭСИД).
4.Входные данные.
5.Результаты, ожидаемые и полученные во время работы программы.
6.Листинги.
Выполните лабораторную работу «Модульное программирование». Оформите отчет о выполненной лабораторной работе. Отчет имеет такую же структуру, как для предыдущей работы.
Контрольные вопросы для самооценки
1.Для чего нужны процедуры и функции в языке программирования?
2.Как оформляется процедура?
3.Как можно передать данные в процедуру?
4.Какие способы передачи параметров предназначены для входных данных, а какие для результатов?
5.Как осуществляется вызов процедуры?
6.Чем отличается функция от процедуры?
7.Как осуществляется вызов функции?
8.Можно ли функцию вызывать, как процедуру? Если можно, то какую?
9.Каким способом передаются массивы в качестве параметров (одномерные, двумерные)?
10.В чем различие между интерфейсной частью модуля и секцией реализации?
11.Где можно использовать объекты (типы, переменные и т.д.), описанные в разделе описаний секции реализации?
12.Где можно использовать объекты (типы, переменные и т.д.), описанные в разделе описаний интерфейсной части модуля?
157
РУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
При изучении темы необходимо
● Читать:
Основная литература:
Грибанов В.П., Калмыкова О.В., Сорока Р.И. «Основы алгоритмизации и программирования». – М.: МЭСИ. – 2004.
Дополнительная литература:
1.Иванова Г.С. Основы программирования: Учебник для вузов. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. – 392 с.
2.Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. – М.: Нолидж, 1998.
– 616 с.
3.Турбо Паскаль 7.0. – К.: Издательская группа BHV, 2000.
4.Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. – М.: ДМК, 2000.
5.Культин Н. Turbo Pascal . Самоучитель+CD-ROM. – К.: BHV-Санкт-Петербург, 1997.
6.Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0. – М: Диалог–МИФИ, 1996
7.Немнюгин С.А. Turbo Pascal. – СПб: Питер, 2000.
8.Попов В.Б. Turbo Pascal для школьников. Версия 7.0. – Финансы и статистика, 1996.
Посетить сайты Интернет: http://delphid.dax.ru/ http://www.coding.hostmos.ru/ http://www.cydsoft.com/vr-online/ http://www.freepascal.org/ http://www.lazarus.freepascal.org http://dcprograms.narod.ru/ http://adept.h1.ru
http://www.iatp.kharkov.ua/sites/program/index.htm http://delphi.chertenok.ru/ http://programmerts.by.ru/tpascal/ishod/mat/ http://pts.h10.ru
http://citforum.ru/programming/
Тема 7. Стандартные модули Турбо Паскаля
Содержание темы
Общая характеристика стандартных модулей. Модуль System. Математические функции.
Процедуры и функции для работы со строковыми данными. Процедуры ввода-вывода.
Модуль Crt. Процедуры и функции для работы с экраном и клавиатурой. Специальные процедуры и функции.
Модуль Graph. Процедуры и функции для работы в графическом режиме. Процедуры и функции для работы с текстом в графическом режиме.
158
РУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
Цели изучения темы
●Познакомить с использованием стандартных модулей Турбо Паскаля, основными процедурами и функциями, находящимися в стандартных модулях.
●Познакомить с основными процедурами и функциями для работы с экраном в текстовом режиме.
●Познакомить с основными процедурами и функциями для работы с экраном в графическом режиме.
Задачи изучения темы
●Формирование навыков работы со стандартными модулями.
●Изучение приемов работы с процедурами и функциями модуля Crt.
●Изучение приемов работы с процедурами и функциями модуля Graph.
Успешно изучив тему, студент
Знает: подключение стандартных модулей, процедуры и функции, имеющиеся в стандартных модулях.
Умеет: составлять программы решения задач с использованием процедур и функций из стандартных модулей.
Приобретает навыки: программирования задач обработки строковых данных, программирования ввода-вывода данных, работы с клавиатурой и дисплеем, программирования графики и вывода текста в графическом режиме.
Изучая тему, необходимо акцентировать внимание на следующих понятиях
●стандартный модуль;
●процедуры и функции работы со строками;
●процедуры и функции ввода-вывода;
●процедуры и функции работы с клавиатурой;
●текстовый режим;
●графический режим;
●вывод текста в графическом режиме.
Порядок изучения темы
Для изучения темы выделяется 18 часов самостоятельной работы. Предусмотрены теоретические и практические занятия:
1.Стандартные модули Турбо Паскаля.
2.Модуль Graph.
Предусмотрена работа студентов в формах:
1.Изучение теоретического материала.
2.Решение задач.
3.Выполнение лабораторных работ.
4.Тестирование.
5.Изучение дополнительной литературы.
159
РУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
Методические указания
Вопросы темы:
1.Математические функции.
2.Функции округления и преобразования типов.
3.Процедуры и функции порядкового типа.
4.Процедуры и функции работы со строками.
5.Прочие процедуры и функции.
6.Процедуры ввода-вывода.
При изучении первого вопроса:
Ознакомьтесь с материалом раздела «Стандартные процедуры и функции» пунктом «Математические функции» базового учебного пособия «Основы алгоритмизации и программирования». Обратите внимание на то, что основная масса математических функций имеет тип результата real, а при записи выражений типы операндов должны совпадать. Кроме того, здесь же приводится пример, как подсчитать степень числа, используя стандартные математические функции, т.к. в Паскале нет операции возведения в степень.
При изучении второго вопроса:
Ознакомьтесь с материалом раздела «Стандартные процедуры и функции» пунктом «Функции округления и преобразования типов» базового учебного пособия «Основы алгоритмизации и программирования». Обратите внимание на то, что функция int имеет тип результата real, поэтому ее нельзя использовать для округления значения, например, в заголовке цикла for, в отличие от Бейсика, где эта функция широко применяется для этих целей. Обычно для округления до целого используются функции trunc или round.
При изучении третьего вопроса:
Ознакомьтесь с материалом раздела «Стандартные процедуры и функции» пунктами «Функции порядкового типа» и «Процедуры порядкового типа» базового учебного пособия «Основы алгоритмизации и программирования». Использование этих процедур и функций понятно из их назначения. Обычно вместо оператора присваивания i:=i+1 используют оператор вызова процедуры inc(i). Аналогично, с другими процедурами и функциями этой группы. Например, в программах в разделе «Операции над множествами».
При изучении четвертого вопроса:
Ознакомьтесь с материалом раздела «Стандартные процедуры и функции» пунктами «Строковые функции» и «Строковые процедуры» базового учебного пособия «Основы алгоритмизации и программирования». Использование процедур и функций этой группы существенно упрощает работу со строковыми данными. В разделе «Операции над множествами» приводится текст программы обработки строки. Проанализируйте приведенный текст программы прежде, чем решать задачи и выполнять лабораторную работу на обработку строк. Посмотрите, какие процедуры и функции работы со строками и для каких целей используются в этой программе.
Решите задачи из практикума «Задание для решения задач на строки». Выполните лабораторную работу «Обработка строк». Оформите отчет о выполненной лабораторной работе. Отчет о лабораторной работе имеет следующую структуру:
160
РУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
Структура отчета о лабораторной работе.
1.Титульный лист с указанием названия лабораторной работы, номера варианта, номера группы, автора работы и года.
2.Постановка задачи.
3.Алгоритм (блок-схема или схема МЭСИД).
4.Входные данные.
5.Результаты, ожидаемые и полученные во время работы программы.
6.Листинги.
При изучении пятого вопроса:
Ознакомьтесь с материалом раздела «Стандартные процедуры и функции» пунктом «Прочие процедуры и функции» базового учебного пособия «Основы алгоритмизации и программирования». Эти процедуры и функции понадобятся при выполнении лабораторных работ для оформления меню в текстовом режиме.
При изучении шестого вопроса:
Ознакомьтесь с материалом раздела «Стандартные процедуры и функции» пунктами «Процедуры ввода данных» и «Процедуры вывода данных» базового учебного пособия «Основы алгоритмизации и программирования». Здесь приводятся особенности процедур ввода-вывода при работе с различными типами данных в разных режимах, что позволит более наглядно осуществлять ввод-вывод при выполнении лабораторных работ.
Методические указания к занятию 2
Вопросы темы:
1.Общая характеристика модуля Graph.
2.Инициализация графического режима и переход в текстовый режим.
3.Работа с линиями, точками и фигурами.
4.Управление цветом.
5.Вывод текста в графическом режиме.
При изучении первого вопроса:
Ознакомьтесь с материалом, изложенным в книге Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. – М.: Нолидж, 1998, стр. 276-277. Здесь изложена общая характеристика графических режимов.
При изучении второго вопроса:
Ознакомьтесь с материалом, изложенным в книге Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. – М.: Нолидж, 1998, стр. 278-283. Приводятся процедуры, необходимые для включения графического режима, временного перехода из графического режима в текстовый и обратно, а также закрытие графического режима с освобождением памяти от графического драйвера.
При изучении третьего вопроса:
Ознакомьтесь с материалом, изложенным в книге Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. – М.: Нолидж, 1998, стр. 284-306. Описываются процедуры, позволяющие выводить точки, линии, многоугольники, окружности, дуги, эллипсы и др. Приводятся многочисленные примеры, иллюстрирующие применение описанных процедур.
161
РУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
При изучении четвертого вопроса:
Ознакомьтесь с материалом, изложенным в книге Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. – М.: Нолидж, 1998, стр. 307-323. Обратите внимание, что некоторые процедуры рисования содержат параметр, отвечающий за цвет, а другие такого параметра не содержат, поэтому цвет должен быть установлен предварительно отдельной процедурой. Описываются процедуры, позволяющие устанавливать цвет, менять палитру, образцы штриховки для закрашенных фигур и т.д.
При изучении пятого вопроса:
Ознакомьтесь с материалом, изложенным в книге Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. – М.: Нолидж, 1998, стр. 326-334. Обратите внимание на то, что при выводе русских букв возникают определенные трудности. Кроме того, не предусмотрены специальные процедуры для вывода числовой информации в связи, с чем, перед выводом чисел необходимо преобразовать их в строки.
Процедуры и функции модуля Graph широко используются при программировании меню в графическом режиме, вывода графиков и диаграмм в групповом проекте, заставок для лабораторных работ, группового проекта. Пример программ вывода графика и круговой диаграммы приводится, например, в книге Иванова Г.С. Основы программирования: Учебник для вузов. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2001, стр. 279-285.
Контрольные вопросы для самооценки
1.Классификация стандартных процедур и функций.
2.Назначение основных стандартных модулей.
3.Особенности математических функций.
4.Особенности процедур и функций для работы со строковыми данными.
5.Особенности использования экранно-ориентированных процедур.
6.Основные особенности процедур ввода-вывода.
7.Особенности вывода вещественных значений.
8.Особенности ввода одномерных и двумерных массивов.
9.Особенности вывода одномерных и двумерных массивов
10.Особенности работы в графическом режиме.
11.Особенности вывода текста в графическом режиме.
При изучении темы необходимо:
● Читать:
Основная литература:
Грибанов В.П., Калмыкова О.В., Сорока Р.И. «Основы алгоритмизации и программирования». – М.: МЭСИ. – 2004.
Дополнительная литература:
1.Иванова Г.С. Основы программирования: Учебник для вузов. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. – 392с.
2.Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. – М.: Нолидж, 1998.
– 616 с.
3.Турбо Паскаль 7.0. – К.: Издательская группа BHV, 2000.
4.Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. – М.: ДМК, 2000.
162
РУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
5.Культин Н. Turbo Pascal . Самоучитель+CD-ROM. – К.: BHV-Санкт-Петербург, 1997.
6.Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0. – М: Диалог–МИФИ, 1996
7.Немнюгин С.А. Turbo Pascal. – СПб: Питер, 2000.
8.Попов В.Б. Turbo Pascal для школьников. Версия 7.0. – Финансы и статистика, 1996.
Посетить сайты Интернет: http://delphid.dax.ru/ http://www.coding.hostmos.ru/ http://www.cydsoft.com/vr-online/ http://www.freepascal.org/ http://www.lazarus.freepascal.org http://dcprograms.narod.ru/ http://adept.h1.ru
http://www.iatp.kharkov.ua/sites/program/index.htm http://delphi.chertenok.ru/ http://programmerts.by.ru/tpascal/ishod/mat/ http://pts.h10.ru
Тема 8. Динамические структуры данных
Содержание темы
Общие сведения о динамическом распределении памяти и динамических переменных. Указатели, объявление ссылочных переменных.
Управление выделением и освобождением динамической памяти на логическом уровне.
Управление динамической памятью на физическом уровне. Работа со стеками и очередями.
Создание и обработка однонаправленных и двунаправленных списков. Двоичные деревья. Создание и обработка двоичных деревьев.
Цели изучения темы
Познакомить с динамическими структурами данных, способами их представления и обработки на языке Турбо Паскаль.
Задачи изучения темы
●Ознакомление с динамической памятью. Ее организацией и способами выделения.
●Формирование навыков программирования задач с использованием динамических переменных.
●Ознакомление с динамическими структурами данных, алгоритмами создания и обработки таких структур.
Успешно изучив тему, студент
Знает: динамические структуры данных, управление выделением памяти на физическом и физическом уровнях, приемы работы с динамическими структурами;
163
РУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
Умеет: составлять программы решения задач с использованием динамических структур данных;
Приобретает навыки: программирования создания и обработки динамических структур данных.
Изучая тему, необходимо акцентировать внимание на следующих понятиях
●динамическая память;
●динамическая переменная;
●указатель;
●ссылка;
●управление памятью на физическом уровне;
●управление памятью на логическом уровне;
●стек;
●очередь;
●дек;
●список;
●однонаправленный список;
●двунаправленный список;
●дерево;
●двоичное дерево.
Порядок изучения темы
Для изучения темы выделяется 24 часа самостоятельной работы. Предусмотрены теоретические и практические занятия:
1.Динамическая память и стандартные процедуры и функции работы с динамической памятью.
2.Списковые структуры данных.
3.Древовидные структуры данных.
Предусмотрена работа студентов в формах:
1.Изучение теоретического материала.
2.Выполнение практических заданий.
3.Решение задач.
4.Выполнение лабораторных работ.
5.Тестирование.
6.Изучение дополнительной литературы.
Методические указания
Вопросы занятия:
1.Общее представление о статической и динамической памяти.
2.Описание динамических переменных и обращение к ним.
3.Процедуры и функции работы с динамической памятью.
При изучении первого вопроса:
Ознакомьтесь с материалом раздела «Динамическая память» базового учебного пособия «Основы алгоритмизации и программирования». Подумайте о том, какие преимущества и недостатки имеет динамическая память.
164
РУКОВОДСТВО ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
При изучении второго вопроса:
Ознакомьтесь с материалом раздела «Указатель» базового учебного пособия «Основы алгоритмизации и программирования». Обратите внимание, что в описании указателя должен использоваться либо стандартный тип, либо идентификатор предварительно определенного структурированного типа.
При изучении третьего вопроса:
Ознакомьтесь с материалом разделов «Стандартные процедуры размещения и освобождения динамической памяти», «Стандартные функции обработки динамической памяти», «Примеры и задачи» и «Работа с динамическими массивами» базового учебного пособия «Основы алгоритмизации и программирования». Обратите внимание на различные подходы к размещению динамических переменных и освобождению памяти от них: физический и логический.
Решите задачи из практикума «Задание длярешения задачна динамические массивы».
Выполните лабораторную работу «Динамическая память». Меню можно разрабатывать в текстовом режиме или с использованием модуля Graph. Оформите отчет о выполненной лабораторной работе.
Структура отчета о лабораторной работе.
1.Титульный лист с указанием названия лабораторной работы, номера варианта, номера группы, автора работы и года.
2.Постановка задачи.
3.лгоритм (блок-схема или схема МЭСИД).
4.Входные данные.
5.Результаты, ожидаемые и полученные во время работы программы.
6.Листинги.
Методические указания к занятию 2
Вопросы занятия:
1.Виды организации списков.
2.Основные операции со списками.
При изучении первого вопроса:
Ознакомьтесь с материалом разделов «Организация списков» и «Стеки, деки, очереди» базового учебного пособия «Основы алгоритмизации и программирования» и книгой Иванова Г.С. Основы программирования: Учебник для вузов. – М.: Изд-во МГТУ им. Н.Э.Баумана,2001 стр.223-225.. Подумайте о том, при решении каких задач, какая организация списка наиболее оптимальна.
При изучении второго вопроса:
Ознакомьтесь с материалом разделов «Задачи включения элемента в линейный однонаправленный список без головного элемента», «Задачи на удаление элементов из линейного однонаправленного списка без головного элемента» и «Использование рекурсии при работе со списками» базового учебного пособия «Основы алгоритмизации и программирования» и книгой Иванова Г.С. Основы программирования: Учебник для вузов. – М.: Изд-во МГТУ им. Н.Э.Баумана,2001 стр.226-237. Сравните алгоритмы обработки списков, написанные с помощью рекурсии и без нее. Подумайте, какой способ является более наглядным, какой – более оптимальным.
Решите задачи из практикума «Задание для решения задач на списки».
165