- •Учебно-методический комплекс дисциплины «Информатика» Календарно-тематический план.
- •2. Тезисы лекций Тема 1. Понятие алгоритма, свойства, типы, исполнители
- •Тема 2. Система программирования TurboPascal. Исполняемые операторы. Словарь языка. Структура программы.
- •Имена, ключевые слова и знаки операций
- •Тема 3. Предопределенные типы переменных (простые), стандартные функции
- •Операции и выражения
- •Тема 4. Операторы Ввода-вывода Оператор вывода writeln
- •Тема 5. Операторы условий, выбора и безусловного перехода
- •Тема 6. Операторы циклов
- •Тема 7. Символьные типы данных. Обработка символьных данных.
- •Тема 8. Массивы
- •8.1. Одномерные массивы
- •8.2. Двумерные массивы (матрицы)
- •Обращение к компонентам массива
- •Тема 9. Строки. Строковые процедуры.
- •Неименованные константы
- •Действия с символами
- •Тема 10. Процедуры и функции Подпрограммы
- •Объявление и описание
- •Возвращаемые значения
- •Вызов подпрограмм
- •Параметр-константа
- •Функции
- •Параметр-значение
- •Тема 11. Множества (Set)
- •Тема 12. Файлы. Файловые переменные.
- •Разновидности файлов
- •Работа с текстовыми файлами
- •Тема 13. Записи
- •Описание записей
- •Задание записей константой
- •Доступ к полям
- •Оперирование несколькими полями
- •Вложенные операторы with
- •Запись с вариантной частью
- •Описание записи с вариантной частью
- •Тема 14. Построение изображений на экране Система координат
- •Управление текущим указателем
- •Отображение точки на экране
- •Отображение линий на экране
- •Построение прямоугольников на экране
- •Построение многоугольников
- •Построение дуг, эллипсов и окружностей
- •Тематика и краткое описание лабораторных и студийных работ
- •2. Связь функция-клавиатура в интегрированной среде Turbo Pascal
- •3. Команды экранного редактора:
- •3.1 Команды перемещения курсора
- •3.2 Команды вставки/удаления
- •3.3 Команды работы с блоками
- •4. Технология компиляции
- •5. Технология отладки программы
- •6. Программирование линейных алгоритмов
- •Лабораторная работа 2 программирование разветвляющихся вычислительных процессов
- •Краткие сведения из теории
- •Составить блок-схему и программу алгоритмов нахождения функции с выбором по расчетной формуле.
- •Лабораторная работа 3 программирование циклов с параметром
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 4
- •Лабораторная работа 5 программирование циклов с условием
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 6
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 7 работа с матрицами
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 8 обработка символьных строк
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Лабораторная работа 9 записи. Файлы
- •Краткие сведения из теории
- •Лабораторная работа 10 процедуры
- •Краткие сведения из теории
- •П р о г р а м м а
- •Лабораторная работа 11 функции
- •Краткие сведения из теории
- •П р о г р а м м а
- •П р о г р а м м а
- •Порядок работы
- •Содержание отчета
- •Лабораторная работа 12 графические средства паскаля
- •Краткие сведения из теории
- •Порядок работы
- •Лабораторная работа №14 Динамические структуры данных. Организация данных в списковые структуры
- •Кратное содержание теории
- •Краткое описание семинарских и практических занятий (планы, задания для проведения семинарских и практических занятий, срсп, срс)
- •Тема 1. Структура программы на паскале. Заголовок программы. Блок. Типы данных, их классификация. Переменные и константы. Синтаксис выражений. Порядок работы
- •Содержание отчета
- •Тема 2 конструкция операторов разветвления Порядок работы
- •Содержание отчета
- •Тема 3. Конструкция операторов цикла Порядок работы
- •Содержание отчета
- •Тема 4. Конструкция циклов с предусловием и постусловием Порядок работы
- •Содержание отчета
- •Тема 6. Составные типы данных. Создание одномерных массивов и стандартных процедур. Порядок работы
- •Содержание отчета
- •Тема 7. Создание двумерных массивов и стандартных процедур Порядок работы
- •Содержание отчета
- •Тема 8. Методы работы со строками и отдельными символами Порядок работы
- •Содержание отчета
- •Тема 9. Задачи классической комбинаторики. Записи и файлы. Порядок работы
- •Содержание отчета
- •Тема 10. Процедуры и функции Порядок работы
- •Содержание отчета
- •Тема 13. Динамические переменные. Структуры данных
- •5. Задания для самопроверки и подготовки к экзамену, в том числе тесты
- •5.1 Вопросы для самоконтроля по данному модулю/разделу (коллоквиума);
- •5.2. Контрольные работы по данному модулю/разделу;
- •Тема «Строки»
- •Тема «Множества»
- •6. Учебно-методические материалы по дисциплине
- •6.1.Список рекомендуемой литературы Основная литература
- •Дополнительная литература
Возвращаемые значения
Основное различие между функциями и процедурами состоит в количестве возвращаемых ими значений.
Любая функция, завершив свою работу, должна вернуть основной программе (или другой вызвавшей ее подпрограмме) ровно одно значение, причем его тип нужно явным образом указать уже при объявлении функции.
Для возвращения результата применяется специальная "переменная", имеющая имя, совпадающее с именем самой функции. Оператор присваивания значения этой "переменной" обязательно должен встречаться в теле функции хотя бы один раз.
Например:
Вызов подпрограмм
Любая подпрограмма может быть вызвана не только из основного тела программы, но и из любой другой подпрограммы, объявленной позже нее.
При вызове в подпрограмму передаются фактические параметры или аргументы (в круглых скобках после имени подпрограммы, разделенные запятыми):
Аргументами могут быть переменные, константы и выражения, включающие в себя вызовы функций.
Количество и типы передаваемых в подпрограмму аргументов должны соответствовать количеству и типам ее параметров. Кроме того, тип каждого аргумента должен обязательно учитывать способ подстановки, указанный для соответствующего параметра (подробнее об этом будет рассказано в разделе "Способы подстановки аргументов"). Если у подпрограммы вообще нет объявленных параметров, то при вызове список передаваемых аргументов будет отсутствовать вместе с обрамляющими его скобками.
Вызов функции не может быть самостоятельным оператором, потому что возвращаемое значение нужно куда-то записывать. Зато оно может стать равноправным участником арифметического выражения. Например:
Процедура же ничего не возвращает явным образом, поэтому ее вызов является отдельным оператором в программе. Например:
Замечание: После того как вызванная подпрограмма завершит свою работу, управление передается оператору, следующему за оператором, вызвавшим эту подпрограмму.
В качестве примера рассмотрим процедуру kwad, которая также служит для печати квадрата в процедуре:
Данный пример ясно показывает, что внутри процедуры также можно объявлять новые переменные. Так как эти переменные могут действовать только в самой процедуре, то говорят, что эти переменные являются локальными. Термин «локальные» объявляет, что переменные могут использоваться (имеют смысл) только в самой процедуре.
В процедуре можно также определять метки, константы, типы и т.д. (и даже новые процедуры). Подобная процедура имеет точно такую же структуру, как и программы, которые мы до сих пор описывали.
Процедуры с параметрами-значениями
Представьте себе, что нам нужно воспроизвести рисунок, на котором должны быть нарисованы друг под другом квадраты и размеры квадратов должны быть разными. Для этого случая было бы очень удобно, если бы в процедуре можно было задавать, например, размер напечатанного квадрата.
Паскаль дает такую возможность задавать параметры, принимающие определенные значения в процедуре – «параметры-значения».
Когда в качестве параметров задаются переменные, которые должны подвергаться определенной обработке, тогда речь идет о «параметрах-переменных» (или о параметрах, вызываемых по имени переменной).
Уточним еще раз, заголовок процедуры имеет вид:
Формальные параметры – переменные, используемые внутри процедуры и принимающие различные начальные и конечные значения для каждого вызова процедуры. Описание формальных параметров имеет вид:
Список формальных параметров может состоять из одного параметра или нескольких параметров, отделенных друг от друга запятой.
Поскольку внутри подпрограммы параметры рассматриваются как переменные с начальным значением, то имена локальных переменных, описываемые в разделе var (внутреннем для подпрограммы), не могут совпадать с именами параметров этой же подпрограммы.
Глобальные объекты - это типы данных, константы и переменные, объявленные в начале программы до объявления любых подпрограмм. Эти объекты будут видны во всей программе, в том числе и во всех ее подпрограммах. Глобальные объекты существуют на протяжении всего времени работы программы.
Локальные объекты объявляются внутри какой-нибудь подпрограммы и "видны" только этой подпрограмме и тем подпрограммам, которые были объявлены как внутренние для нее. Локальные объекты не существуют, пока не вызвана подпрограмма, в которой они объявлены, а также после завершения ее работы.
Список параметров может и вовсе отсутствовать:
В этом случае подпрограмма не получает никаких переменных "извне". Упомянутый в начале лекции песенный припев как раз и является примером подпрограммы, в которую не передается никаких данных при вызове.
Однако отсутствие параметров и, как следствие, передаваемых извне значений вовсе не означает, что при каждом вызове подпрограмма будет выполнять абсолютно одинаковые действия. Поскольку глобальные переменные видны изнутри любой подпрограммы, их значения могут неявно изменять внутреннее состояние подпрограмм.
Если способ подстановки и тип нескольких параметров совпадают, описание этих параметров можно объединить:
В заголовке подпрограммы можно указывать только простые (не составные) типы данных. Следовательно, попытка записать
вызовет ошибку уже на этапе компиляции. Для того чтобы обойти это ограничение, составной тип данных нужно описать в разделе type, а при объявлении подпрограммы воспользоваться именем этого типа:
Параметр-переменная
Описание
В списке параметров подпрограммы перед параметром-переменной ставится служебное слово var. Например, процедура proc3 имеет три параметра-переменные и один параметр-значение:
При вызове подпрограммы параметру-переменной может соответствовать только аргумент-переменная; константы и выражения запрещены. Кроме того, тип аргумента и тип параметра-переменной должны быть эквивалентными.
Механизм передачи значения
В отличие от параметра-значения, для параметра-переменной не создается копии при вызове подпрограммы. Вместо этого в работе подпрограммы участвует та самая переменная, которая послужила аргументом. Понятно, что если ее значение изменится в процессе работы подпрограммы, то это изменение сохранится и после того, как будет уничтожен контекст подпрограммы. Понятно опять же и ограничение на аргументы, которые должны соответствовать параметрам-переменным: ни константа, ни выражение не смогут сохранить изменения, внесенные в процессе работы подпрограммы.
Итак, параметры-переменные и служат теми посредниками, которые позволяют получать результаты работы процедур, а также увеличивать количество результатов, возвращаемых функциями.
Замечание: Для экономии памяти в параметр-переменную можно передавать и такую переменную, изменять значение которой не требуется. Скажем, если нужно передать в качестве аргумента массив, то лучше не создавать его копию, как это будет сделано при использовании параметра-значения, а использовать параметр-переменную.