- •Ю.А Петров Программирование на языке высокого уровня
- •Часть 1
- •Введение
- •Задание
- •Комментарии
- •Идентификаторы
- •Ключевые слова
- •Константы
- •Управляющие последовательности
- •Строковые литералы
- •Константные выражения
- •Пунктуаторы
- •Операции
- •Задание на лабораторную работу 2 разработка программы линейной структуры Цель работы
- •Отчет по лабораторной работе должен содержать:
- •Задание
- •Замечания
- •Варианты заданий
- •Классификация ошибок
- •Ошибки, не обнаруженные компилятором
- •Ситуации, возникающие при неверных результатах
- •Отладка программы
- •Предупреждения
- •Первое сообщение об ошибке
- •Использование команд Find и Replace
- •Быстрое обнаружение ошибочных строк
- •Продолжение отладки
- •Использование встроенного отладчика
- •Разница между командами Step Into и Step Over
- •Дополнительные средства отладки
- •Работа с точками останова
- •Краткая характеристика объектов
- •Формат 1:
- •Стиль программирования
- •Задание на лабораторную работу 4 объекты и их характеристики Цель работы
- •В отчете по лабораторной работе следует представить:
- •5 Структурное программирование
- •Пример1
- •Пример 2
- •Задание на лабораторную работу 5 разработка программы со структурой «развилка» Цель работы
- •Задание:
- •Варианты задания
- •Задание на лабораторную работу 6 создание цикловых программ с фиксированным числом повторений Цель работы
- •Задание
- •Варианты задания
- •Задание на лабораторную работу 7 создание программ с итерационными циклами Цель работы
- •Задание
- •Варианты задания
- •Пояснения к выполнению лабораторной работы 7
- •6 Агрегаты данных
- •Структура
- •Объединения
- •Перечисления
- •Int array[3]; // Объявление определения;
- •Многомерные массивы
- •Вывод в файловый поток
- •Чтение из входного файлового потока
- •Чтение целой строки файлового ввода
- •Определение конца файла
- •Проверка ошибок при выполнении файловых операций
- •Закрытие файла
- •Управление открытием файла
- •Выполнение операций чтения и записи
- •Задание на ргз 1 использование структур данных при решении задач Цель работы
- •Задание
- •Варианты задания
- •7 Модульное программирование
- •Задание на ргз 2 использование модульного программирования при решении задач
- •Перемещаемые панели инструментов
- •Меню File
- •Меню Edit
- •Меню View
- •Меню Insert
- •Меню Project
- •Меню Build
- •Меню Tools
- •Меню Window
- •Список открытых окон
- •Меню Help
- •Приложение 2 Некоторые функции языка с
- •Используемая литература
- •Оглавление
- •5 Структурное программирование 53
Задание на лабораторную работу 7 создание программ с итерационными циклами Цель работы
Научиться разрабатывать алгоритмы цикловых структур и их блок-схемы.
Научиться писать программы с итерационными циклами.
Научиться использовать простейшие средства отладки исходного кода.
Закрепить навыки создания исходного кода, его компиляции и компоновки.
Задание
Найти корни уравнения: a * x3 + b∙x2 + c∙x + d = 0 с точностью до 0.01.
Вместо компонентов a, b, c и d записать заданные значения согласно вашему варианту.
Изучить метод отделения корней, его сущность. Корни уравнения уточнить методом половинного деления.
Разработать блок-схему задачи, составить исходный код на языке С++, откомпилировать, получить *.exe-программу, получить решение. При отладке использовать команду GO до курсора, открыть окно QuickWatch и проанализировать значения переменных.
Выполнить проверку решения с помощью пакета MathCAD, используя функцию polyroots().
Варианты задания
Номер варианта |
Коэффициенты полинома |
Номер варианта |
Коэффициенты полинома |
| ||||||
а |
b |
c |
d |
a |
b |
c |
d |
| ||
1 |
1 |
-3 |
0 |
2 |
14 |
-3 |
-4 |
1.5 |
1 |
|
2 |
2 |
-5 |
0 |
1 |
15 |
-1.5 |
5 |
4 |
-10 |
|
3 |
3 |
-7 |
2 |
2 |
16 |
-4 |
10 |
0 |
-6 |
|
4 |
2 |
-6 |
1 |
2 |
17 |
-4 |
0 |
6 |
-1 |
|
5 |
-2 |
-3 |
2 |
2 |
18 |
-1 |
-1 |
5 |
0 |
|
6 |
-0.5 |
-3 |
5 |
1 |
19 |
5 |
-5 |
-3 |
1 |
|
7 |
1 |
-1 |
-1 |
0 |
20 |
4 |
-4 |
-6 |
1 |
|
8 |
2 |
-3 |
-3 |
3 |
21 |
3 |
-3 |
-8 |
5 |
|
9 |
2.5 |
-4 |
-2 |
2 |
22 |
-2 |
-7 |
-0.2 |
6 |
|
10 |
10 |
-10 |
-5 |
2 |
23 |
-3 |
-7 |
-0.5 |
3 |
|
11 |
2 |
3 |
-5 |
-5 |
24 |
-2 |
-6 |
2 |
10 |
|
12 |
2 |
1 |
-8 |
-2 |
25 |
-1 |
-2 |
2 |
2 | |
13 |
1 |
2 |
-6 |
-3 |
|
|
|
|
|
Пояснения к выполнению лабораторной работы 7
Корни найти в два этапа – отделение корней и уточнения корней методом половинного деления. Разработать блок-схему задачи, составить исходный код на языке С++, откомпилировать, получить *.exe-программу, получить решение. Выполнить проверку решения, используя пакет MathCAD.
Этап 1 – метод отделения корней. Функция
f(x) = a * x3 + b∙x2 + c∙x + d
определена на интервалеa,b (рис. 5.2). Её график можно построить в системе MathCAD. Разобьем интервал a,b на N равных частей, каждую из которых обозначим через . Если функция f(x) принимает разные знаки на концах интервала, т.е.
f()f() < 0,
то внутри этого интервала есть, по крайней мере, один корень уравнения f(x) = 0, т.е. найдется хотя бы одно число ξ, такое, что
f(ξ) = 0.
Алгоритм поиска интервалов , на которых функция f(x) принимает разные знаки, т.е. имеет один действительный корень, записан для программирования в среде MathCAD и представлен на рисунке 5.3, а. Все интервалы, содержащие корни уравнения, записываются последовательно в массив v. В качестве исходных данных для отделения корней примем функцию f(x), интервал поиска [a,b], число разбиений интервала – N.
Если корень совпал с начальной точкой интервала (f(a) = 0), то он включается в интервал, который увеличивается на величину . Следующий условный блок (f()f() < 0) проверяет знаки на текущем интервале. Если знаки совпадают, то готовится к выборке следующий интервал, в противном случае в массив v заносятся координаты границ интервала, содержащего корень .
Массив v передается на второй этап – уточнение корней, который может выполняться различными методами – половинного деления, хорд, касательных и др.
Этап 2 – метод уточнения корней. В качестве метода уточнения корней предлагается использовать метод половинного деления. Сущность его следующая: интервал , содержащий корень (рис. 5.4), делится пополам, и в полученной новой точке х определяется значение функции f(x).
Еслиf() и f(x) имеют одинаковые знаки, то интервал х отбрасывается и х становится новой точкой , в противном случае отбрасывается интервал х и х становится новой точкой . Новый интервал делится пополам, и процесс повторяется до тех пор, пока не будет выполняться условие:
| f(x) |<.
Алгоритм программы уточнения корней записан для программирования в среде MathCAD и представлен на рисунке 5.3,б.
Программа должна иметь два вложенных цикла:
внешний – с фиксированным числом циклов (цикл for), по числу найденных корней программой отделения;
внутренний – итерационный (do while) уточнения корней, число циклов подсчитывается счетчиком sh.
Д
Рисунок
5.1 – Структуры, используемые при
разработке программ: а
– «следование»; б – «развилка» на две
ветви; в – «развилка» на n
ветвей; г
– «повторение» Рисунок
5.1 – Структуры, используемые при
разработке программ: а
– «следование»; б – «развилка» на две
ветви; в – «развилка» на n
ветвей; г
– «повторение»