Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №10

.docx
Скачиваний:
1
Добавлен:
19.10.2022
Размер:
6.55 Mб
Скачать

Федеральное агентство связи

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Информатики»

Лабораторная работа №10

по дисциплине: «Информатика»

по теме: «Структура кода программ на VC++ и функции пользователя. Программирование алгоритмов линейной структуры»

Выполнила Студентка 1 курса

Группа ЗРС 2001

Баланюк Е.С.

Вариант №3

Проверил :

Старший преподаватель

Юсков И.А.

Москва

2020

1) Структура кода программ на VC++ и функции пользователя. Программирование алгоритмов линейной структуры

2) Баланюк Е.С., ЗРС 2001, вариант №3

3)Общее задание

  1. Изучите структуру программного кода языка VС++ и правила построения функции пользователя.

  2. Выберите индивидуальный вариант задания из таблицы 10.3-1.

Рисунок 1. Вариант 3

  1. Решите задачу вычисления арифметического выражения, используя разработанные функции пользователя (без использования функций оно уже решено в предыдущей лабораторной работе №9).

Для этого реализуйте три варианта решения задачи с помощью функций пользователя, для которых разработайте:

  • схемы алгоритмов средствами Visio и реализуйте программный код трех функций С++ пользователя для вычисления заданного арифметического выражения:

  • схему алгоритма функции с формальными входными параметрами и одним возвращаемым значением;

  • схему алгоритма функции с формальными входными и выходными параметрами и без возвращаемого значения;

  • схему алгоритма функции без параметров и без возвращаемого значения;

  • программные коды трех функций пользователя по алгоритмам из предыдущего пункта.

Создайте одно консольное приложение (решение), содержащее пять проектов, каждый из которых содержит одну из разработанных процедур пользователя п.3, и главную функцию main(), в которой осуществляется ввод исходных данных, вызов соответствующей процедуры п.3 и вывод результата.

Для каждого проекта выполните все пункты задания.

(Детали задания для каждого проекта приводятся в примере выполнения лабораторной работы).

  1. Выполните созданные проекты и получите результаты.

  2. Выполните созданные проекты по шагам, с помощью отладчика, установив точку останова после ввода данных.

  3. Ответьте на поставленные в задании на каждый проект вопросы.

  4. Докажите правильность результата.

    1. ПЕРВЫЙ ПРОЕКТ

      1. Для решения задачи в первом проекте необходимо разработать:

  • алгоритм функции пользователя с формальными входными параметрами и с одним возвращаемым значением.

Схема алгоритма этой функции пользователя представлена на

рисунке 2, а схема алгоритма главной функции main()показана на

рисунке 3;

Рисунок 2. Схема алгоритма

Рисунок 3.Схема алгоритма главной функции main()

  • программный код двух функций, в соответствии со схемами алгоритмов.

Разместите тексты разработанных функций в файл с именем zad1.cpp в следующем порядке:

  • сначала вычислительная функция с параметрами;

  • после нее текст функции main()– см. рисунок 4.

Рисунок 4. Программный код первого проекта

      1. Откомпилируйте проект и получите результат.

      2. Выполните проект с помощью отладчика по шагам (рисунок 5)

Рисунок 5.Выполнение программы в отладчике по шагам

      1. В функции 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. Результат выполнения программы после изменения формальных переменных

    1. ВТОРОЙ ПРОЕКТ.

Записать текст функция main(), а затем текст пользовательской функции с параметрами. Схема пользовательской функции (рисунок 9,10).

Рисунок 10. Схема пользовательской функции с параметрами

Рисунок 11. Схема функции main()

Откомпилируйте проект, разберитесь с возникающими ошибками (рисунок 11), исправьте их, внеся требуемые дополнения в текст и добейтесь успешной компиляции (рисунок 12).

Рисунок 12.Код программы с ошибкой

Рисунок 13.Код программы после исправления ошибок

    1. ТРЕТИЙ ПРОЕКТ.

Для проекта необходимо разработать алгоритм функции пользователя с формальными параметрами и без возвращаемого значения. То есть разработать функцию, в которой исходные данные передаются через параметры, передаваемые по значению, а результат вычислений этой функции возвращается через параметр, который передан по ссылке. Схема алгоритма этой функции пользователя представлена на рисунке 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. Результат выполнения программы после удаления знака

    1. ЧЕТВЕРТЫЙ ПРОЕКТ

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. Правильность результата