- •Введение
- •Выбор среды программирования
- •1. Линейные программы: арифметические операторы, стандартные функции и ввод/вывод в текстовом режиме
- •1.1. Алгоритмы
- •1.2. Переменные и их типы
- •1.3. Операторы
- •1.4. Стандартные функции
- •1.5. Структура программы
- •1.6. Ввод/вывод в текстовом режиме
- •1.7. Задачи на составление арифметических выражений
- •Контрольная работа №1
- •Задание 1: Линейные программы, арифметические операторы
- •2. Логические выражения и условный оператор
- •2.1. Переменная логического типа
- •2.2. Операторы сравнения
- •2.3. Логические операторы
- •2.4. Задачи на составление логических выражений
- •2.5. Условный оператор
- •2.6. Оформление текста программ
- •Контрольная работа №2
- •Задание 2: Составление логических выражений, условный оператор
- •3. Цикл for
- •3.1. Цикл с параметром (for)
- •4.2. Прием накопления суммы
- •4.3. Прием накопления произведения
- •4.4. Комбинация обоих приемов
- •4.5. Цикл с downto
- •4.6. Операторы break и continue
- •Контрольная работа №3
- •Задание 3. Цикл for. Приемы накопления суммы и произведения.
- •4. Вычисления с помощью рекуррентных соотношений
- •4.1. Рекуррентные соотношения: основные понятия
- •4.2. Задачи на составление рекуррентных соотношений
- •4.3. Многомерные рекуррентные соотношения
- •Контрольная работа №4
- •Контрольная работа №5
- •Задание 4. Вычисления с помощью рекуррентных соотношений
- •5. Вложенные циклы
- •5.1. Вложенные циклы: теория
- •Контрольная работа №6
- •Задание 5. Вложенные циклы
- •6. Задачи на перебор вариантов
- •6.1. Перебор вариантов: теория
- •Задание 6. Задачи на перебор вариантов
- •7. Пепременные – флаги
- •7.1. Переменные – флаги: теория
- •Задание 7. Переменные-флаги
- •8. Переменная – счетчик событий
- •8.1. Переменные – счетчики
- •Задание 8. Переменная – счетчик событий
- •9. Циклы while и repeat
- •9.1. Циклы while и repeat
- •9.2. Зацикливание
- •9.3. Цикл, управляемый меткой
- •9.4. Вычисление номера шага
- •9.5. Вычисления с заданной точностью
- •Контрольная работа №7
- •Задание 9. Циклы while и repeat
- •10. Массивы
- •10.1. Структурные типы данных
- •10.2. Массивы
- •10.3. Вычислимость индексов
- •10.4. Примеры программ, работающих с массивами
- •10.5. Сортировка массивов
- •10.6. Хороший стиль при решении задач на массивы
- •Контрольная работа №8
- •Контрольная работа №9
- •Задание 10. Массивы
- •11. Процедуры и функции
- •11.1. Простейшая процедура
- •11.2. Локальные переменные
- •11.3. Параметры процедур
- •11.4. Параметры-значения и параметры-переменные
- •11.5. Программирование сверху вниз
- •11.6. Передача массивов в качестве параметров
- •11.7. Функции
- •11.8. Опережающее описание
- •11.9. Процедурные типы
- •11.10. Пример: Интегрирование методом трапеций
- •11.11. Правильное составление заголовков процедур и функций
- •11.12. Модули
- •11.13. Хороший стиль при написании процедур и функций
- •Контрольная работа №10
- •Задание 11: Процедуры и функции
- •12. Двумерные массивы
- •12.1. Двумерные массивы: теория
- •Задание 12: Двумерные массивы
- •13. Графика в Паскале
- •13.1. Введение
- •13.2. Инициализация графического режима
8. Переменная – счетчик событий
8.1. Переменные – счетчики
Часто требуется подсчитать, сколько раз во время вычислений наступает то или иное событие (выполняется то или иное условие). Для этого вводится вспомогательная переменная, которой в начале присваивается нулевое значение, а после каждого наступления события она увеличивается на единицу.
Пример 1. Пользователь вводит 10 чисел. Определить, сколько из них являются одновременно четными и положительными.
Counter := 0; |
{Обнуляем переменную-счетчик} |
for i:=1 to 10 do |
|
begin |
|
readln(x); |
|
if (x mod 2 = 0)and(x>0) then
Counter := Counter + 1; {При выполнении условия увеличиваем на 1}
end; writeln(Counter);
Пример 2: Пользователь вводит 10 чисел. Проверить, упорядочены ли они по возрастанию.
Эту задачу мы решали в разделе, посвященном переменным флагам, с помощью логической переменой. Решим ее теперь с помощью счетчика. Последовательность будет упорядочена, если нет ситуаций, когда последующее число меньше предыдущего. Подсчитаем количество таких ситуаций, и если оно окажется нулевым, то последовательность упорядочена.
Counter := 0; readln(x);
for i := 2 to 10 do begin
x2 := x; readln(x);
if x2 > x then Counter : =Counter + 1; end;
if Counter = 0 then writeln('Последовательность упорядочена')
else
writeln('Последовательность не упорядочена');
Пример 3. Вычисление площади сложных фигур методом Монте-Карло. Метод Монте-Карло позволяет приближенно подсчитать площадь
произвольной плоской фигуры. Для этого плоскую фигуру следует поместить внутрь простой, площадь которой легко подсчитать (например, внутрь квадрата).
Затем следует случайным образом генерировать координаты точек так, чтобы они с равной вероятностью оказывались в любом месте квадрата. При этом следует подсчитать, какая доля случайных точек окажется внутри фигуры. При достаточно большом числе точек отношение количества точек, попавших внутрь фигуры, к общему количеству будет равно отношению площадей фигуры и квадрата.
Рассчитаем таким способом площадь под кривой графика
y =sin x (см. рис.) в диапазоне от 0 до π .
N := 1000; {Общее количество точек} C := 0; {Инициализируем счетчик}
for i := 1 to N do begin
{Генерируем случайные координаты точки внутри прямоугольника} x := Pi * random;
y := random;
{В случае попадания в область под кривой увеличиваем счетчик} if y < sin(x) then C := C + 1;
end;
{Подсчитываем площадь фигуры} S := Pi * C / N;
writeln(S);
Задание 8. Переменная – счетчик событий
1.Создайте программу, запрашивающую у пользователя 10 чисел. Если больше 4-х из них окажутся больше 10, выведите сообщение «Караул! Сейчас все взорвется». Иначе сообщите, сколько введенных чисел больше 10, а сколько больше 5.
2.Напишите программу, которая генерирует n случайных чисел, которые могут принимать значения в диапазоне [-1; 2] и подсчитывает, сколько среди них отрицательных.
3.С помощью метода Монте-Карло получите приближенное значение числа
π. Для этого подсчитайте площадь окружности единичного радиуса.
4.Напишите программу для подсчета числа точек с целочисленными координатами, находящихся внутри круга с центром в начале координат и радиусом 1000.