Лабораторная работа №10
.docxФедеральное агентство связи
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатики»
Лабораторная работа №10
по дисциплине: «Информатика»
по теме: «Структура кода программ на VC++ и функции пользователя. Программирование алгоритмов линейной структуры»
Выполнила Студентка 1 курса
Группа ЗРС 2001
Баланюк Е.С.
Вариант №3
Проверил :
Старший преподаватель
Юсков И.А.
Москва
2020
1) Структура кода программ на VC++ и функции пользователя. Программирование алгоритмов линейной структуры
2) Баланюк Е.С., ЗРС 2001, вариант №3
3)Общее задание
Изучите структуру программного кода языка VС++ и правила построения функции пользователя.
Выберите индивидуальный вариант задания из таблицы 10.3-1.
Рисунок 1. Вариант 3
Решите задачу вычисления арифметического выражения, используя разработанные функции пользователя (без использования функций оно уже решено в предыдущей лабораторной работе №9).
Для этого реализуйте три варианта решения задачи с помощью функций пользователя, для которых разработайте:
схемы алгоритмов средствами Visio и реализуйте программный код трех функций С++ пользователя для вычисления заданного арифметического выражения:
схему алгоритма функции с формальными входными параметрами и одним возвращаемым значением;
схему алгоритма функции с формальными входными и выходными параметрами и без возвращаемого значения;
схему алгоритма функции без параметров и без возвращаемого значения;
программные коды трех функций пользователя по алгоритмам из предыдущего пункта.
Создайте одно консольное приложение (решение), содержащее пять проектов, каждый из которых содержит одну из разработанных процедур пользователя п.3, и главную функцию main(), в которой осуществляется ввод исходных данных, вызов соответствующей процедуры п.3 и вывод результата.
Для каждого проекта выполните все пункты задания.
(Детали задания для каждого проекта приводятся в примере выполнения лабораторной работы).
Выполните созданные проекты и получите результаты.
Выполните созданные проекты по шагам, с помощью отладчика, установив точку останова после ввода данных.
Ответьте на поставленные в задании на каждый проект вопросы.
Докажите правильность результата.
ПЕРВЫЙ ПРОЕКТ
Для решения задачи в первом проекте необходимо разработать:
алгоритм функции пользователя с формальными входными параметрами и с одним возвращаемым значением.
Схема алгоритма этой функции пользователя представлена на
рисунке 2, а схема алгоритма главной функции main()показана на
рисунке 3;
Рисунок 2. Схема алгоритма
Рисунок 3.Схема алгоритма главной функции main()
программный код двух функций, в соответствии со схемами алгоритмов.
Разместите тексты разработанных функций в файл с именем zad1.cpp в следующем порядке:
сначала вычислительная функция с параметрами;
после нее текст функции main()– см. рисунок 4.
Рисунок 4. Программный код первого проекта
Откомпилируйте проект и получите результат.
Выполните проект с помощью отладчика по шагам (рисунок 5)
Рисунок 5.Выполнение программы в отладчике по шагам
В функции main() закомментируйте оператор вызова пользовательской функции z=func(x, y) и поменяйте порядок фактических параметров при вызове функции, т.е. реализуйте оператор z = func(y,x).
Выполните проект.
Обоснуйте полученный результат с помощью отладчика.
Ответ: Переменная double x станет y, а переменная double y станет x (см.рис.5).
Рисунок 6.Результат выполнения программы
Проанализируйте полученный результат, ответьте на вопрос: Изменится ли значение переменной x в функции main, если внутри функции func до оператора return z изменить значение x, например, добавить оператор x++;.
Обоснуйте ответ с помощью отладчика (рисунок 6).
Ответ: нет
Рисунок 7. Результат выполнения программы
Подумайте, можно ли при вызове функции в списке фактических параметров указать не просто имя параметра, но выражение? Ответ: Да
Подумайте, изменится ли результат работы программы, если изменить имена формальных параметров при определении функции func. Например, ничего не меняя в функции main, определить пользовательскую функцию следующим образом (рисунок 7).
Ответ: нет ,не изменится (рисунок 8)
Рисунок 8.Изменённые формальные переменные
Рисунок 9. Результат выполнения программы после изменения формальных переменных
ВТОРОЙ ПРОЕКТ.
Записать текст функция main(), а затем текст пользовательской функции с параметрами. Схема пользовательской функции (рисунок 9,10).
Рисунок 10. Схема пользовательской функции с параметрами
Рисунок 11. Схема функции main()
Откомпилируйте проект, разберитесь с возникающими ошибками (рисунок 11), исправьте их, внеся требуемые дополнения в текст и добейтесь успешной компиляции (рисунок 12).
Рисунок 12.Код программы с ошибкой
Рисунок 13.Код программы после исправления ошибок
ТРЕТИЙ ПРОЕКТ.
Для проекта необходимо разработать алгоритм функции пользователя с формальными параметрами и без возвращаемого значения. То есть разработать функцию, в которой исходные данные передаются через параметры, передаваемые по значению, а результат вычислений этой функции возвращается через параметр, который передан по ссылке. Схема алгоритма этой функции пользователя представлена на рисунке 13, а схема алгоритма главной функции main()показана на рис.14.
Рисунок 14.Схема алгоритма функции с формальными параметрами и без возвратного значения для третьего проекта
Рисунок 15.Схема алгоритма главной функции main() для третьего проекта
4.3.2) Напишите программный код двух функций, в соответствии с разработанными в предыдущем пункте схемами и запишите тексты программных кодов разработанных функций в файл с именем zad3.cpp в следующем порядке:
сначала функция main();
затем функция с параметрами без возвращаемого значения - см. рис. 15.
Рисунок 16.Программный код третьего проекта.
4.3.3) Откомпилируйте проект и получите результат (рисунок 16).
Рисунок 17.Результат выполнения программы
4.3.4) Выполните третий проект с помощью отладчика по шагам (рисунок 17), так же, как и в первом проекте, поставив точку останова после ввода исходных данных x и y на операторе вызова функции. Проследите изменение значений всех переменных.
Рисунок 18.Результат выполнения программного кода с помощью отладчика по шагам
4.3.5) Подумайте и обоснуйте ответ, можно ли при вызове функции в списке фактических параметров указать не просто имя параметра по ссылке, но и выражение?
Ответ: Нет. Потому что значение выходного параметра z не может изменяться (рисунок 19)
Рисунок 19.Измененённые параметры и ошибка программного кода
4.3.6)Подумайте, изменится ли результат работы программы, если при определении функции func3 удалить знак & (операции взятия адреса) перед формальным параметром z . Ответ: Изменится, так как double& присваивает переменной z значение пользовательской функции с параметрами (рисунок 20).
Рисунок 20. Результат выполнения программы после удаления знака
ЧЕТВЕРТЫЙ ПРОЕКТ
4.4.1Для проекта необходимо разработать алгоритм функции пользователя без формальных параметров и без возвращаемого значения. Обмен данными между этой функцией и главной функцией main() организовать через глобальные объекты. Схема алгоритма функции пользователя представлена на рисунке 21, а схема алгоритма главной функции main()показана на рис.22.
Рисунок 21. Схема алгоритма функции без формальных параметров и без возвращаемого значения для четвертого проекта
Рисунок 22.Схема алгоритма главной функции main()для четвертого
4.4.2) Напишите программный код двух функций (рисунок 23)
Рисунок 23.Программный код четвертого проекта
4.4.3) Откомпилируйте проект и получите результат.
Рисунок 24.Результат откомплируемого четвёртого проекта
4.4.4) Выполните четвертый проект с помощью отладчика по шагам, также поставив точку останова после ввода исходных данных x и y на операторе вызова функции.(команда главного меню Отладка/Окна/Видимые).
Рисунок 25. Результат выполнения программного кода с использованием пошаговой отладки
4.4.5) Подумайте, изменится ли результат работы программы, если в тело главной функции main() добавить еще одно определение переменных x, y, z до оператора ввода исходных данных.
Ответ: Изменится, так как функция void func4(void); работает в глобальными переменными. Программа выдаст ошибку.
4.5) ПЯТЫЙ ПРОЕКТ.
В этом задании необходимо создать проект, состоящий из двух файлов. Для этого нужно разделить текст файла из второго проекта zad2.срр на два файла. В первый файл с именем zad5_m.срр поместите текст функции main(). (рисунок 26).Откомпилируйте только файл zad5_m.срр (рисунок 27).
Рисунок 26.Программный код файла zad5_m.cpp
Рисунок 27. Результат выполнения компоновки файлов zad5_f.cpp.
Добавьте в проект второй файл с именем zad5_f.срр и поместите в него текст функции с параметрами (рисунок 28). Откомпилируйте только файл zad5_f.cpp(рисунок 29). После раздельной компиляции осуществите совместную компоновку.
Рисунок 28. Программный код файла zad5_f.cpp
Рисунок 29. Результат выполнения компоновки файлов zad5_f.cpp
6) Доказательство правильности работы программы.
Для доказательства правильности результатов выполните расчет арифметического выражения с использованием калькулятора (рисунок 30)
Рисунок 30. Правильность результата