- •Лекции по Turbo Pascal 7.0
- •1 Курс, «Информатика»
- •Интегрированная среда Turbo Pascal 7.0
- •Первый шаг
- •Создание нового файла
- •Набор и редактирование текста программы
- •Клавиши перемещения курсора
- •Клавиши для редактирования текста:
- •Сохранение и открытие программ
- •Запуск программы
- •Завершение работы
- •А теперь, когда вы уже знаете, как набирать и запускать программы на компьютере, начнём изучать язык паскаль.
- •Первая программа
- •Краткая история
- •Что такое программа?
- •Зарезервированные слова
- •Переменные
- •Константы
- •Стандартные математические операции
- •В информатике, как и в математике, на ноль делить нельзя!
- •Оператор присваивания
- •Пример программы
- •Операторы ввода и вывода.
- •Оператор ввода Readln
- •Оператор вывода Write
- •Самостоятельные задания
- •Работа с цифрами
- •Выделение цифр числа
- •Конструирование числа по его цифрам
- •Обобщение
- •Самостоятельные задания
- •Условный оператор
- •Что такое условие?
- •Укороченный вариант условного оператора
- •Составной оператор
- •Составные условия
- •“Защита от дурака”
- •Вложенные условные операторы
- •Оператор выбора Case
- •Самостоятельные задания
- •Стандартные типы переменных
- •Общий обзор стандартных типов.
- •Целые типы
- •Вещественные типы
- •Способ записи вещественных чисел
- •Вывод на экран вещественных чисел
- •Точность и диапазон вещественных чисел различных типов
- •Вещественные функции
- •Линейная запись математических выражений
- •Логический тип
- •Символьные типы
- •Стандартные функции для работы со строками
- •Стандартные функции для типа char
- •Подпрограммы
- •Зачем нужны подпрограммы?
- •Процедуры
- •Аргументы процедуры
- •Результаты процедуры
- •Функции
- •Самостоятельные задания
- •Цикл For
- •Руками не трогать!
- •Нахождение суммы
- •Нахождение произведения
- •Нахождение количества
- •Цикл While ... Do
- •Цикл Repeat ... Until
- •2.7. Самостоятельные задания
- •Цикл в цикле
- •Натуральные числа
- •Делители чисел
- •Самостоятельные задания.
- •Простые числа
- •Самостоятельные задания.
- •Наибольший общий делитель двух чисел.
- •Самостоятельные задания.
- •Наименьшее общее кратное двух чисел
- •Самостоятельные задания.
- •Массивы
- •Определение и примеры
- •Операции с элементами массива
- •Анализ информации в массиве
- •Рекуррентные соотношения
- •Самостоятельное задание
- •Последовательность Фибоначчи
- •Другие рекуррентные последовательности
- •Оптимизация программ
- •Задача про интеллигентного студента.
- •Самостоятельные задания
- •Оформление программ
- •Понятие модуля
- •Управление цветом
- •Управление звуком
- •Опрос клавиатуры
- •Управление курсором.
- •Дополнительные задачи и вопросы
- •Теоретические вопросы
- •Практические задачи
- •Условия
- •Ряды и рекуррентные последовательности
- •Просмотр всех команд меню
- •Команды меню File
- •Команды меню Edit
- •Команды меню Search
- •Команды меню Run
- •Команды меню Compile
- •Команды меню Debug
- •Команды меню Options
- •Команды меню Window
- •Команды меню Help
- •Синтаксические ошибки
- •Ошибки выполнения
- •Логические ошибки
- •Средства отладки
- •Пошаговый режим работы программы
- •Просмотр/изменение переменных
- •Окно Watch
- •1. Теоретическая часть
- •1.1. Понятие алгоритма и его свойства.
- •1.2. Культура программирования
- •1.3. Устройство компьютера и его компоненты.
- •1.4. Информация
- •1.5. Логика
- •1.6. Системы счисления
- •1.7. Арифметические действия с двоичными числами
- •1.8. Информационные взаимодействия – коммуникации
- •1.9. Информационная революция
- •1.10. Компьютеры и информационное общество.
- •1.11. Польза и опасности компьютеризации.
- •1.12. Киберфобия.
- •1.13. Компьютеры и будущее
- •1.14. Понятие информационного моделирования.
- •2. Толковый словарик
-
Самостоятельные задания.
-
Переделайте процедуру так, чтобы она находила НОД трёх чисел.
-
Если в цикле перебирать числа не в возрастающем порядке, а в убывающем, то результатом будет первое найденное число (объясните почему). В этом случае процедура будет работать быстрее. Переделайте программу, чтобы она искала делители в убывающем порядке!
-
Наименьшее общее кратное двух чисел
НОК двух чисел А и В – минимальное натуральное число, которое делится без остатка на А и на В. Исходя из определения можно искать это число следующим образом. Начиная с числа А (или с В) перебирать натуральные числа до тех пор, пока не найдем такое, которое будет без остатка делиться и на А, и на В. Здесь удобней будет использовать цикл While. Цикл For не подходит, потому что мы не знаем заранее, сколько чисел нам придётся перебрать, пока найдём НОК.
В заголовке цикла While надо записать такое условие, которое будет верно до тех пор, пока мы не найдём нужное число. То есть пока проверяемое число не будет делиться и на А, и на В без остатка.
Процедура поиска будет такой:
Procedure NOK (a, b : integer; var rez : integer);
Begin
rez := a;
While not ((rez mod a = 0) and (rez mod b = 0)) do
rez := rez + 1; { Увеличиваем i, пока оно не будет делится и на а, и на b }
rez := i
End;
-
Самостоятельные задания.
-
Напишите программу для поиска НОД с использованием этой процедуры.
-
Как известно, НОК двух чисел всегда больше или равен большему из этих чисел. Переделайте процедуру так, чтобы она начинала искать с наибольшего числа.
-
Имеет место следующая формула: НОК (А, В) = (А*В) / НОД (А, В)
Составьте программу для нахождения НОК с использованием этой формулы и процедурой для нахождения НОД.
-
Массивы
-
Определение и примеры
Очень часто приходится иметь дело с большим объёмом однотипных данных. Например, изменения курсов валют за последние 3 года, или температура внутри холодильной установки, которая измеряется каждый час и т.п. Все эти данные надо уметь не только хранить, но и обрабатывать, например, проводить статистические исследования.
Рассмотрим такой пример: список учеников в группе. Это множество данных строчного типа. Их удобно записать в виде таблицы, например:
№ |
Имя |
1 |
Катя |
2 |
Инга |
3 |
Оля |
4 |
Илона |
5 |
Антон |
6 |
Владимир |
Эта таблица состоит из 6 строк. В каждой строке указан номер строки и соответствующее этому номеру имя. То есть, по номеру строки можно однозначно найти конкретное имя. Например, номеру 4 соответствует имя Илона. Получается, что мы можем говорить об имени, не называя его конкретно, а только говоря, под каким номером оно записано.
Таблицы бывают одномерными, как только что представленная и многомерными. Основное их различие – количество чисел-координат для указания элемента. В только что приведённом примере для указания имени нужно назвать только номер строки (например, номеру 3 соответствует имя Оля). Если же мы допишем ещё один столбик, чтобы указать список учащихся из двух групп,
№ |
Группа Евгения |
Группа Леонарда |
1 |
Катя |
Мантас |
2 |
Инга |
Марта |
3 |
Оля |
Александр |
4 |
Илона |
Олеся |
5 |
Антон |
Бригитта |
6 |
Владимир |
Михаил |
то для доступа к какому-нибудь имени надо указать, во-первых, номер строки, а во-вторых, имя учителя. Это уже многомерная таблица, точнее двухмерная. Школьный журнал будет примером 3-мерной таблицы, так как там для указания оценки необходимо выбрать название предмета, дату и имя ученика – три координаты!
Может быть вы помните, как в начальных классах на природоведении вы вели дневник природы. Каждый день нужно было отмечать, какая была температура, облачность, были ли осадки, куда дул ветер. Таблица какого типа это была? Подумайте, прежде чем читать дальше! (Ответ найдете в конце главы).
Итак, таблицы используют для хранения каких-то однотипных данных, будь то список учеников, цены в магазине, каталог фирм или оценки по математике. Для хранения этих данных удобно использовать компьютер, так как он позволяет не только хранить данные, но и обрабатывать их с приличной скоростью. Таблицу в компьютерной реализации принято называть массивом. В этом случае все элементы массива должны содержать однотипные элементы.
Как уже говорилось, массивы могут быть многомерными. От размерности массива зависит количество координат, которые надо указывать для доступа к элементу. В информатике мы пока будем рассматривать только одномерные массивы.
Чтобы начать работу с массивом, необходимо его описать. Описание массива располагается там, где описываются все переменные в таком виде:
Var A : array [1..10] of integer;
Этой строкой мы описали массив (array) А, состоящий из 10 ([1..10]) элементов. Каждый элемент – это целое (integer) число. Можно сказать, что мы определили сразу 10 переменных целого типа. Чтобы определить массив из вещественных чисел, надо вместо integer написать real.
Для доступа к элементам массива используются квадратные скобки, в которых записывают номер необходимого элемента:
A[1], A[2], A[5], A[10]
Давайте составим простенькую программу для работы с массивом. Пусть это будет программа, которая задаёт массив из трех целых элементов и находит их сумму.
Program Summa_Elementov_Massiva;
Var A : array [1..3] of integer;
S : integer;
Begin
Writeln (’Введите элементы массива: ’);
Readln (A[1], A[2], A[3]);
S := A[1] + A[2] + A[3];
Writeln (’Сумма элементов массива = ’, S);
End.
Эта программа имеет недостаток. Если вдруг придётся работать не с 3 элементами, а с 10, то эту программу придется подвергнуть значительной модификации. Если же мы захотим ввести массив из N элементов, то общая схема решения вообще окажется непригодной.
Поэтому все программы, которые мы составляем, должны обладать свойством массовости, то есть работать с меняющимися данными. Поэтому должна существовать возможность обращения не к конкретному элементу, а к элементу, номер которого записан в виде переменной. Это делается очень просто: в скобках вместо числа-константы записывается имя переменной (или даже выражение). Например:
A[m], A[i], A[2*i+1], A[A[1]]
Для того, чтобы обрабатывать поочерёдно несколько элементов, надо использовать цикл. Вот как изменится программа:
Program Summa_Elementov_Massiva;
Var A : array [1..3] of integer;
S, i : integer;
Begin
Writeln (’Введите элементы массива: ’);
For i := 1 to 3 do
Readln (A[i]);
S := 0; { Обнуляем сумму }
For i := 1 to 3 do
S := S + A[i];
Writeln (’Сумма элементов массива = ’, S);
End.
Можно еще улучшить эту программу, объединив оба цикла в один, но мы этого делать не будем, так как тогда вообще отпадёт необходимость в использовании массива: сумму чисел можно подсчитать и так. Но дальше вы увидете, что использование массивов иногда облегчает решение задач, а чаще без них просто невозможно составить программу.
Ответ на задание: Это многомерная, точнее двумерная таблица. Но в ней хранятся неоднотипные данные, а в массивах (то есть в компьютерной реализации таблиц) могут храниться только данные одного типа. Как, например, вы запишите, что сегодня было облачно и шёл дождь, используя целые числа8?