- •Учебно-методический комплекс дисциплины «Информатика» Календарно-тематический план.
- •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.Список рекомендуемой литературы Основная литература
- •Дополнительная литература
Тема 8. Массивы
8.1. Одномерные массивы
Ранее обсуждались переменные простых типов данных. По-другому они называются скалярными типами данных. Каждый из этих типов данных характеризуется дискретным набором множества своих значений (напомним, что это относится в том числе и к вещественным типам, однако перечислить конкретные значения элементов соответствующего множества для того или иного вещественного типа достаточно сложно, для этого необходимо абсолютно точно знать, как именно он реализован в компьютере). Заметим, что все скалярные типы, кроме вещественных, называются также порядковыми типами: значения любого из таких типов могут быть упорядочены так, что компьютерное представление каждого следующего значения есть двоичное число, на единицу больше предыдущего (это справедливо и для нечисловых типов данных). С общими свойствами порядковых типов мы подробно познакомимся в дальнейшем.
Из элементов простых типов в языке Паскаль можно образовывать составные (структурированные) типы данных, так называемые структуры данных. Примером такой структуры является векторный тип данных – массив.
Массив – это составной объект, образованный из элементов (компонент) одного и того же типа. Такой тип данных применяется в программировании для обозначения объектов, аналогичных числовым последовательностям в математике, где сразу целая группа чисел обозначается одним именем (чаще всего буквой), а для обращения к каждому отдельному числу данной последовательности используются различные индексы (номера элементов). В математике это может выглядеть, например, так:
Запись на Паскале выглядит следующим образом:
Тип индекса может быть ограниченным, литерным, перечислимым, логическим, это объясняется тем фактом, что указанные типы строго упорядочены и пронумерованы.
Например:
Если индексы – это упорядоченные символы a…z или A…Z, то возможна такая запись
Для ограниченного типа 0..10
Заметьте, что допускается последовательность от false..true, но никак не true..false. Так же не допускается последовательность ‘y’..’f’.
Для описания подобных объектов в программировании следует предварительно ввести соответствующий тип в разделе описания типов. Описание типа данных массив производится 2 способами.
1 способ:
2 способ:
Все компоненты масссива ( то есть составляющие его элементы) обозначаются элементами упорядоченного множества индексов, принадлежащих к одному из порядковых типов. Порядковые типы могут быть различными, но чаще всего для этого используется ограниченный тип (диапазон) целых чисел, например, 1..100. То есть фактически на месте порядкового типа обычно стоит следующая конструкция:
Тип же самих элементов может быть любым, в том числе и составным. Количество элементов массива называется его размерностью.
В Паскале упомянутую выше последовательность можно описать, например, следующим образом:
То есть мы задали массив вещественных чисел, состоящий из 10 элементов. Меняя значение константы n, мы можем изменять количество элементов в массиве.
Примеры:
Проверим правильность записи переменных:
l[5]:=7.5; - не правильная запись, так как индекс относится к типу char.
l[‘5’]:=‘b’; - ошибка записи, так как переменная l – это действительное число (тип real).
Правильным было бы следующее выражение:
l['5']:= 7.5;
Проверьте правильность следующих записей:
a[5]:= 'a'; p[z]:=true;
a[11]:= 'a'; b[c and d]:=5;
Проверьте себя. Как опишутся в программе переменные массива var x: array[1..n] of real ?
Ответ: x[1]:=2.5; x[n]:=0.1; x[2]:=0.5.
Над переменными типа массив возможна только операция присваивания. То есть содержимое одного массива может быть присвоено содержимому другого массива того же самого типа. Например, если мы добавим в описание переменных переменную b того же типа aa, то в программе будет возможно использовать, например, следующий оператор присваивания: b:=a.
Очевидно, что для того, чтобы этот оператор имел смысл, значения элементов массива a уже должны быть заданы, например, введены с клавиатуры.
С элементами массива можно осуществлять все те же действия, которые допустимы с обыкновенными переменными соответствующего типа. Чтобы обратиться в программе к конкретному элементу массива, после имени переменной типа массив в квадратных скобках должно стоять выражение для соответствующего индекса элемента. Это может быть константа, входящая в диапазон констант, указанный при описании, это может быть переменная того же самого порядкового типа (если в качестве индексов используется конкретный диапазон целых значений, то переменная может принадлежать любому целому типу), наконец это может быть произвольное выражение, значение которого также принадлежит указанному типу. Например, a[5], a[i], a[i+1], a[2*k-1]. При использовании переменных для обозначения индекса их значения к моменту использования должны быть определены, а в случае арифметических выражений их результат не должен выходить за границы массива (минимальное и максимальное значения индекса).
Индексы элементов массива могут начинаться с любого целого числа, в том числе и отрицательного, например:
Массивы данного типа будут содержать 9 логических переменных, пронумерованных от -5 до 3.
Ввод и вывод значений одномерного массива
Существуют стандартные способы ввода и вывода массива. Чаще всего массив обрабатывается в цикле for. Вводить значения элементов массива можно двумя способами.
Первый способ:
В данном случае значения элементов массива можно вводить в одну строку через пробел. Если же оператор read(a[i]) заменить на readln(a[i]), то элементы массива будет необходимо вводить в столбец.
Второй способ:
Такой способ ввода значений элементов массива позволяет отслеживать, какой именно элемент был введен в данный момент. Единственный момент, на который необходимо обратить внимание – не запутаться в количестве апострофов. Заметьте, то, что обособлено апострофами будет выведено на экран без изменений, а вместо переменной i будет выведено ее значение (цифра).
На экране это будет выглядеть следующим образом:
Аналогично производится распечатка массива. Но просто заменить read на write здесь не достаточно. Для того, чтобы печатаемые значения не сливались между собой, надо явным образом вставлять между ними разделитель – пробел или перевод строки. Приведем два возможных способа распечатки массива:
Вывод значений элементов массива в одну строку:
Вывод значений элементов массива в столбец:
На первый взгляд второй способ может показаться более простым и удобным, но это далеко не всегда так. Результат работы такой программы зачастую неудобно, а то и просто невозможно анализировать. Ведь каждый элемент массива будет располагаться в отдельной строке, следовательно, мы не сможем увидеть более 25 элементов одновременно. Кроме того, очень часто массив требуется распечатать дважды, чтобы сравнить состояние массива до обработки и результат его обработки. В этом случае сравнение состояний массива гораздо удобнее производить, если они распечатаны в двух соседних строках, а элементы выровнены по столбцам, т.е. к варианту 1 должна быть добавлена еще и форматная печать (указано количество позиций, которое должно отводиться на печать одного элемента).