- •Оглавление
- •§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
- •Решение
Пример 3
Составить программу нахождения суммы элементов массива.
Решение
Опишем две процедуры (формирования и вывода массива) и функцию нахождения суммы элементов. Заметим, что заполнение и вывод массива можно осуществить только поэлементно, то есть можно сначала присвоить значение первому элементу, затем второму и так далее. Аналогично обстоит дело и с выводом массива на экран мы станем выводить первый элемент, второй, третий и так до последнего. Значения элементов массива будем вводить с клавиатуры.
Program Example_89;
Const n=30; {Количество элементов массива}
Type myarray=Array[1..n] Of Integer;
Var A: myarray;
s: Integer;
{Значение этой переменной s будет равно
сумме всех элементов массива}
Procedure Init1(Var m: myarray);
Var i: Integer; {Переменная для работы с элементами
массива}
Begin
Writeln('Введите ', n, ' чисел');
For i:=1 To n Do
{Ввод массива с клавиатуры}
Readln(m[i]); {Чтение i-гo элемента}
End;
Procedure Print (m: myarray);
Var i: Integer
Begin
For i:=1 To n Do {Вывод массива}
Write(m[i]: 3);
{Вывод i-гo элемента}
Writeln;
End;
Function Summa (m: myarray): Integer;
Var i, sum: Integer;
Begin
sum:=0; {Начальное значение суммы}
For i:=1 To n Do sum:=sum+m[i];
{К уже найденной сумме прибавляем
i-й элемент}
summa:=sum;
End;
Begin
Init1(A); {Обращение к процедуре
формирования массива}
Print(A); {Вывод массива}
s:=Summa(A); {Нахождение суммы элементов}
Writeln('их сумма равна ',s);
{Вывод результата на экран}
Readln;
End.
При решении задач часто приходится заполнять массивы (присваивать значения элементам). Рассмотрим несколько способов заполнения массивов.
Первый способ заполнения одномерного массива - это заполнение с клавиатуры (этот способ был рассмотрен выше в процедуре Init1).
Второй способ − это заполнение с помощью генератора случайных чисел. Этот способ более удобен, когда в массиве много элементов, а их точные значения не слишком важны.
Для получения случайных чисел практически во всех современных языках программирования имеется стандартная функция. В языке Паскаль имеется функция Random. Формулы для расчета случайного числа x различного типа в программе приведены в таблице:
Тип величины х |
Диапазон возможных значений |
Паскаль |
Вещественный |
0≤x<1 |
x:=Random |
0≤x<A |
x:=Random*A |
|
A≤x<B |
x:=A+Random*(B-A) |
|
Целый |
0≤x≤A |
x:=Random(A+1) |
A≤x≤B |
x:=Random(B-A+1) |
При каждом новом запуске программы с использовании функции Random будут генерироваться одни и те же случайные числа. Чтобы исключить это, необходимо записать (желательно в начале программы) оператор Randomize (без параметров), инициализирующий генератор случайных чисел.
Составим программу заполнения одномерного массива с помощью генератора случайных чисел. Процедура вывода уже составлена ранее.
Program Example_90;
Const n=30; dd=51; {n - количество элементов
массива, dd используется в генераторе
случайных чисел}
Type myarray = Array [1..n] Of Integer;
Var A: myarray;
Procedure Init2 (Var m: myarray);
{Процедура заполнения (инициализации)
массива случайными числами}
Var : Integer;
Begin
For i:=1 To n Do m [i]:=-25+Random(dd);
{Функция Random выбирает случайное
число из отрезка от 0 до dd-1.
Очередному элементу массива будет
присвоена сумма выбранного случайного
числа и -25, таким образом, массив будет
заполняться случайными числами от -25
до -25+(dd-1), то есть до -26+dd}
End;
Procedure Print (m:myarray);
{процедура вывода (распечатки) массива}
…
Begin
Randomize;
{Инициализация генератора случайных чисел}
Init2(А);
{Обращение к процедуре заполнения массива}
Print(A);
{Обращение к процедуре вывода массива}
Readln;
End.
Третий способ заполнения массива − чтение значений элементов из файла. Можно заранее создать типизированный файл одномерных массивов (например, по тридцать элементов), а затем считывать из него сразу целый массив. Но мы воспользуемся текстовым файлом, так как его создавать намного удобнее. Пусть в файле записано несколько строк, а в каждой из них по 30 целых чисел. Тогда вся программа может быть такой:
Program Example_91;
Const n=30;
{Количество элементов массива}
Type myarray = Array[1..n] Of Integer;
Var A: myarray;
F: text;
Procedure Init3 (Var m:myarray);
{Процедура заполнения (инициализации)
массива}
Var i: Integer;
Begin
For i:=1 To n Do Read(f, m[i])
{Чтение из файла очередного числа}
End;
Procedure Print (m:myarray);
{Процедура вывода (распечатки) массива}
…
Begin
{Связываем файловую переменную с файлом
на диске}
Assign(F, 'путь\имя файла');
Reset(F);
{Открываем файл для чтения}
While Not EOf (F) Do