- •Оглавление
- •§1. Первое знакомство с системой программирования Турбо Паскаль
- •§2. Основные элементы языка
- •§3. Команды редактора Команды управления движением курсора
- •§4. Первая программа
- •Пояснения к программе
- •Запуск программы
- •Сохранение программы
- •§5. Управление позициями и цветом вывода
- •§6. Арифметический квадрат.Абсолютная величина
- •§7. Типы данных
- •§8. Целый тип данных
- •Пример 6
- •Пример 7
- •Пример 8
- •§9. Вещественный тип данных
- •Пример 7
- •Пример 8
- •§10. Логический тип данных
- •§11. Условный оператор
- •Пример 1
- •Пример 2
- •Решение
- •§12. Оператор безусловного перехода. Раздел описания меток
- •§13. Вложенные условные операторы
- •Решение
- •Задание
- •Решение задач Задача 1
- •Задача 8
- •Задача 9
- •Задача 10
- •§14. Цикл с параметром
- •Пример 1
- •Пример 2
- •Пример 3
- •§15. Работа с окнами. Метод пошагового выполнения программ
- •§16. Решение задач с использованием цикла с параметром Задача 1
- •Решение
- •Задача 2.
- •§17. Цикл с предусловием
- •Оператор цикла с предусловием
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •§18. Цикл с постусловием
- •Пример 1
- •Решение
- •Пример 2
- •§19. Алгоритм Евклида
- •§20. Вложенные циклы Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •Пример 4
- •Решение
- •Пример 5
- •§21. Решение задач с использованием циклов с условием Задача 1
- •Решение
- •Задача 2
- •§22. Символьный тип данных
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •§23. Ограниченный тип данных
- •Var b:3..8; а не просто Vаг b:Integer;
- •Решение
- •§24. Оператор варианта (выбора)
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •Пример 4
- •§25. Перечисляемый тип данных
- •§26. Описание переменных, констант и типов. Раздел описания констант
- •Раздел описания типов
- •§27. Преобразование типов. Совместимость типов
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение.
- •§28. Процедуры
- •Описание процедуры
- •Решение
- •Begin {основная программа}
- •Пример 2
- •Решение
- •Пример 3
- •§29. Функции
- •Пример 1
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •§30. Примеры рекурсивного программирования
- •Задачи с рекурсивной формулировкой
- •Пример 3
- •Задачи, которые можно решить как частный случай обобщенной
- •Задание
- •Задачи, в которых можно использовать характеристику или свойство функции Пример
- •Решение
- •§31. Файловый тип данных Операции для работы с файлами последовательного доступа
- •§32. Обработка файлов Связь переменной файлового типа с файлом на диске
- •Чтение из файла
- •Закрытие файла
- •Признак конца файла
- •Запись в файл
- •§33. Прямой доступ к элементам файла
- •Удаление файлов. Процедура
- •Переименование файлов. Процедура
- •Пример 2
- •§34. Текстовые файлы
- •Обработка текстовых файлов
- •Пример 1
- •Решение
- •Пример 2
- •Нетипизированные файлы
- •§35. Одномерные массивы. Работа с элементами(разбор на примерах) Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •Begin {Считываем очередную строку}
- •§36. Работа с элементами массива (разбор на примерах)
- •Пример 2
- •§37. Методы работы с элементами одномерного массива
- •Создание массива
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Работа с несколькими массивами Пример
- •Решение
- •§38. Удаление элементов из одномерного массива Пример 1
- •Решение
- •Begin {Сдвиг элементов на один влево}
- •Пример 2
- •Решение
- •§39. Вставка элементов в одномерный массив
- •Вставка нескольких элементов
- •Решение
- •§40. Перестановки элементов массива
- •§41. Двухмерные массивы Описание. Работа с элементами
- •§42. Найти сумму элементов
- •Решение
- •§43.Нахождение количества элементов с данным свойством
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •§44. Работа с несколькими массивами Пример
- •Решение
- •§45. Определить, отвечает ли заданный массив некоторым требованиям Пример 1
- •Решение
- •Пример 2
- •Решение
- •§46. Изменение значений некоторых элементов, обладающих заданным
- •§47. Заполнение двухмерного массива по правилу
- •Пример 2
- •Решение
- •§48. Вставка и удаление элементов Вставка строки
- •Решение
- •Примечания
- •Удаление строки Пример
- •Решение
- •Примечания
- •§49. Перестановка элементов массива Перестановка двух элементов Пример 1
- •Решение
- •Пример 2
- •§50. Строковый тип данных
- •Операции со строками
- •Склеивание
- •Сравнение
- •Примеры
- •Пример 8
- •Пример 9
- •Пример 10
- •§51. Множественный тип данных
- •Операции над множествами
- •Примеры
- •Сравнение множеств
- •Пример 1
- •Пример 2
- •Вопросы для обсуждения
- •Пример 3
- •Вопросы для обсуждения
- •Пример 4
- •Решение
- •Пример 5
- •Решение
- •§52. Комбинированный тип данных (записи)
- •Пример 1
- •Пример 2
- •Пример 3
- •Решение
Begin {Считываем очередную строку}
Init3(А);
{Обращение к процедуре заполнения массива}
Print(A);
{Обращение к процедуре вывода}
Readln(F);
End;
Close(F); Readln;
End.
Четвертый способ − описание одномерного массива − типизированной константы:
Const
digit: array[0..9] of char=
('0', '1', '2', '3', '4', '5',
'6', '7', '8', '9');
DayOfWeek: array[0..6] of String =
('понедельник', 'вторник', 'среда',
'четверг', 'пятница', 'суббота');
Chislo: array[0..9] of byte=(0, 1, 2, 3,
4, 5, 6, 7, 8, 9).
Элемент массива может быть любого типа, кроме файлового. Напомним, что типизированные константы являются переменными, которым начальное значение присваивается в начале выполнения программы (см. §26).
§36. Работа с элементами массива (разбор на примерах)
При работе с элементами массива можно выделить несколько видов задач.
Нахождение суммы
(или произведения) элементов
Такая задача была рассмотрена выше. Часто встречаются различные модификации этой задачи, например, требуется найти сумму элементов с заданным свойством.
Пример
Найти сумму элементов, кратных заданному числу.
Решение
Изменим функцию Sum из программы Example_89. Будем суммировать не все элементы, а только те, которые удовлетворяют данному условию, то есть только те, которые делятся нацело на заданное число (остаток от деления на данное число равен 0).
Program Example_92;
Function Sum(m: myarray): Integer;
Var i, s, k: Integer;
Begin
Writeln('Введите число');
Readln(k);
s:=0; {Начальное значение суммы}
For i:=1 To n Do {Нахождение суммы}
If m[i] Mod k=0 Then s:=s+m[i];
{Если элемент кратен k, то прибавляем его
к сумме}
sum:=s;
End;
Остальную часть программы Example_89 можно оставить без изменений.
Нахождение номеров элементов,
обладающих заданным свойством
Пример
Найти номера четных элементов.
Решение
Необходимо просмотреть весь массив, и если просматриваемый элемент является четным, то вывести его номер. Опишем процедуру, которой передается данный массив и выводятся нужные номера.
Program Example_93;
Procedure Solve (m: myarray);
Var i: Integer;
Begin
For i:=1 To n Do
If m[i] Mod 2=0 Then Write(i:5);
End;
Нахождение количества элементов,
обладающих заданным свойством
Пример
Найти количество положительных и отрицательных элементов в данном массиве.
Решение
Опишем процедуру, которая имеет три параметра − массив и два счетчика, первый − для положительных элементов, второй − для отрицательных, элементы, равные нулю, учитывать не будем.
Program Example_94;
Procedure Quantity(m: myarray;
Var k1, k2: Integer);
Var i: Integer;
Begin
k1:=0; k2:=0;
For i:=1 To n Do
If m[i]>0 Then Inc(k1)
Else If m[i]<0 Then Inc(k2);
End;
Смотрите программу Example_89. В разделе описания переменных Var дописать: pol, otr: Integer;. В основной программе записать обращение к процедуре Quantity(a,pol,otr).
Есть ли в данном массиве элементы с
данным свойством, или найти первый
(последний) элемент, отвечающий
заданным условиям
Для решения задач этого типа удобнее использовать циклы с условиями и составлять функции, результат которых имеет логический тип.
Пример 1
Есть ли отрицательный элемент в массиве?
Решение
Начинаем просматривать массив с первого элемента (i=1). Пока не просмотрен последний (i<=n) и не найден отрицательный (m[i]>=0), будем переходить к следующему (inc(i)). Таким образом, мы закончим просмотр в одном из двух случаев: первый − просмотрели все элементы и не нашли отрицательного, тогда i>n, второй − нашли нужный, при этом i<=n. Опишем функцию, значение которой истина (True), если в массиве есть отрицательный элемент, и ложь (False), если его нет.
Program Example_95;
Function Controll (m: myarray): Boolean;
Var i: Integer;
Begin
i:=1;
While (i<=n) And (m[i]>=0) Do Inc(i);
Controll:=(i<=n)
End;