- •Глава 2 36
- •1 Задание 1 62
- •Лабораторная работа №1
- •Краткие теоретические сведения
- •1.1Создание консольного приложения
- •1.2Отладка программы
- •1.2.1Установка точек останова (Add breakpoint)
- •2.2Идентификаторы
- •2.3Ключевые слова
- •2.4Знаки операций
- •2.5Константы
- •2.6Комментарии
- •2.7.1Понятие типа данных
- •2.7.2Основные типы данных
- •2.7.3Целый тип (int).
- •2.7.4Символьный тип (char).
- •2.7.5Логический тип (bool).
- •2.7.6Вещественный тип (float, double и long double).
- •2.8Переменные
- •2.9Функции и объекты ввода/вывода
- •2.9.1Основные функции ввода/вывода в стиле с:
- •2.10Операции
- •2.10.2Операция определения размера sizeof
- •2.10.4Деление (/) и остаток от деления (%).
- •2.10.8Логические операции (&& и ||).
- •2.10.10 Условная операция (?:).
- •2.11Выражения
- •2.11.1Преобразование типов в выражении.
- •Задание к лабораторной работе №1
- •Контрольные вопросы к лабораторной работе №1
- •1.1Оператор «выражение»
- •1.2Операторы ветвления
- •1.2.1Условный оператор if... Else
- •1.2.2Об условиях в операторе if
- •1.2.3Оператор выбора switch
- •1.3Операторы передачи управления
- •1.3.1Оператор goto
- •1.3.2Оператор break
- •2 Тестирование программ
- •Домашнее Задание
- •Задание к лабораторной работе №2
- •1Задание 1
- •2Задание 2
- •Содержание отчета
- •2Операторы цикла
- •2.1Цикл с предусловием (while)
- •2.2Цикл с постусловием (do … while)
- •2.3Цикл с параметром for
- •3Дополнительные операторы передачи управления
- •3.1Оператор break
- •3.2Оператор continue
- •4Вложенные циклы
- •Домашнее Задание
- •Задание к лабораторной работе №3
- •1Задание 1
- •2Задание 2
- •Содержание отчета
- •Контрольные вопросы к лабораторной работе №3
- •4Программа пузырьковой сортировки
- •Домашнее Задание
- •Задание к лабораторной работе №4
- •Содержание отчета
- •Контрольные вопросы к лабораторной работе №4
- •0 Строка
- •1 Строка
- •5 Строка
- •2Ввод и вывод многомерных массивов
- •Домашнее Задание
- •Задание к лабораторной работе №5
- •4Ссылки
- •5Динамическое распределение памяти
- •5.1Использование стандартных функций malloc и free
- •5.2Использование операторов new и delete
- •Домашнее Задание
- •Задание к лабораторной работе № 6
- •Содержание отчета
- •Контрольные вопросы к лабораторной работе №6
- •Лабораторная работа №7 отладка программы краткие теоретические сведения
- •6Отладочные пункты меню
- •7Элементы отладки
- •7.1Контрольные точки
- •7.1.1Контрольные точки в исходном коде
- •7.1.2Адресные контрольные точки
- •7.1.3Контрольные точки данных
- •7.2Команда Run to Cursor
- •7.3Команда Pause
- •8Наблюдение за переменными
- •8.1Быстрый просмотр данных
- •9Инспектор отладки
- •9.1Инспекция локальных переменных
- •10Другие инструменты отладки
- •10.1Диалог Evaluate/Modify
- •10.2Окно cpu
- •10.3Стек вызовов
- •10.4Команда Go to Address
- •10.5Команда Program Reset
- •Задание на лабораторную работу №7
- •Контрольные вопросы к лабораторной работе №7
- •Приложение I
- •Приложение II Блоки схем алгоритмов согласно гост 19.002 – 80 и 19.003 – 80
- •Приложение III Оформление алгоритма программы в виде блок-схемы
- •Приложение IV Базовая программа для выполнения лабораторных работ
- •Приложение V
- •Приложение VI
- •Список используемых источников
Задание к лабораторной работе №2
Выполните обязательные и непонятные Вам примеры теоретических сведений и лишь затем «задание M.N» по варианту N (N – номер компьютера, M – номер задания). После выполнения задания 2 дополните программу циклом с оператором goto. В цикле с помощью оператора switch организуйте выбор: повторение или завершение программы (см. пример использования switch в теоретической части). Выполните тестирование разработанных Вами программ.
1Задание 1
Задание 1.1
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.2
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.3
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.4
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.5
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.6
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.7
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.8
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.9
Вычислить значения функции F при вещественных a, b, c, x, водимых с клавиатуры.
Задание 1.10
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.11
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.12
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.13
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.14
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
Задание 1.15
Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры.
2Задание 2
Составить программу, которая печатает сообщение о принадлежности, если точка с координатами (х, у) принадлежит или не принадлежит заштрихованной области (номера вариантов на графиках):
Содержание отчета
Отчет выполняется по выбору преподавателя – либо в редакторе Word, либо в черновом варианте в лекционной тетради. Отчет должен содержать:
Листинг программ на языке Си, решающих задачи в соответствии с вариантом (номером компьютера) задания;
Блок-схему алгоритма программ (см. Приложение II и III);
Пояснения по методу решения задач и по выбору исходных данных для тестирования;
Результаты тестирования программ (консольные окна и инструкция пользователя).
При оформлении отчета следует пользоваться копированием листинга и результата тестирования в Word. Последний копируется с помощью комбинации клавиш ALT Prt Sc, при условии активности консольного окна, что означает копирование графики окна в буфер обмена Windows. Затем окно вставляется в документ Word как любой другой объект.
Контрольные вопросы к лабораторной работе №2
Запишите условный оператор if со словом else и без него.
Объедините два условия логической операцией И, ИЛИ. Добавьте логическое отрицание.
Запишите оператор выбора switch без оператора break и с ним. Чем отличаются эти варианты ? Добавьте слово default. Что оно означает ?
Объясните назначение операторов goto и break ?
ЛАБОРАТОРНАЯ РАБОТА №3
Операторы цикла и операторы передачи управления
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
1Организация циклов с помощью операторов if и goto
Циклы используются для организации многократно повторяющихся вычислений. Любой цикл состоит из тела цикла, то есть тех операторов, которые выполняются несколько раз, начальных установок, модификации параметра цикла и проверки условия продолжения выполнения цикла, которое записывается в виде логического выражения (рис. 2.1). Выход из цикла может быть организован как при истинности выражения – «Да», так и при его неистинности «Нет» (на рис. 2.1 лишь пример выхода по – «Нет»).
Один проход цикла называется итерацией. Проверка условия выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.
а
б
Рис. 3.1, Структурные схемы операторов цикла:
а – цикл с предусловием; б – цикл с постусловием
Переменные, изменяющиеся в теле цикла и используемые при проверке условия продолжения, называются параметрами цикла. Целочисленные параметры цикла, изменяющиеся с постоянным шагом на каждой итерации, называются счетчиками цикла.
Начальные установки могут явно не присутствовать в программе, их смысл состоит в том, чтобы до входа в цикл задать значения переменным, которые в нем используются.
Цикл завершается, если условие его продолжения не выполняется. Передавать управление извне внутрь тела цикла, минуя его заголовок, не рекомендуется, так как параметры цикла могут быть не определены.
Рассмотрим пример, который можно использовать для решения задания 1. Требуется вычислить арифметическое выражение, содержащее бесконечную сумму:
Для инициализации вычислений переменной n присваивается начальное значение 0 и переменной F также присваивается 0. В цикле переменная n после каждого вычисления выражения, стоящего под знаком суммы должна изменяться по формуле n = n + 1. Таким образом, n – счетчик цикла. Если бы был конечный верхний предел суммы, то условием завершения цикла было бы равенство n конечному пределу. Но в данном случае предел бесконечный и, следовательно, F может быть вычислена только приближенно.
Для этого вводится понятие погрешности вычисления . Истинную погрешность вычислений найти можно аналитически, но не для всех выражений. Поэтому воспользуемся приближенными методами оценки погрешности. Один из вариантов такой оценки – отбросить все слагаемые, абсолютная величина которых меньше . Конечно, это не та , которая близка к истинной погрешности вычислений, но зато такая оценка универсальна (для любого выражения). Понятно, что истинная погрешность всегда больше . Поэтому следует выбирать меньше ожидаемой истинной погрешности раз в 10. В большинстве случаев это оправданно. Хотя, конечно, анализ выражения под знаком суммы никогда не помешает.
Переменная F, то есть сумма должна накапливаться с каждым циклом, для этого слагаемые, содержащие в том или ином виде n, складываются с переменной F и результат заносится также в F.
Цикл с постусловием для приведенного выше выражения будет выглядеть так:
n=0; F=0;eps=0.001; //инициализация переменных
// переменную eps в задании 3 следует вводить с клавиатуры
m1: Fp=1.0/n; //вычисление выражения под знаком суммы
F=F+Fp; //накопление суммы
n++; //изменение переменной цикла
if (Fp>=eps) goto m1;
n=0; F=0; eps=0.001
Fp=1/n; F=F+Fp
n=n+1
Да
Нет
Здесь eps – погрешность ;
Переменная Fp вводится, чтобы при анализе условия не вычислять выражение повторно. После выхода из цикла переменная F будет содержать сумму вычисленную приближенно. Можно также контролировать число циклов n с целью защиты от ошибок программирования. Обычно это делают при отладке программы. Если число циклов программирования слишком велико (например, n>100000) можно выйти из цикла по этому условию. Для этого в последней строке программы можно связать 2 условия логическим оператором:
if (Fp>=eps & n<=100000) goto m1;