- •Оглавление
- •§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
- •Решение
§20. Вложенные циклы Пример 1
Даны натуральные числа n и k. Составить программу вычисления выражения 1k+2k+…+nk.
Решение
Для вычисления указанной суммы целесообразно организовать цикл с параметром i, в котором, во-первых, находилось бы значение очередного члена ряда (у:=ik) и, во−вторых, осуществлялось бы накопление искомой суммы путем прибавления полученного слагаемого к сумме всех предшествующих (s:=s+y).
Program Example_51;
Var n, k, у, i, s, m: Integer;
Begin
Writeln('Введите n и k ');
Readln(n,k);
s:=0;
For i:=1 To n Do
Begin
y:=1;
For m:=1 To k Do y:=y*i;
{нахождение степени k числа i}
s:=s+y;
End;
Writeln('Ответ: ',s);
End.
Для решения задачи потребовалось организовать два цикла, один из которых пришлось поместить внутрь другого. Такие конструкции называют вложенными циклами.
Пример 2
Написать программу, которая находит и выводит на печать все четырехзначные числа abcd, где а, b, с, d − различные цифры, для которых выполняется соотношение: ab-cd=a+b+c+d.
Решение
Задачу можно решать несколькими способами. Можно просто перебрать все четырехзначные числа и для каждого проверять соблюдение условий. Попробуем сократить перебор, для этого преобразуем второе условие:
аb-cd=а+b+с+d;
10a+b-(10c+d)=a+b+c+d;
9(a-c)=2(c+d);
a-c/(c+d)=2/9
Учитывая первое условие (a, b, с, d − различные цифры), получаем, что a=с+2, d=9-с и 0≤с≤7.
Program Example_52;
Var a, b, с, d: Integer;
Begin
For c:=0 To 7 Do
Begin
a:=c+2; d:=9-c;
For b:=0 To 9 Do
If (b<>c) and (b<>a) and (b<>d)
Then Write(a, b, c, d,' ');
Writeln
End;
End.
Таким образом, мы решили задачу, значительно сократив перебор.
Пример 3
Модифицировать пример 1 так, чтобы в ней вычислялась сумма 11+22+…+nn
Решение
Данная задача отличается от предыдущей тем, что показатель степени очередного слагаемого совпадает со значением ее основания, следовательно, верхняя граница внутреннего цикла (в котором вычисляется очередное слагаемое) определяется значением счетчика внешнего цикла.
Program Example_53;
Var n, у, i, s, m: Integer;
Begin
Writeln('Введите значение n');
Readln(n);
s:=0;
For i:=1 To n Do
Begin
y:=1;
For m:=1 To i Do y:=y*i;
{нахождение степени k числа i}
s:=s+y;
End;
Writeln('Ответ: ',s);
End.
Пример 4
Cтаринная задача. Cколько можно купить быков, коров и телят, если плата за быка − 10 рублей, за корову − 5 рублей, за теленка − полтинник (0,5 рубля) и на 100 рублей надо купить 100 голов скота?
Решение
Обозначим через b количество быков; k − количество коров; t − количество телят. После этого можно записать два уравнения: 10b+5k+0.5t=100 и b+k+t=100. Преобразуем их: 20b+10k+t=200 и b+k+t=100.
На 100 рублей можно купить:
• не более 10 быков, т.е. 0≤b≤10;
• не более 20 коров, т.е. 0≤k≤<20;
• не более 200 телят, т.е. 0≤t≤200. Таким образом, получаем:
Program Example_54;
Var b, k, t: Integer;
Begin
For b:=0 To 10 Do
For k:=0 To 20 Do
For t:=0 To 200 Do
If (20*b+10*k+t=200) and (b+k+t=100)
Then Writeln('быков ',b,' коров ',
k,' телят ',t);
End.
Значение переменной b изменяется 11 раз (от 0 до 10), для каждого ее значения переменная k изменяется 21 раз, а для каждого значения переменной k переменная t изменяется 201 раз. Таким образом, условие будет проверяться 11х21х201 раз. Но если известно количество быков и коров, то количество телят можно вычислить по формуле t=100-(b+k) − и цикл по переменной t исключается.
Program Example_55;
Var b, k, t: Integer;
Begin
For b:=0 To 10 Do
For k:=0 To 20 Do
Begin
t:=100-(b+k);
If (20*b+10*k+t=200) Then
Writeln('быков ',b,' коров ',
k,' телят ',t);
End;
End.
При этом решении условие проверяется 11х21 раз.