
- •Языки и системы программирования Алгоритмы
- •Языки программирования
- •Область применения языков программирования
- •Сложность и эффективность языков программирования
- •Трансляторы
- •Характеристика с/п Pascal abc
- •Используемые в с/п Pascal abc «горячие клавиши»
- •Структура программы на Паскале
- •Сообщения об ошибках. Отладка программы.
- •Система подсказок.
- •Команды вывода данных на экран
- •Константы
- •Переменные
- •Арифметические выражения. Приоритет арифметических операций
- •Стандартные арифметические функции
- •Процедуры инкремента и декремента
- •Примеры решения линейных задач
- •Ввод данных с клавиатуры
- •Примеры решения диалоговых задач
- •Линейные задачи для самостоятельной работы
- •Лаб. 1. Линеаризовать выражение:
- •Лаб. 2. Линейные диалоговые задачи (на одно действие)
- •Лаб. 3. Диалоговые задачи на несколько действий
- •Ветвление
- •Логические выражения
- •Вложенное ветвление
- •Лаб. 4. Задачи на ветвление:
- •Лаб. 5. Задачи на ветвление с вычислениями:
- •Выбор варианта
- •Лаб. 6. Задачи на выбор варианта:
- •Как выбрать цикл?
- •Экстренные события в теле цикла
- •Лаб. 7. Числовые задачи с циклом For
- •Лаб. 8. Сюжетные задачи с циклом For
- •Лаб. 9. Задачи с условными циклами
- •Библиотека crt
- •Библиотека sounds
- •Лаб. 10. Задачи с использованием циклов и библиотек crt и sounds
- •Порядковые типы данных
- •Перечислимый тип данных
- •Символьный тип данных
- •Ограниченный (интервальный) тип данных
- •Лаб. 11. Задачи со строками
- •Массивы
- •Решение задач с массивами
- •Поиск минимального (максимального) элемента массива
- •Сортировка массива.
- •Двумерные и многомерные массивы
- •Лаб. 12. Задачи с одномерными массивами
- •Лаб. 13. Задачи с двумерными массивами
- •Множества
- •Файлы данных
- •Записи и базы данных
- •Библиотека GraphAbc
- •Действия с графическим окном:
- •Точечная графика
- •Графические примитивы
- •Текст в графическом окне
- •Использование готовых точечных рисунков
- •Вспомогательные алгоритмы
- •Рекурсия
- •Событийное программирование
- •Использование таймеров
- •Использование сторонней библиотеки ukeyb
Как выбрать цикл?
Если в задаче повторяются одинаковые (или похожие) действия, нужно использовать цикл. Но какие из 3-х видов цикла в каких задачах лучше применить? Для выбора цикла рассуждайте так:
Так как чаще всего встречается цикл FOR, в первую очередь попробуем его. FOR годится, если число повторов точно известно до начала цикла. Если число повторов заранее неизвестно, а проясняется только по ходу выполнения цикла, используется один из условных циклов: WHILE или REPEAT.
Если возможно придумать такие исходные данные к задаче, при которых тело цикла не должно выполниться ни разу, то нужно использовать WHILE.
Если первый раз тело цикла обязательно требуется выполнить при любых условиях, и только в ходе выполнения вводятся или вычисляются данные, позволяющие принять решение об окончании цикла, то нужно использовать REPEAT.
Во всех остальных случаях WHILE или REPEAT являются одинаково пригодными.
Экстренные события в теле цикла
И
ногда,
при выполнении в теле цикла какого-либо
условия, нужно экстренно прервать цикл,
не доводя до конца очередной повтор. В
таких случаях используется команда
break.
Иногда, при выполнении в теле цикла какого-либо условия, нужно экстренно перейти к следующему повтору, не доводя до конца очередной повтор. В таких случаях используется команда continue. (Если это происходит в цикле FOR, то счётчик получает при этом следующее значение.)
Команды break и continue могут применяться в любом из видов циклов. Вне цикла их использование запрещено.
В некоторых задачах используется вложенный цикл (цикл в цикле). Например, каждый месяц в течение года больному нужно сделать десять уколов. Здесь внешний цикл (For) считает месяцы, а внутренний (тоже For) считает уколы в каждом месяце.
При выходе с помощью break из вложенного цикла мы попадаем во внешний (аналогично тому, как это происходит по окончании внутреннего цикла). А если нужно при каком-либо событии выйти сразу из двух или более вложенных циклов? Это можно сделать так:
В разделе описаний после слова Label указать метку (любое слово кроме служебных, составленное по тем же правилам, что и имена переменных).
В том месте (после конца последнего из циклов), куда нужно выскочить, поставить эту метку с левого края экрана и после неё поставить двоеточие.
В том месте (во внутреннем цикле), откуда нужно выскочить при выполнении какого-либо условия, поставить команду goto и после неё эту метку.
М
ногие
специалисты (в том числе и автор Паскаля)
не рекомендуют использовать команду
goto,
считая её потенциально опасной (источником
логических ошибок). Поэтому в некоторых
реализациях Паскаля (в том числе и Pascal
ABC)
эта команда отсутствует. Вместо неё
можно завести специальную «флаговую»
переменную, которая приобретает
определённое значение перед прерыванием
внутреннего цикла. Тогда во внешнем
цикле можно проверить эту переменную,
и если «флаг установлен», прервать и
внешний цикл.
Лаб. 7. Числовые задачи с циклом For
Распечатать синусы всех углов от a° до b° с промежутком 0,01°. Результат представить с 4 десятичными знаками. Все целые значения градусов выделить жирным шрифтом.
Сколько из целых чисел от a до b попадают в промежуток от e до d?
Вводят число k. Напечатать 10 чисел до k и 10 после k.
Среди всех трёхзначных чисел напечатать те, у которых одна из цифр равна сумме двух других.
Напечатать в одну строку все числа от 1 до 200, пропуская числа, оканчивающиеся нулём.
Найти сумму всех нечётных чисел от a до b.
Напечатать таблицу квадратов и кубов первых a натуральных чисел.
Последовательно вводятся с клавиатуры n целых чисел. Найти суммы всех отрицательных и всех положительных и определить, какая из них по модулю больше.
Найти произведение 5 введённых с клавиатуры целых чисел. Числа, кратные 11, пропускать.
Напечатать в одну строку все числа от a до b, пропуская числа, кратные 5.
Ввести с клавиатуры 10 целых чисел и распечатать их в одну строку. При печати пропускать числа, большие 99.
Напечатать все двузначные числа, сумма цифр которых делится на 7. Посчитать их количество.
Ввести a и b (<100) и напечатать все числа от 1 до 100, кроме кратных a или b.
Найти, сколько чисел от a до b делятся на 7 или 9 (но не на 7 и 9 одновременно).
C клавиатуры вводятся 10 целых чисел. Определить, каких чисел больше: положительных или отрицательных.
Напечатать в одну строку все числа от a до b, дважды повторяя числа, кратные 3 или 7.
Найти двухзначные числа, равные сумме куба числа единиц и квадрата числа десятков.
Найти сумму всех чисел от a до b, кратных 3, но не кратных 7.
Ввести x с клавиатуры и определить, сколько чисел в промежутке от 1 до 100 делятся без остатка на x, x-1 или x+1.
Ввести 5 двузначных чисел и напечатать для каждого из них перевёртыш (в котором цифры поменялись местами).