
- •Часть I. Этапы решения задачи на компьютере 7
- •Часть II. Задачи. Алгоритмизация и программирование 15
- •Часть III. Теоретические положения и примеры программ 188
- •Введение
- •Часть I. Этапы решения задачи на компьютере
- •1.1 Постановка и формализация условий задачи
- •1.2 Алгоритмизация задачи
- •1.2.1 Интерпретация объектов
- •1.2.2 Вычислительная схема
- •1.2.3 Вычислительная схема решаемой задачи
- •1.2.4 Составление блок-схемы
- •1.2.5 Трассировка
- •1.3 Составление программы на языке Паскаль
- •1.4 Подготовка текста программы на машинном носителе
- •1.5 Трансляция (компиляция) программы
- •1.6 Компоновка (редактирование связей)
- •1.7 Запуск программы на исполнение
- •1.8 Анализ результатов
- •Часть II. Задачи. Алгоритмизация и программирование классических вычислительных процессов
- •1 Линейный вычислительный процесс
- •1.1 Программирование формул
- •1.2 Формализация и алгоритмизация задачи
- •2 Разветвляющийся вычислительный процесс
- •2.1 Программирование формул
- •2.2 Формализация и алгоритмизация графических задач
- •2 .3 Параметрические задачи
- •3 Циклические вычислительные процессы
- •3.1 Арифметический цикл
- •Вычисление произведения n сомножителей.
- •Табулирование функции на конечном отрезке.
- •3.2 Итерационный цикл
- •Вычисление предела последовательности с заданной точностью.
- •Вычисление суммы бесконечного ряда с заданной точностью.
- •3.3 Арифметические циклы с рекуррентными соотношениями
- •3.4 Итерационные циклы с рекуррентными соотношениями
- •3.5 Двойной вложенный цикл
- •4. Пользовательские алгебраические функции
- •4.1 Применение функции в линейных и разветвляющихся вычислительных процессах
- •4.2 Использование функции в циклических процессах
- •4.3 Табуляция функции
- •5 Одномерные числовые массивы
- •5.1 Работа с компонентами массива
- •5.2 Работа с векторами
- •6 Двумерные числовые массивы
- •6.1 Работа с элементами массива
- •6.2 Работа с векторами и матрицами
- •6.3 Использование процедур и функций для работы с массивами
- •7 Работа со строками
- •7.1 Анализ и преобразование текста строки
- •7.2 Работа со строковыми функциями и процедурами
- •8 Работа со списками
- •8.1 Стеки
- •8.2 Очереди
- •8.3 Бинарные деревья
- •9 Работа с текстовыми файлами
- •10 Работа с файлами записей
- •11 Компьютерная графика
- •12 Анимация изображений
- •Часть III. Теоретические положения и примеры программ
- •1 Вычисление определителя квадратной матрицы
- •2.2 Использование записей для описания таблиц
- •Работа с полями записи
- •Использование оператора with … do
- •Ввод данных в массив записей с клавиатуры
- •2.3 Вложение записей
- •Присвоение значений полям вложенных записей
- •3 Файлы записей
- •3.1 Структура файла
- •3.2 Встроенные процедуры и функции обработки файлов
- •3.3 Организация последовательного доступа к записям файла
- •3.4 Организация прямого доступа к компонентам файла
- •3.5 Создание индексного файла
- •3.6 Работа с файлом произвольного доступа
- •Просмотр файла
- •Редактирование записей
- •Изменение структуры основного файла
- •Использование клавиш для управления программой
- •Удаление записи из файла
- •Добавление записи в файл
- •3.7 Информационное взаимодействие текстовых файлов и файлов записей
- •Экспорт данных. Копирование информации из файла записей в текстовый файл
- •Импорт данных. Копирование информации из текстового файла в файл записей
- •3.8 Запросы к файлам записей
- •Запрос с группировкой
- •4 Графическое программирование
- •4.1 Управление видеорежимом
- •Инициализация видеорежима. Процедура InitGraph
- •Закрытие видеорежима. Процедура CloseGraph
- •Создание графического окна. Процедура SetViewPort
- •Закрытие графического окна. Процедура ClearDevice
- •4.2 Построение графических фигур
- •Построение прямой линии. Процедуры SetColor, SetLineStyle, Line, LineRel, LineTo
- •Построение прямоугольника. Процедуры Rectangle и Bar
- •Построение окружности. Процедура Circle
- •Построение дуги окружности. Процедура Arc
- •Построение эллипса. Процедуры Ellipse, FillEllipse
- •Построение сектора. Процедуры PieSlice, Sector
- •4.3 Корректировка изображения Процедуры GetAspectRatio, SetAspectRatio
- •4.4 Создание пользовательского шаблона заливки
- •Заливка замкнутой области. Процедура FloodFill
- •Построение и окраска произвольного рисунка на примере замка
- •Построение и заливка правильного многоугольника
- •4.5 Работа с текстом
- •Выбор стандартного шрифта. Процедура SetTextStyle
- •Коррекция стандартного шрифта. Процедура SetUserCharSize
- •Вывод числовых величин на экран
- •5 Анимация изображений
- •5.1 Дублирования спрайта цветом фона
- •5.2 Манипулирование фрагментами изображения
- •5.3 Использование страниц видеопамяти
- •6 Сообщения об ошибках
- •6.1 Ошибки стадии компиляции
- •6.2 Ошибки стадии выполнения
- •Ошибки ввода-вывода
- •Фатальные ошибки
- •Библиографический список
Табулирование функции на конечном отрезке.
Затабулируем значения функции
на отрезке
в
в точках.
Разобьем отрезок
на N равных частей точками
,
где
,
при этом
,
,
.
Для табулирования значений функции
необходимо организовать цикл перебора
точек
отрезка
,
где i изменяется от 0 до N с шагом
1, и в каждой точке надо вычислить и
вывести значение функции
.
Заполним таблицу имен объектов.
Имя объекта в задаче |
Имя объекта в блок-схеме |
Тип объекта |
Примечания |
i |
I |
Целая переменная |
счетчик цикла |
a |
A |
Вещественная переменная |
начало отрезка |
b |
B |
Вещественная переменная |
конец отрезка |
N |
N |
Целая переменная |
число отрезков дел. |
h |
H |
Вещественная переменная |
длина отрезков дел. |
xi |
XI |
Вещественная переменная |
точки деления |
yi |
YI |
Вещественная переменная |
значения функции |
Схема алгоритма по шагам запишется следующим образом:
Ш1. Ввод A,B,N.
Ш2. H присвоить (B-A)/N.
Ш3. I присвоить 0.
Ш4. Если I<=N, то перейти на Ш6.
Ш5. Конец.
Ш6. XI присвоить A+H*I.
Ш7. YI присвоить SIN(XI)*XI.
Ш8. Вывод XI,YI.
Ш9. I присвоить I+1.
Ш10.Перейти на Ш4.
Блок-схема этого алгоритма приведена на рис.2.8.
Рис.2.8 Блок-схема алгоритма табуляции функции
Поясним работу алгоритма таблицей трассировки для N=3, A=0, B=3.
№ действия |
№оператора |
|
1 |
1 |
Ввод
|
2 |
2 |
|
3 |
3 |
|
4 |
4 |
0 3, Да |
5 |
6 |
|
6 |
7 |
|
7 |
8 |
Вывод
|
8 |
9 |
|
9 |
10 |
переход на 4 |
10 |
4 |
1 3, да |
11 |
6 |
|
12 |
7 |
|
13 |
8 |
Вывод
|
14 |
9 |
|
15 |
10 |
переход на 4 |
16 |
4 |
2 3, да |
17 |
6 |
|
18 |
7 |
|
19 |
8 |
Вывод
|
20 |
9 |
|
21 |
10 |
переход на 4 |
22 |
4 |
3 3, да |
23 |
6 |
|
24 |
7 |
|
25 |
8 |
Вывод
|
26 |
9 |
|
27 |
10 |
переход на 4 |
28 |
4 |
4 3, нет |
29 |
5 |
Конец |
В результате программирования должна получиться следующая программа:
PROGRAM TABUL;
VAR I, N: INTEGER;
A,B,H,XI,YI: REAL;
BEGIN
WRITELN('ВВЕДИ ЗНАЧЕНИЕ A,B,N');
READLN(A,B,N);
H:=(B-A)/N;
FOR I:=0 TO N DO
BEGIN
XI:=A+I*H;
YI:=SIN(XI)*XI;
WRITELN('XI=',XI:10:4, ' YI=',YI:10:4);
END;
END.
Для всех заданий этого раздела следует разработать алгоритм и программу.
По введенным с клавиатуры значениям X, m вычислить S:
По введенным с клавиатуры значениям X и m вычислить P:
По введенным с клавиатуры значениям A, B, N, M и X вычислить S:
По введенным с клавиатуры значениям A, B, n и X вычислить S:
По введенным с клавиатуры значениям A, B, N, M и X вычислить S:
Вычислить сумму S значений функции Y = f(x):
.
Вычислить сумму S значений функции Y = f(x):
По введенным с клавиатуры значениям X вычислить произведение S:
Для заданного с клавиатуры значения N найти (2·N)!!
Для заданного с клавиатуры значения N найти (2·N+1)!!
Найти сумму всех целых чисел, кратных 5, из отрезка [A, B].
Найти произведение всех целых чисел, кратных 7, из отрезка [A, B].
Найти сумму всех целых чисел, дающих при делении на 5 в остатке 3, из отрезка [A, B].
Найти произведение всех целых чисел, дающих при делении на 7 в остатке 4, из отрезка [A, B].
Найти сумму квадратов всех целых чисел, дающих при делении на 5 в остатке 2, из отрезка [A, B].
Найти сумму кубов всех целых чисел, дающих при делении на 7 в остатке 5, из отрезка [A, B].
Найти сумму логарифмов всех целых чисел кратных 6 из отрезка [A, B].
Найти сумму логарифмов всех целых чисел, дающих при делении на 3 в остатке 1 из отрезка [A, B].
Дан отрезок [A, B]. Вычислить количество чисел этого отрезка, являющихся квадратами целых чисел.
Найти наименьшее общее кратное трех заданных с клавиатуры натуральных чисел K, L, M. Если таковых нет, вывести на экран сообщение "NO SOLUTION".
Даны натуральные числа M и N. Определить их наименьшее общее кратное.
Вычислить сумму всех нечетных чисел от А до В.
Дан отрезок [A, B]. Найти сумму всех отрицательных чисел из этого отрезка.
Вычислить сумму и произведение 10 членов арифметической прогрессии, где начальный член равен 2, а приращение равно 3.
Найти среднее арифметическое квадратов всех целых чисел из отрезка [A, B].
Найти сумму кубов всех целых чисел, кратных 8, из отрезка [A,B].
Найти среднее арифметическое всех целых чисел из отрезка [A,B].
Даны натуральные числа M и N. Определить их наибольший общий делитель.
Найти сумму всех целых чисел из отрезка [A,B], которые кратны 5 и 3 одновременно.
Найти произведение всех целых чисел из отрезка [A,B], которые кратны 6 и 9 одновременно.