
- •1. Информатика как единство науки и технологии
- •2. Цели и задачи курса "Информатика"
- •4. Информация, её виды и свойства.
- •5. Различные уровни представления информации.
- •6. Носители данных. Операции с данными.
- •7. Функции, отношения, множества.
- •8. Булева алгебра и логические схемы компьютера. Логические машины.
- •9. Основы логики: Логика высказываний, логические языки, таблица истинности.
- •10. Графы и деревья.
- •11. Обзор и история архитектуры компьютеров.
- •12. Логические элементы компьютера: вентили, триггеры, счетчики, регистры
- •14. Представление числовых данных
- •15. Системы счисления. Правила перевода чисел из одной системы счисления в другую.
- •16. Знаковые представления и представления в дополнительном коде.
- •17. Представление нечисловых данных.
- •18. Организация машины.
- •19. Устройство ввода и вывода
- •20. Устройство памяти компьютера.
- •Характеристики систем иерархической памяти
- •22. Организация основной памяти и операции.
- •23. Виртуальная память.
- •Классификация по
- •Прикладное по
- •Виды Алгоритмов
- •Свойства Алгоритмов
- •27. Концепция и свойства алгоритмов.
- •Общая концепция алгоритма
- •28. Структура данных (типы, массив, строки).
- •Операции над строками
- •Основные типы данных.
- •Определение
- •Необходимость использования типов данных
- •Базовые типы
- •Числовые типы
- •Вещественные типы
- •2.2. Битовые типы
- •Логический тип
- •29. Стратегия реализации алгоритмов.
- •30. Блок схема. Виды Блок схем.
- •Основные элементы схем алгоритма
- •31. Способы представления алгоритмов.
- •32. Алгоритмические структуры.
- •33. Основные вычислительные алгоритмы: машина Тьюринга, легко и трудно решаемые задачи.
- •Устройство машины Тьюринга
- •Описание машины Тьюринга
- •Варианты машины Тьюринга
- •34. Анализ алгоритмов.
- •Анализ трудоёмкости алгоритмов
- •35. Архитектура организации процессора. Типовые структуры операционного блока микропроцессора
- •36. Организация системы адресации и команд
- •39. Основы дискретной математики. Элементы теории множеств. Комбинаторика.
- •Математическая логика.
- •Теория алгоритмов.
- •Теория графов.
- •Алгоритмы.
- •40. Этапы решения задач на эвм.
28. Структура данных (типы, массив, строки).
Массив - такая структура данных, которая характеризуется:
фиксированным набором элементов одного и того же типа;
каждый элемент имеет уникальный набор значений индексов;
количество индексов определяют мерность массива, например, два индекса - двумерный массив, три индекса - трехмерный массив, один индекс - одномерный массив или вектор;
обращение к элементу массива выполняется по имени массива и значениям индексов для данного элемента.
Другое определение: массив - это вектор, каждый элемент которого - вектор.
Синтаксис описания массива представляется в виде:
< Имя > : Array [n1..k1] [n2..k2] .. [nn..kn] of < Тип >.
Для случая двумерного массива:
Mas2D : Array [n1..k1] [n2..k2] of < Тип >, или
Mas2D : Array [n1..k1 , n2..k2] of < Тип >
Наглядно двумерный массив можно представить в виде таблицы из (k1-n1+1) строк и (k2-n2+1) столбцов.
Строки
Строка - это линейно упорядоченная последовательность символов, принадлежащих конечному множеству символов, называемому алфавитом.
Строки обладают следующими важными свойствами:
их длина, как правило, переменна, хотя алфавит фиксирован;
обычно обращение к символам строки идет с какого-нибудь одного конца последовательности, т.е важна упорядоченность этой последовательности, а не ее индексация; в связи с этим свойством строки часто называют также цепочками;
чаще всего целью доступа к строке является на отдельный ее элемент (хотя это тоже не исключается), а некоторая цепочка символов в строке.
Говоря о строках, обычно имеют в виду текстовые строки - строки, состоящие из символов, входящих в алфавит какого-либо выбранного языка, цифр, знаков препинания и других служебных символов. Действительно, текстовая строка является наиболее универсальной формой представления любой информации: на сегодняшний день вся сумма информации, накопленной человечеством - от Ветхого Завета до нашего учебного пособия - представлена именно в виде текстовых строк. В наших дальнейших примерах этого раздела будем работать именно с текстовыми строками. Однако, следует иметь в виду, что символы, входящие в строку могут принадлежать любому алфавиту. Так, в языке PL/1, наряду с типом данных "символьная строка" - CHAR(n) - существует тип данных "битовая строка" - BIT(n). Битовые строки, составляются из 1-битовых символов, принадлежащих алфавиту: { 0, 1 }. Все строковые операции с равным успехом применимы как к символьным, так и к битовым строкам.
Кодирование символов было рассмотрено в главе 2. Отметим, что в зависимости от особенности задачи, свойств применяемого алфавита и представляемого им языка и свойств носителей информации могут применяться и другие способы кодирования символов. В современных вычислительных системах, однако, повсеместно принята кодировка всего множества символов на разрядной сетке фиксированного размера (1 байт).
Хотя строки рассматриваются в главе, посвященной полустатическим структурам данных, в тех или иных конкретных задачах изменчивость строк может варьироваться от полного ее отсутствия до практически неограниченных возможностей изменения. Ориентация на ту или иную степень изменчивости строк определяет и физическое представление их в памяти и особенности выполнения операций над ними. В большинстве языков программирования (C, PASCASL, PL/1 и др.) строки представляются именно как полустатические структуры.
В зависимости от ориентации языка программирования средства работы со строками занимают в языке более или менее значительное место. Рассмотрим три примера возможностей работы со строками.
Язык C является языком системного программирования, типы данных, с которыми работает язык C, максимально приближены к тем типам, с которыми работают машинные команды. Поскольку машинные команды не работают со строками, нет такого типа данных и в языке C. Строки в C представляются в виде массивов символов. Операции над строками могут быть выполнены как операции обработки массивов или же при помощи библиотечных (но не встроенных!) функций строковой обработки.
В языках универсального назначения обычно строковый тип является базовым в языке: STRING в PASCAL, CHAR(n) в PL/1. (В PASCAL длина строки, объявленной таким образом, может меняться от 0 до n, в PL/1 чтобы длина строки могла меняться, она должна быть объявлена с описателем VARING.) Основные операции над строками реализованы как простые операции или встроенные функции. Возможны также библиотеки, обеспечивающие расширенный набор строковых операций.