
- •Введение
- •Глава 1. Структурное программирование
- •1.1 Основные определения
- •1.2 Три основных действия
- •1.2.1 Последовательность
- •1.2.2 Выбор
- •1.2.3 Цикл
- •1.3. Структурный подход к решению задач
- •Задание
- •1.4. Организация хранения и обработки данных
- •1.4.1 Записи и списки
- •Задание
- •1.4.2 Очередь
- •Задание
- •1.4.3 Стек
- •Задание
- •1.5 Структурное программирование.
- •2. Программирование на языке паскаль
- •2.1. Краткая история эвм и языки программирования
- •Задание
- •2.2. Интегрированная среда borland pascal
- •2.2.1. Краткая характеристика. Запуск программы
- •2.1.2. Основы работы в редакторе Открытие нового окна
- •Завершение работы со средой
- •Задание
- •«Горячие» клавиши интегрированной среды
- •2.3. Структура программы
- •2.3.1.Основные положения
- •2.3.2. Понятие идентификатора
- •2.3.3. Первая программа
- •2.3.4. Описание подпрограммы (процедуры).
- •2.3.4. Строковый тип данных
- •2.3.5. Процедуры ввода и вывода данных
- •Задание
- •2.4. Программа калькулятор.
- •2.4.1. Тип целые и вещественный.
- •2.4.2. Переменные вещественного типа
- •Задание
- •2.5. Улучшенный калькулятор
- •2.5.1. Операторы выбора
- •Булевские (логические) операции
- •Операции отношения
- •Оператор if … then
- •Оператор case
- •2.5.2. Основные отличия применения операторов выбора. Перечисляемый тип. Интервальный тип.
- •Задание
- •2.6. Улучшенный каЛьКулятор (продолжение)
- •2.6.1. Оператор цикла с постусловием (проверка на ноль)
- •2.6.2. Оператор цикла с предусловием
- •2.6.3. Оператор цикла со счетчиком (параметром)
- •Задание
- •2.7. Переменные типа массив
- •2.7.1. Виды массивов
- •2.7.2.Описание массива
- •2.7.3.Нахождение максимального элемента в массиве
- •Задание
- •2.7.4. Строковая переменная (продолжение)
- •Задание
- •2.7.5. Строковая переменная как массив
- •Мама мыла раму
- •Задание
- •2.7.6. Описание функции
- •Задание
Задание
Опишите словесно алгоритм выполнения домашнего задания.
Опишите словесно алгоритм приготовления вашего любимого блюда.
Вам поручили выучить стихотворение. Словесно опишите алгоритм.
1.4. Организация хранения и обработки данных
1.4.1 Записи и списки
Компьютерные системы включают в себя 4 основных компонента:
1. Человек, который ставит задачу и получает результат.
2. Аппаратное обеспечение.
3. Данные, подлежащие обработке.
4. Программное обеспечение.
Изучение человека - область биологии, анатомии, социологии. Аппаратное обеспечение Вы изучали на уроках по курсу "информатика". Как создается программное обеспечение, мы узнаем при изучении языка программирования Pascal. Сейчас рассмотрим вопрос, как представляются данные в компьютере.
Рассмотрим небольшой пример: Ваш товарищ попросил Вас купить в школьной столовой стакан сока. Вы запомнили это, то есть сделали запись в своей памяти. Все данные в компьютере хранятся как записи.
Запись - совокупность логически взаимосвязанных данных, характеризующих тот или иной объект или явление. При обращении к данным запись рассматривается как элементарный (неделимый) объект. Иногда запись называют элементом.
Если Ваш друг попросил купить для Вас помимо сока еще и пирожок, то, запомнив это, Вы создали список, состоящий из двух записей (элементов). Практически каждый день Вы выполняете домашние задания. Задания по предметам, записанные в дневнике, это тоже список, состоящий из отдельных записей. Каждая запись - это домашнее задание по определенному предмету. Итак, если имеется несколько записей, объединенных вместе, то мы называем это списком.
Список – организация хранения упорядоченной совокупности данных, характеризующих однородные объекты, отличающиеся значениями своих признаков. ЭВМ позволяет обрабатывать данные этой совокупности и изменять ее состав и упорядоченность.
Список можно подразделять различными способами в зависимости от тех или иных особенностей организации, хранения и способа обработки записей, находящихся в списке.
Линейный список – список, состоящий из записей, которые характеризуются своим месторасположением в списке. Месторасположение записи определяется, как правило, от начала линейного списка. Обычно для линейного списка разрешается добавлять запись (элемент) между любыми двумя другими и удалять любую запись (элемент).
Односвязный список – список, в котором запись (элемент), помимо своего значения, имеет ссылку на последующую запись (элемент). Например: Предположим, что Дарибай знает только телефон Алдияра. Алдияр знает только телефон Татьяны. Татьяна знает только телефон Аскара. Аскар знает только телефон Ольги. Ольга знает только телефон Анастасии. Если Вы дадите какую-либо информацию Дарибаю, то ее смогут получить все люди по цепочке. Если информацию получил Аскар, то ее смогут получить Ольга и Анастасия. Татьяна, Алдияр и Дарибай информацию получить не смогут. Движение возможно только от начала цепочки к концу. В этом списке записью является Имя человека, а номер телефона - ссылка на следующую запись. У последней записи нет ссылок на следующую запись, так как она и есть последняя. Но, чтобы не нарушалась структура списка, обычно последняя запись ссылается на так называемую нулевую (пустую) запись. Ее принято обозначать именем nil. Посмотрите, как это выглядит графически:
Дарибай |
|
|
Алдияр |
|
|
Татьяна |
|
|
Аскар |
|
|
Ольга |
|
|
Анастасия |
|
|
|
|
|
|
|
|
|
|
||||||
Тел. А |
|
|
Тел. Т |
|
|
Тел. А |
|
|
Тел. О |
|
|
Тел. А |
|
|
Nil |
Рис.1.10
Добавление записи (элемента) в односвязный список. Предположим, что нам надо добавить в односвязный список еще одну запись с именем Сергей. Если добавление записи происходит в конец списка, то в место ссылки на пустой элемент у записи Анастасия надо записать телефон Сергея. Для добавления записи в начало списка надо к записи Сергей добавить ссылку (номер телефона) на запись Дарибай. Если мы хотим поместить запись в любом другом месте списка, например, между записями Аскар и Ольга, то у записи Аскар ссылка на запись Ольга перемещается в запись Сергей, а к записи Аскар добавляется ссылка (номер телефона) на запись Сергей.
Дарибай |
|
|
Алдияр |
|
|
Татьяна |
|
|
Аскар |
|
|
Ольга |
|
|
Анастасия |
|
|
|
|
|
|
|
|
|
|
|
|||||||
Тел. А |
|
|
Тел. Т |
|
|
Тел. А |
|
|
Тел. С |
|
|
Тел. А |
|
|
Nil |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Снргей |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Тел. О |
|
|
|
|
|
|
Рис.1.11
Удаление элемента из односвязного списка. Допустим, нам надо удалить запись из односвязного списка, например, запись Сергей. Для этого у предыдущей записи в ссылку (номер телефона) вместо телефона Сергея вновь написать телефон Ольги.
Дарибай |
|
|
Алдияр |
|
|
Татьяна |
|
|
Аскар |
|
|
|
Ольга |
|
|
Анастасия |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|||||||||||||||
Тел. А |
|
|
Тел. Т |
|
|
Тел. А |
|
|
Тел. О |
|
|
|
Тел. А |
|
|
Nil |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Сергей |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Тел. О |
|
|
|
|
|
|
Рис.1.12
Двухсвязный список – список, в котором запись (элемент) имеет ссылку как на последующую запись (элемент), так и на предыдущую. В нашем примере информация могла распространяться только в одном направлении - от Дарибая к Анастасии. Но, если Алдияр знает телефон Татьяны и Дарибая, Татьяна – Алдияра и Аскара, Аскар – Татьяны и Ольги, Ольга – Аскара и Анастасии, а Анастасия знает телефон Ольги, то информация может передаваться в двух направлениях. То есть в двухсвязном списке движение возможно в двух направлениях: от начала к концу и от конца к началу.
Nil |
|
|
Тел. Д |
|
|
Тел. А |
|
|
Тел. Т |
|
|
Тел. А |
|
|
Тел. О |
Дарибай |
|
|
Алдияр |
|
|
Татьяна |
|
|
Аскар |
|
|
Ольга |
|
|
Анастасия |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||||||
Тел. А |
|
|
Тел. Т |
|
|
Тел. А |
|
|
Тел. О |
|
|
Тел. А |
|
|
Nil |
Рис.1.13
Если линейный список имеет дополнительную связь между последней записью (элементом) и первой записью (элементом), то его называют кольцевым списком. В случае если Анастасия знает телефон Дарибая, то линейный список замыкается, и мы имеем дело с кольцевым списком.