
2 курс ИТиП лаб1
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ
(МТУСИ)
Факультет "Радио и телевидение"
Кафедра "Электроники"
ОТЧЕТ
по дисциплине "Информационные технологии и программирование"
на тему:
"Линейные алгоритмы. Компиляция и компоновка. Вариант 7."
Выполнил
Проверил
Кандидат технических наук, доцент ______________ Т. П. Косичкина
Москва 2023
Цель работы: Научиться создавать линейные программы на языке C++ с применением стандартных арифметических операций. Овладеть навыками компиляции файлов исходного кода и компоновки полученных объектных файлов в исполняемый модуль.
Программа №7
Задание 1. Для задания в соответствии с индивидуальным вариантом (Рисунок 1) составить программу, имеющую линейный алгоритм и состоящую из одной функции int main(). Вычисление задачи вашего варианта организовать для произвольных исходных данных, значения которых вводятся с клавиатуры в процессе выполнения программы.
Рисунок 1 – условие №7
Код программы написанный по заданию 1 представлен на рисунке 2.
Рисунок 2 – Листинг программы номер 1.
Задание 2. Линейный алгоритм функции из задания 1 разделить на две процедуры, выделив в одну вычислительные операции этого алгоритма, а в другую все операции ввода-вывода. Каждую процедуру оформить как функцию. Вычислительную часть алгоритма оформить как функцию с параметрами, передаваемыми по значению, и возвращаемым значением. Прототип функции: double f(double x) Другую часть алгоритма оформить как функцию int main(), вызывающую первую функцию нужное количество раз. Записать тексты функций в файл с именем task2.срр в следующем порядке: функция с параметрами, функция main.
Рисунок 3 - Листинг программы номер 2.
Для выполнения данного задания необходимо:
Cоздать функцию double f(double x), которая будет содержать выражение для расчета результата.
В функции main() удалить строку с расчетом результата и заменить ее вызовом функции f(x).
Задание 3. Создать файл task3.срр, в котором изменить порядок записи текстов функций, созданных в задании 2. Функции записать в следующем порядке: функция main, функция с параметрами, организующая вычисления (double f(double x). Внести дополнения необходимые для работы программы, добиться успешной компиляции, скомпоновать и выполнить.
Рисунок 4 – Код программы 3
Для изменения порядка записи функций и записи функции double f(double x) после функции main, вам нужно выполнить следующие действия:
Переместите определение функции double f(double x) ниже определения функции main.
Обновите прототип функции double f(double x) в начале программы, перед функцией main.
Переместите код функции double f(double x) после определения функции main, но перед ее вызовом в main.
Задание 4. Линейный алгоритм функции из задания 1 разделить на две процедуры, выделив в одну вычислительные операции этого алгоритма, а в другую все операции ввода-вывода. Вычислительную часть алгоритма оформить как функцию без параметров и без возвращаемого значения. Прототип функции void f(void). Другую часть алгоритма оформить как функцию int main(), 2 вызывающую вычислительную функцию. Обмен данными между функциями организовать через глобальные объекты (double x – аргумент, double result – результат вычисления). Записать тексты функций в файл с именем task4.срр в следующем порядке: функция main, затем функция без возвращаемого значения и без параметров.
Рисунок 5 – Листинг программы 4
В соответствии с заданием в 6 строке программы используется «void». Прототип функции void на языке программирования C++ используется для объявления функции без указания ее реализации. Он содержит информацию о типе возвращаемого значения функции и о типах и порядке параметров, которые функция принимает. Прототип функции позволяет компилятору знать о существовании функции до ее фактической реализации, что позволяет использовать эту функцию в других частях программы до того, как она будет определена.
Задание 5. Разделить текст файла task3.срр на два файла. В первый файл с именем task5_main.cрр поместить текст функции main. Скомпилировать только файл task5_main.cрр. Во второй файл с именем task5_func.срр поместить текст функции с параметрами (double f(double x). Скомпилировать только файл task5_func.cрр. После раздельной компиляции осуществить совместную компоновку. Полученный исполняемый файл выполнить.
На рисунке номер 6 представлен код программы который содержит текст функции main.
Рисунок 6 – Код программы 5(main)
Для того что бы файл с функцией main считывал файл с функцией double f(double x), представленной на рисунке 7, необходимо включить заголовочный файл в файл реализации директивы препроцессора #include.
Рисунок 7 - Код программы 5(double f(double x))
Задание 6. В этом задании необходимо разделить текст файла task4.с на два файла. В первый файл с именем task6_main.c поместить текст функции main. Скомпилировать только файл task6_main.c. Во второй файл с именем task6_func.с поместить определения глобальных объектов (double x, y – аргументы, double result – результат вычисления) и текст функции без параметров (void f(void)). Скомпилировать только файл task6_func.c. После раздельной компиляции осуществить совместную компоновку. Разобраться в проблемах, возникающих при совместной компиляции и компоновки.
На рисунке 8 представлен листинг программы, в которой используется текст функции main.
Рисунок 8 – Код программы 6(main)
В данной программе используется тип данных extern, используемый для указания на то, что переменные x и result объявлены в другом файле, продемонстрированном на рисунке 9.
Рисунок 9 – Код программы 6
Задание 7. В этом задании необходимо модифицировать тексты файлов из задания 6. Описание функции и внешних переменных выделить в отдельный заголовочный файл func.h, включить его содержимое в файлы task7_main.c и task7_func.c. Определение внешних переменных произвести в файле task7_func.c. Скомпилировать по отдельности файлы task7_main.c и task7_func.c. Произвести компоновку, выполнить полученный исполняемый файл.
Для обозначение функций в отдельном используем уже изученный тип данных extern. Код программы представлен на рисунке 10.
Рисунок 10 – Листинг программы 7 с обозначением функций.
В соответствии с заданием создаем программу содержащую выражение необходимое для решения.
Рисунок 11 - Код программы 7, содержащий функцию f ()
В третьем файле, указанном на рисунке 12 используем функцию main вызывающую функцию f () нужное количество раз.
Рисунок 12 - Код программы 7, содержащий функцию main
ВЫВОД: В результате выполнения данной работы я овладел навыками создания линейных программ на языке C++ с использованием стандартных арифметических операций. Также я научился компилировать файлы исходного кода и компоновать полученные объектные файлы в исполняемый модуль.