
- •A. Государственный образовательный стандарт
- •B. Рабочая программа учебной дисциплины b.1. Цели и задачи дисциплины, ее место в учебном процессе
- •B.2. Протокол согласования рабочей программы с другими дисциплинами специальности на 200_ учебный год
- •B.3. Объем дисциплины и виды учебной работы
- •B.4. Содержание дисциплины b.4.1.Тематический план
- •B.4.2. Лекционный курс
- •B.4.3. Лабораторный практикум
- •B.4.4. Самостоятельная работа студентов
- •B.5. Список рекомендуемой литературы для изучения дисциплины
- •B.6. Вопросы к экзамену
- •B.9. Тематический план
- •C.2.Технические и программные средства реализации информационных процессов.
- •C3. Модели решения функциональных и вычислительных задач. Алгоритмизация и программирование. Алгоритмы, классы, типы, свойства алгоритмов, Языки программирования высокого уровня (обзор).
- •C.4. Тема 4. Основы и методы защиты информации.
- •C.5. Тема 5.Компьютерный практикум.
- •C.9. Тема 9. Постановка задачи и спецификация программы. Способы записи алгоритмов. Стандартные типы данных.
- •5. Описание процедур и функций. Этот вопрос рассматривается в пункте 6.
- •C.10.5. Лекция 5 (1час) Понятие рекурсии, примеры рекурсивных задач и программ с рекурсивными вызовами процедур и функций.
- •C.10.7. Лекция 7 (2 часа) Множества
- •D. Лабораторный практикум d.1 Лабораторная работа № 1
- •D.2. Лабораторная работа № 2
- •D.3. Лабораторная работа № 3
- •D.3.1. Варианты для задания 1. «Простейшие циклы»
- •D.3.2. Варианты для задания 2 «Обработка одномерных массивов»
- •D.4. Лабораторная работа № 4
- •D.5. Лабораторная работа № 5
- •D.6. Лабораторная работа № 6
- •D.7. Лабораторная работа № 7
- •D.8. Лабораторная работа № 8
- •D.9. Лабораторная работа № 9
- •D.10. Лабораторная работа № 10
- •D.11. Литература к лабораторным работам
- •E. Самостоятельная работа. E.1. Задачи для самостоятельной работы e.1.1. Задачи для самостоятельной работы по теме: "Запись числовых констант, переменных и выражений".
- •E.1.2. Задачи для самостоятельной работы по теме: "Типы данных. Операции и функции над данными разных типов".
- •E.1.3. Задачи для самостоятельной работы по теме: "Операторы цикла".
- •E.1.4. Задачи для самостоятельной работы по теме: "Массивы".
- •E.1.5. Задачи для самостоятельной работы по теме: "Процедуры и функции".
- •E.1.6. Задачи для самостоятельной работы по теме: "Строки".
- •E.1.7. Задачи для самостоятельной работы по теме: "Множества".
- •E.1.8. Задачи для самостоятельной работы по теме: "Файлы".
- •E.2. Задачи и упражнения на тему «Структуры данных»
- •E.2.1. Векторы
- •E.2.2. Матрицы
- •E.2.3. Строки
- •E.2.4. Записи и таблицы
- •E.2.5. Списки
- •E.2.6. Очереди, стеки, деревья
- •E.2.7. Двоичные деревья
- •E.2.8. Литература по теме «Структуры данных»
- •G. Контрольные задания по лабораторным работам g.1. Контрольная работа по лабораторным № 3,4
- •G.2. Контрольная работа по лабораторной № 5
- •G.3. Контрольная работа по лабораторным № 6, 7, 8
- •H. Тематика контрольных работ по дисциплине Информатика и программирование
- •I. Вопросы к экзамену
- •J. Литература
C.10.7. Лекция 7 (2 часа) Множества
Множество - неупорядоченная совокупность неповторяющихся элементов одного типа, имеющих общее имя. Количество элементов множества может меняться в пределах от 1 до 255. Описание типа множество имеет вид:
< имя типа > = Set Of < базовый тип >;
Здесь <базовый тип> - это тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме Integer. (В Турбо-Паскале также кроме типовWord, Shortint, Longint).Для задания множества используется конструктор множества, заключенный в квадратные скобки список элементов множества, отделяемых друг от друга запятыми. Элементами могут быть константы или выражения базового типа, а также - тип-диапазон того же базового типа. Конструктор пустого множества имеет вид - [ ].
Пример 11.Пример определения и задания множеств:
Type digitChar = Set Of ‘0’ .. ‘9’; digit = Set Of 0 .. 9; Var s1, s2, s3 : digitChar; s4, s5, s6 : digit; . . . . . . s1 := [‘1’, ‘2’, ‘3’]; s2 := [‘3’, ‘2’, ‘1’]; s3 := [‘2’, ‘3’]; s4 := [0. .3, 6]; s5 := [4, 5]; s6 := [3. .9];. . . . . .
Над множествами определены следующие операции:
Операция |
Смысл |
Пример* |
Результат |
* |
пересечение множеств |
s1*s3 |
[‘2’, ‘3’] |
+ |
объединение множеств |
s4+s5 |
[0. .6] |
- |
разность множеств |
s2-s3 |
[‘1’] |
= |
True, если множества эквивалентны |
s1=s2 s1=s3 |
True False |
<> |
True, если множества неэквивалентны |
s1<>s2 s1<>s3 |
False True |
<= |
True, если первое множество содержится во втором |
s5<=s6 |
True |
>= |
True, если второе множество содержится в первом |
s2>=s3 |
True |
In |
проверка принадлежности значения выражения, стоящего слева множеству, стоящему справа |
7-5 In s4 |
True |
* - примеры приведены согласно описаниям и конструкторам множеств в примере 11.
Пример 12.Организовать ввод элементов трех множествA, B, C.Вычислить и напечатать множества A + B, B * C, C - A.
Program CalcSet;Type SetChar: Set Of Char;Var A, B, C : SetChar;{Процедура ввода множества}Procedure EnterSet(Var D: SetChar);Var ch: Char;Begin Writeln(‘Введите элементы множества, точка - конец ввода’); Read(ch); D:=[]; While ch<>‘.’ Do Begin D := D + [ch]; Read(ch) End;End;{EnterSet}{Процедура вывода множества}Procedure PrintSet(D: SetChar);Var i: Byte;Begin For i := 0 To 255 Do If Chr(i) in D Then Writeln(Chr(i))End;{PrintSet}Begin {Основная программа} Writeln(‘Введите элементы множества A’); EnterSet(A); Writeln(‘Введите элементы множества B’); EnterSet(B); Writeln(‘Введите элементы множества C’); EnterSet(C); PrintSet(A+B); PrintSet(B*C); PrintSet(C-A)End.
C.11. Тема 11
C.11.8. Лекция 8 (2 часа)Типы данных, определяемых пользователем. Записи, файлы, динамические структуры данных, списки: основные виды и способы их реализации; программирование рекурсивных алгоритмов.Понятие записей в языке PASCAL. Правила их конструирования и описания. Оператор для работы с записями(WITH). Примеры программ на работу с записями.Записи с вариантной частью их конструирования и описания. Примеры программ на обработку записей с вариантами
Записи.
Запись - это структура данных, состоящих из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются. Описание записи имеет вид:
< имя типа >= Record < список полей > End
Список полей содержит описания полей с указанием их имен и типов. Тип определяется от имени двоеточием, описания полей определяются друг от друга точкой с запятой. Описания нескольких полей одного типа можно объединить, перечислив через запятую их имена и затем указав их общий тип. Пример: Type birthday = Record day : 1..31; month : 1..12; year: Integer; end; Var a,b: birthday; ....... В этом примере типbirthday(день рождения) содержит три поля с именамиday, month, year (день месяц и год), переменныеaиb содержат записи типа birthday.К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя переменной, затем точку и имя поля:a.day:= 27;b.year:= 1984;
Поля могут быть любого типа (кроме файла), в том числе и типа запись Var c : Record name : String; bd : birthday; End; ......... If c.bd.year=1984 Then . . .
Имена полей должны быть уникальными в пределах той записи, где они объявлены, однако, если записи содержат поля-записи, то имена могут повторяться на разных уровнях вложенности.
C.11.9. Лекция 9 Понятие указателей, динамических и статических переменных. Операции над указателями и динамическими переменными. Создание и уничтожение динамических переменных (NEW( ) и DISPOSE( )).Понятие динамических структур данных (списков, деревьев, графов) в программировании. Разновидности списков, деревьев, графов. Построение динамических структур данных и типовые задачи и алгоритмы их обработки.
C.11.10. Лекция 10 (4 часа) Понятие файлов в программировании. Процедуры для работы с файлами. Двоичные файлы. Их создание и обработка. Текстовые файлы. Их создание и обработка. Типизированные и нетипизированные файлы. Работа с нетипизированными файлами.
В языке Паскаль файл - это состоящая из некоторого числа компонентов одного типа структура данных со следующими особенностями: - число компонент файла не фиксируется (в отличие от массива) и не ограничивается сверху некоторым числом (в отличие от строк и множеств); - доступ к компонентам файла возможен только путем их последовательного перебора от начала файла (с первой компоненты); - компоненты файла создаются только процедурой вывода и доступны только процедуре ввода. В Паскале определены файлы двух видов, описываемые следующим образом:
< имя > = File Of < тип > ; < имя > = Text ; Первые называются типизированными файлами, а вторые -текстовыми.
В Турбо-Паскале описанные выше файлы называются логическими (кроме того, в системе Турбо-Паскаль есть логические файлы третьего вида - не типизированные). Основное назначение логического файла - обеспечить программе средства для обмена данными с периферийными устройствами компьютера. В связи с этом вводится понятие физического файла, как совокупности данных во внешней памяти (дискета, жесткий диск, магнитная лента и др.) Кроме того, в качестве физического файла могут использоваться и сами периферийные устройства, например, принтер). Средством установления связи между логическими и физическими файлами в Турбо-Паскале является процедура Assign.
Assign (< ф.п. >, < имя файла >); < ф.п. > - файловая переменная (переменная файлового типа), описанная в программе (имя логического файла). < имя файла > - текстовое выражение, значением которого является записанное по правилам операционной системы MS DOS имя файла (имя физического файла). Типы компонент логического и физического файла должны совпадать. Затем необходимо инициализировать файл, указав для него направление передачи данных, т.е. открыть файл для записи или чтения. Для чтения файл открывается стандартной процедурой Reset (< ф.п. >); при этом специальная переменная-указатель устанавливается на начало файла. Стандартная процедура Rewrite (< ф.п. >) открывает файл для записи, при этом файл всегда создается заново, с потерей информации в данном физическом файле, если она была туда ранее записана. Стандартная процедура Append(< ф.п. >) открывает для записи существующий текстовой файл с целью его расширения, при этом переменная-указатель ставится в конец файла. Чтение и запись происходят при помощи уже знакомых нам процедур ввода-вывода Read и Write, с тем лишь отличием, что в них необходимо указать в качестве первого параметра файловую переменную. После каждой операции переменная-указатель перемещается на одну компоненту. После завершения в программе операций по обмену данными с файлом его необходимо закрыть стандартной процедурой. Close(< ф.п. >). При работе с файлами используется функция Eof(< ф.п. >), которая возвращает значение True, если переменная-указатель стоит в конце файла, и False - в противном случае.
Пример 13. Дан файл f компоненты которого являются целыми числами. Получить в файле g все четные компоненты файла f, а в файле h все нечетные.
Program Dfile; Var f,h,g: File Of Integer; i: Integer; Begin {Установка связи между файловыми переменными и соответствующими именами файлов} Assign( f ,’Data.dat’); Assign(g , ‘Chet.dat’); Assign(h , ‘Nechet.dat’); {Открытие файлов для чтения и записи} Reset(f); Rewrite(h); Rewrite(g); While Not(Eof(f)) Do Begin Read( f, i); {чтение из файла f} If Odd(i) Then Write(h,i) {запись в файл h} Else Write(g, i) {запись в файл g} End; {Закрытие файлов} Close(f); Close(g); Close(h); End.
Пример 14. Дан текстовой файл. Получить копию файла.
Program CopyFile; Var f,g: Text; s: String; Begin {установка связи файловых переменных с именами файлов} Assign(f, ‘data1.txt’); Assign(g, ‘data2.txt’); {открытие файлов для чтения и записи} Reset(f); Rewrite(g); While Not(Eof(f)) Do Begin Readln(f,s); {чтение из файла в строку} Writeln(g,s) {запись в файл из строки} End; {закрытие файлов} Close(f); Close(g) End.
Процедуры и функции для текстовых файлов
Обращение |
Действие |
Append(f) |
Открывает файл для добавления в конец файла |
Read(f, СписокВвода) |
Считывает из файла одно или более значений в одну или более переменных |
ReadLn(f, СписокВвода) |
То же с переходом к следующей строке файла |
Write(f, СписокВывода) |
Записывает одно или несколько значений в файл, заранее открытый для вывода |
WriteLn(f, СписокВывода) |
То же с выводом маркера – признака конца строки |
SetTextBuf(f, Буфер [, Размер]) |
Назначает буфер ввода/вывода для файла (по умолчанию размер буфера – 128 байт) |
Flash(f) |
Выталкивает буфер файла вывода |
Eoln(f) |
Возвращает признак конца строки |
SeekEoln(f) |
Возвращает признак конца строки, предварительно пропустив все пробелы и символы табуляции |
SeekEof(f) |
Возвращает признак конца файла, предварительно пропустив все пробелы, символы табуляции и признаки конца строки |