- •Практикум по Турбо Паскалю
- •Первые занятия Первое знакомство с системой программирования Турбо Паскаль
- •Команды редактора
- •Задания
- •Режим помощи
- •Первая программа
- •Запуск программы
- •Сохранение программы
- •Выход из системы программирования Турбо Паскаль
- •Простейшие линейные программы
- •Арифметический квадрат. Абсолютная величина
- •Целый и логический типы данных Условный оператор
- •Логический тип данных
- •Условный оператор
- •Вложенные операторы условия
- •Целый тип данных. Цикл с параметром
- •Цикл с параметром (разбор на примере)
- •Работа с окнами. Метод пошагового выполнения программ
- •Работа с окнами
- •Решение задач с использованием цикла с параметром
- •Вопросы для обсуждения
- •Трассировка примера
- •Цикл с постусловием
- •Алгоритм Евклида
- •Вложенные циклы
- •Решение задач с использованием циклов с условием
- •Простые типы данных
- •Задания
- •Решение задач
- •Вещественный тип данных
- •Задание
- •Решение задач
- •Ограниченный, перечисляемый типы данных. Оператор варианта
- •Ограниченный тип данных
- •Оператор варианта
- •Перечисляемый тип данных
- •Решение задач
- •Описание переменных, констант и типов Раздел описания констант
- •Раздел описания переменных
- •Раздел описания типов
- •Решение задач
- •Преобразование типов. Совместимость типов
- •Задания
- •Решение задач
- •Решение задач
- •Контрольные работы Контрольная работа №1
- •Контрольная работа №2
- •Основы Паскаля
- •X y22m размер gamma alfa r15
- •Процедуры и функции
- •Описание процедур и функций
- •Файловый тип
- •Описание файлового типа
- •Подпрограммы
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Write
- •Процедура Close
- •Функция FileSize
- •Функция FilePos
- •Текстовые файлы
- •Описание текстового файла
- •Консоль
- •Устройства
- •Соответствие текстовых файлов и логических устройств
- •Операции над текстовыми файлами
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Append
- •Процедура Close
- •Функция Eof
- •Функция SeekEof
- •Блочные файлы Описание типа блочного файла
- •Процедура BlockRead
- •Процедура BlockWrite
- •Операции ввода-вывода
- •Регулярные типы данных Одномерные массивы. Работа с элементами
- •Способы задания одномерных массивов
- •Работа с элементами массива (разбор на примерах)
- •Методы работы с элементами одномерного массива Изменение значения некоторых элементов
- •Создание массива
- •Работа с несколькими массивами
- •Удаление элементов из одномерного массива Удаление элемента
- •Вставка элементов в одномерный массив Вставка одного элемента
- •Вставка нескольких элементов
- •Перестановка элементов массива
- •Перестановка части массива
- •Найти сумму элементов
- •Работа с несколькими массивами
- •Двумерный массив. Работа с элементами Изменение значений некоторых элементов, удовлетворяющих заданному свойству
- •Заполнение двумерного массива по правилу.
- •Вставка и удаление элементов двумерного массива
- •Перестановка элементов массива
- •Комбинированный тип данных (записи)
Решение задач с использованием циклов с условием
Повторение
Выписать фрагмент программы для решения указанной ниже задачи и обосновать, почему был выбран тот или иной вариант оператора цикла:
вычислить факториал некоторого числа p;
факториал некоторого числа равен p, найдите это число;
определить, является ли заданное число степенью числа 3;
вычислить y = 1! + 2! + 3! +...+ n!
вычислить xn, где n - целое положительное число;
вычислить значения x1, x2, x3,..., xn.
В каких случаях используется конструкция вложенных циклов?
Пример
Написать программу, которая находит и выводит на печать все четырёхзначные a b c d, числа a, b, c, d - различные цифры, для которых выполняется: ab - cd = a + b + c + d.
Решение
Задачу можно решать несколькими способами. Одним из возможных способов является перебор всех четырёхзначных чисел и проверка для каждого из них выполнения условий. Попробуем сократить перебор, для этого преобразуем второе условие:
10a + b -(10c + d) = a + b + c + d;
9(a - c) = 2(c + d);
a - c / c + d = 2 / 9
Проанализировав первое условие, получаем, что a = c + 2, d = 9 - c и 0<=c<=7.
Program Example_17; Var a,b,c,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.
Таким образом, мы решили задачу, значительно сократив перебор.
Пример:
Если мы сложим все цифры какого-либо числа, затем все цифры найденной суммы и будем повторять много раз, мы, наконец, получим однозначное число (цифру), называемое цифровым корнем данного числа. Например, цифровой корень числа 34697 равен 2 (3 + 4 + 6 + 9 + 7 = 29; 2 + 9 = 11; 1 + 1 = 2). Составим программу для нахождения цифрового корня натурального числа.
Решение
Сколько переменных потребуется для решения задачи, какого типа будут эти переменные?
Всегда ли необходимо вычислять сумму цифр числа (а если введенное число является однозначным)?
Вычислим сумму цифр числа: для этого будем выделять цифры числа и увеличивать текущую сумму. Какую конструкцию необходимо использовать для этого?
В результате выполнения цикла мы получили число. Является ли оно однозначным (корнем данного числа)? Какую конструкцию необходимо использовать для нахождения корня числа? Какую конструкцию необходимо использовать для нахождения корня числа? Какие действия должна выполнять программа внутри этой конструкции?
Программа, вычисляющая корень данного числа, может выглядеть следующим образом:
Program Example_18; Var n, k, s : Longint; Begin Writeln('Введите число'); Readln(n); s:=n; While s>9 Do Begin k:=s; s:=0; Repeat s:=s+k Mod 10; k:=k Div 10; Until k=0; End; Writeln('цифровой корень числа ',n,' равен ',s); End.
Решение задач
Найти все трёхзначные числа, удовлетворяющие каждому из условий:
любые две цифры различны;
число равно среднему арифметическому всех трёхзначных чисел (включая данное), имеющих тот же цифровой состав.
Стороны прямоугольника заданы натуральными числами M и N. Составить программу, которая будет находить, на сколько квадратов, стороны которых выражены натуральными числами, можно разрезать данный прямоугольник, если от него каждый раз отрезается квадрат максимально большой площади.
Дано натуральное число n>=2. Составить программу разложения этого числа на простые множители:
простой множитель p должен быть выведен k раз, где k - натуральное число, такое, что n делится на pk и не делится на pk+1;
каждый простой множитель должен быть выведен ровно один раз.
Даны натуральные числа N и p. Получить все натуральные числа, меньшие N и взаимно простые с p.
Даны целые числа p и q. Получить все делители числа q, взаимно простые с p.
Сумма квадратов длин катетов a и b прямоугольного треугольника равна квадрату длины гипотенузы c: a2 + b2 = c2. Тройка натуральных чисел, удовлетворяющих этому равенству, называется Пифагоровыми числами. Составить программу нахождения основных троек Пифагоровых чисел, используя следующие формулы:
a = u*v; b = u2 - v2 / 2; c = u2 + v2 / 2,
где u и v - взаимно простые нечётные натуральные числа и u>v.
Найти наименьшее натуральное число N представимое двумя различными способами в виде суммы кубов двух натуральных чисел x3и y3 (x>=y).
Даны натуральные числа m, n1, n2,...,nm (m>=2). Вычислить НОД(n1, n2,...,nm), воспользовавшись соотношением НОД(n1, n2,...,nm) = НОД(НОД(n1, n2,..., nm-1), nm) и алгоритмом Евклида.
Найти все простые несократимые дроби, заключённые между 0 и 1, знаменатели которых не привышают 7 (дробь задаётся двумя натуральными числами - числителем и знаменателем).
