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

2 курс ИТиП лаб1

.docx
Скачиваний:
2
Добавлен:
16.10.2024
Размер:
719.75 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

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

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

(МТУСИ)

Факультет "Радио и телевидение"

Кафедра "Электроники"

ОТЧЕТ

по дисциплине "Информационные технологии и программирование"

на тему:

"Линейные алгоритмы. Компиляция и компоновка. Вариант 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.

Для выполнения данного задания необходимо:

  1. Cоздать функцию double f(double x), которая будет содержать выражение для расчета результата.

  2. В функции main() удалить строку с расчетом результата и заменить ее вызовом функции f(x).

Задание 3. Создать файл task3.срр, в котором изменить порядок записи текстов функций, созданных в задании 2. Функции записать в следующем порядке: функция main, функция с параметрами, организующая вычисления (double f(double x). Внести дополнения необходимые для работы программы, добиться успешной компиляции, скомпоновать и выполнить.

Рисунок 4 – Код программы 3

Для изменения порядка записи функций и записи функции double f(double x) после функции main, вам нужно выполнить следующие действия:

  1. Переместите определение функции double f(double x) ниже определения функции main.

  2. Обновите прототип функции double f(double x) в начале программы, перед функцией main.

  3. Переместите код функции 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++ с использованием стандартных арифметических операций. Также я научился компилировать файлы исходного кода и компоновать полученные объектные файлы в исполняемый модуль.