- •Лекции по 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. Толковый словарик
-
Операции с элементами массива
Теперь вы уже можете составлять несложные программки для обработки данных в массиве. Мы уже с вами находили сумму элементов массива. Давайте теперь составим программу, которая
запросит массив из 10 элементов и увеличит на единицу каждый её элемент.
Как и раньше, для ввода массива мы будем использовать цикл for. Для оптимизации программы можно сразу в этом же цикле увеличивать элементы массива. Вот как это можно сделать:
Program Povyshenie_Stipendii;
Var A : array [1..10] of integer;
i : integer;
Begin
Writeln (’Введите 10 элементов массива: ’);
For i := 1 to 10 do
begin
Readln (A[i]);
A[i] := A[i] + 1; {выполнение задания}
end;
Writeln (’После повышения получим:’);
For i := 1 to 10 do
writeln (i, ’-ый элемент равен ’, A[i]);
End.
В программе можно использовать сразу несколько массивов. В одном может храниться, например, зарплата, во втором – премия, а в третьем – общий доход. Тогда, зная значения элементов первых двух массивов, можно вычислить элементы третьего массива. Для массовости алгоритма запросим количество элементов для обработки. Тогда из всех 100 элементов массива будут задействованы только первые n элементов, где n – число обрабатываемых элементов, оно вводится с клавиатуры. В этом случае удобней описать массив таким образом:
Var A : array [1..n] of integer;
Но так делать нельзя, так как компьютер перед запуском программы должен знать сколько надо выделить ячеек памяти для хранения массива. Переменная n же принимает значение только после запуска программы. В результате все элементы массива с номерами больше n не будут задействованы в программе, а будут только зря занимать память компьютера. И с этим приходится смириться. Однако можно использовать константу.
Основная программа может быть такой:
Program Tri_Massiva;
const max_n = 100;
Var A, B, C : array [1..max_n] of integer;
i, n : integer; { Три поросёнка }
Begin
Write(’Введите число служащих: ’);
readln (n);
if n > max_n
then begin
writeln(’Это число не может быть больше ’,max_n);
halt; { не забыли этот оператор? }
end;
Writeln (’Введите зарплаты служащих: ’);
For i := 1 to n do
Readln (A[i]);
Writeln (’Введите премии служащих: ’);
For i := 1 to n do
Readln (B[i]);
For i := 1 to n do
begin
C[i] := A[i] + B[i];
Writeln (i, ’-ый служащий получит ’, C[i], ’ $’);
end;
End.
Уверен, что в этой программе вы не найдёте ничего сложного!
-
Анализ информации в массиве
Предположим, что у нас есть массив из 10 элементов:
7 30 4 15 32 6 18 41 6 40
И нам нужно найти максимальный элемент. Как бы вы сами нашли его? Одного взгляда на этот ряд чисел достаточно, чтобы сказать: это число 41. Но компьютер не может сразу взглянуть на все числа и найти нужное число. Ему приходится перебирать числа по одному. Это можно представить так: числа перед нами появляются по одному: сначала 7, потом 30, потом 4, затем 15... последним мы увидим число 40. Как из них найти максимальное?
Сначала предположим, что максимальным является первое число. Запишем где-нибудь, что 7 – это максимальное число. Когда перейдем ко второму числу, сравним его с максимальным: 30 больше чем 7? Да! Значит, теперь мы нашли новое максимальное число – 30. Продолжаем искать дальше. Сравниваем следующий элемент с максимальным, то есть 4 сравниваем с 30. 4 больше 30? Нет! Со спокойной совестью переходим к следующему числу. Как только новое число будет больше максимального, запомним его, как наибольшее число. В конце концов мы найдем ответ: максимальное число 41.
Переведём сказанное на язык Паскаль:
Max := a [1];
If a [2] > max then max := a [2];
If a [3] > max then max := a [3];
If a [4] > max then max := a [4];
И так далее, до последнего элемента.
Но это не очень удачный способ, так как мы не всегда знаем заранее, сколько элементов содержится в массиве. Поэтому лучше использовать цикл for:
Max := a [1];
For i := 2 to 10 do
If a [i] > max
then max := a [i];
Чаще бывает необходимо найти не только максимальный элемент, но и его номер. Например, если в таблице записаны стипендии студентов, то куда интереснее найти не только размер самой высокой стипендии, но и номер студента, который её получает. Как это осуществить в программе? Для этого при нахождении очередного элемента, претендующего на максимальный, надо будет запомнить не только его значение, но и его номер. На этот раз составим программу полностью:
Program Poisk_Krutyx_Studentov;
var A : array [1..10] of integer;
i, max, maxNr : integer;
begin
writeln ('Введите стипендии 10 студентов!');
for i := 1 to 10 do
readln (A [i]);
max := A [1]; { в max – значение максимального элемента, }
MaxNr := 1; { в MaxNr – номер этого элемента в массиве }
For i := 2 to 10 do
If A [i] > max
then begin
Max := A [i];
MaxNr:= i;{Запоминаем номер макс. элемента}
End
writeln ('Самый богатый студент с номером ', MaxNr);
End.
Попробуйте самостоятельно составить программу для нахождения минимального элемента массива и его номера. Что произойдёт, если в массиве будет несколько элементов с минимальными (максимальными) значениями?