Файл: Лабораторная работа 01 Среды разработки программ на языке С Драчева Кристина Проверил Савин Н. И. Тула 2023.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.02.2024

Просмотров: 56

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Институт Прикладной математики и компьютерных наук

Кафедра Вычислительной техники
Учебная дисциплина

Программирование

Уровень профессионального образования: (высшее образование – бакалавриат)

Направление подготовки: Информатика и вычислительная техника

Профиль подготовки: Электронно-вычислительные машины, комплексы, системы и сети
Лабораторная работа № 01

Среды разработки программ на языке С++


Выполнила: Драчева Кристина

Проверил Савин Н.И.
Тула 2023

1. Цель работы

Освоение интегрированной среды разработки: Microsoft Visual Studio.

2. Задание

Создать решение, содержащее консольное приложение, ответить на контрольные вопросы.

3. Ход работы

Произвел инсталляцию последний версии,Microsoft Visual Studio. На данный момент это Microsoft Visual Studio 2019. После чего произвел установку среды C++. Создал решение и проект, в нем добавил файлы stdafx.cppв него записал#include"stdafx.h". Далее создал заголовок stdafx.h. Далее создал файл Source1.cppв него прописал код из задания. Так же в свойствах каждого файла cpp, поменял свойство «Предварительно откомпилированный заголовок на значение «Создать (/Yc)».

Произошло сложение элементов в заданной функции sum(), а именно логическая операция 3+5 return вернул значение, а функция main значения для a и b после чего вывела её в консоль идентификатором printf.

Добавив еще один заголовок с названием summa.h.

После того как мы подключили заголовок и вписали в него функцию sum, произошла ошибка С2084, так как функция sum уже имеет текст реализации. Но ради интереса я поменял название функции и сделал a – b. После чего в консоле получил результат

4. Ответы на контрольные вопросы

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

  2. В Microsoft Visual Studio .NET. Новоерешениесоздаетсякомандой File > New >Project. Далее требуется выбрать тип проекта, который будет первым в решении, имя решения, и каталог где оно будет находиться. Все новые проекты добавляются в решение лишь с одним отличием, при создании проекта в поле «решение» требуется выбрать «В текущее» (AddtoSolution) вместо «в новое решение» (Createnewsolution). В MicrosoftVisualStudio 2019 вместе с решением создается и первый проект. Его можно создать при запуске программы, нужно нажать на кнопку «Создание проекта» ввести имя решения, имя проекта и выбрать директорию.

  3. В распоряжении разработчика имеется средство IntelliSense, выдающее информацию о методах заданного объекта или параметрах, передаваемых при вызове функции (рис. 2). Обычно IntelliSense вызывается автоматически, но его можно вызвать нажатием «Ctrl + Пробел»

  4. В Visual Studio поддерживается список задач (task list). Идея состоит в том, что в программу включаются комментарии с описанием действий, которые предполагается выполнить в будущем; тип задачи определяется специальным ключевым словом, следующим после знака комментария. В настоящее время определены три встроенные категории задач — TODO, HACK и UNDONE. Комментарии с задачами выводятся в окне, вызываемом командой View > Other Windows > Task List (или комбинацией клавиш Ctrl+/, Ctrl + T).

  5. Редактор поддерживает и такую возможность, как свертка фрагментов программы и отображение на их месте заголовков (folding). Обратите внимание на значки «-» рядом с некоторыми строками на рисунке 2. Если щелкнуть на таком значке, в листинге будет скрыта соответствующая область (region), а после первой строки кода из блока появится многоточие. Если задержать указатель мыши над многоточием, на экране будет показан свернутый код. Для управления сверткой используется подменю Edit > Outlining

  6. Функции окна свойств в VS .NET уже не ограничиваются простым заданием свойств элементов управления. Содержимое окна зависит от того, что в настоящий момент выделено в IDE. Имя и тип выделенного элемента указаны в списке, находящемся в верхней части окна. Чтобы изменить значение свойства, щелкните в правой ячейке и начинайте вводить символы. В окне свойств действуют стандартные комбинации клавиш, используемые при редактировании в системе Windows.

  7. В окне вывода (вызываемом командой View >Output или комбинацией клавиш Alt + 2) отображается текущая информация состояния. При построении решения в этом окне компилятор выводит сообщения как об успешном завершении, так и о возникших ошибках. В окне ошибок выводятся все ошибки или предупреждения возникшие во время компиляции программы. Оно вызывается сочетанием клавиш Ctrl + /, Ctrl + E.

  8. В окне решения (Solution Explorer), показанном на рис. 4, выводится список файлов, входящих в решение. По умолчанию имя решения совпадает с именем первого созданного в нем проекта.

  9. Настройка большинства глобальных параметров редактора выполняется в диалоговом окне — выполните команду Tools > Options и выберите в списке строку Text Editor. Например, чтобы выбрать размер позиций табуляции, щелкните в строке Text Editor и выберите нужное значение для всех языков или только для С++. Здесь же выбирается режим создания отступов: None (отступы отсутствуют), Block (курсор выравнивается по началу предыдущей строки) или Smart (автоматическое создание отступов в теле цикла, как того требует хороший стиль программирования).

  10. Устанавливать размер позиций табуляции и форматировать отступы можно в готовом тексте, для чего используются комбинации клавиш Ctrl+K, Ctrl+F (сочетания клавиш требуется нажать подряд, без длительной паузы) или команда Edit > Advanced > Format Selection. Также изменять отступы выделенного блока можно используя Tab для увеличения отступа и Shift + Tab для уменьшения.

  11. MVS 2019 Файл > Создать > Файл или Файл > Создать > Проект. MVS .NET Для этого требуется щелкнуть правой кнопкой мыши по папке, куда необходимо добавить файл, в контекстном меню выбрать Add>NewItem (Добавить > Новый элемент), чтобы добавить новый файл, или Add>ExistentItem (Добавить > Существующий элемент), чтобы добавить существующий файл.



5. Вывод по проделанной работе

Установил и настроил MVS 2019. Научился работать с базовыми аспектами программы для дальнейшего программирования.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Институт Прикладной математики и компьютерных наук

Кафедра Вычислительной техники
Учебная дисциплина

Программирование

Уровень профессионального образования: (высшее образование – бакалавриат)

Направление подготовки: Информатика и вычислительная техника

Профиль подготовки: Электронно-вычислительные машины, комплексы, системы и сети
Лабораторная работа № 02

Управление потоком кода

Выполнила: Драчева Кристина

Проверил Савин Н.И.

Тула 2023

1. Цель работы

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

2. Техническое задание

1.Написать программу, выводящую на экран таблицу умножения, используя цикл for.

2. Написать программу вывода на экран элементов ряда Фибоначчи S[i] = S[i – 1] + S[i – 2]; i = [1…n]; S[1] = 1, S[2] = 1.

3. Написать программу, выводящую на экран таблицу умножения, используя цикл while.

4. Написать программу, определяющую, является ли заданное число простым.

5. Написать программу, которая выводит на экран сопоставление чисел и дней недели в месяце. Число дней в месяце, и день недели первого числа задаются.

6. Написать программу, которая для заданного числа подсчитывает произведение всех четных и сумму всех нечетных чисел до него.

3.Постановка задачи

Решить заданные задачи и ответить на контрольные вопросы.

Способ решения. Для решения поставленной задачи будет использован объектно-ориентированный язык программирования С++.

4. Ход работы

Задание№1

Листинг программы:

int main() {

int i,k;

for (i = 1; i < 10; i++) {

for (k = 1; k < 10; k++)

printf("%4d", i * k);

printf("\n");
}

}


Задание№2

Листингпрограммы:

usingnamespace std;
unsignedlonglong f(unsignedshortn) {

returnn< 2 ? n : f(n - 1) + f(n - 2);

}
int main() {

cout << f(6);

return 0;

}

}
i = [1…n]

usingnamespace std;
int main()

{

setlocale(LC_ALL, "Russian");

float summa;

int n;
cout<<"Введитедлинуряда : "; cin>>n;
summa = 0;
for (int i = 1; i <= n; i++) {

summa = summa + (double)1 / i;

}
cout <<"Суммаряда = : "<< summa << endl;
system("PAUSE");

return 0;

}
Задание№3

Листингпрограммы:

usingnamespace std;

int i = 1;

int main() {

int i = 1;

while (i <= 9)

{

int j = 1;

do {

cout << setw(15) << i <<"*"<< j <<"="<< i * j << setw(15) << i + 1 <<"*"<< j <<"="<< (i + 1) * j << setw(15) << i + 2 <<"*"<< j <<"="<< (i + 2) * j << endl; j++;

} while (j <= 10);
cout << endl;

i += 3;
}

}

Задание№4

Листингпрограммы:

usingnamespace std;

int n, i;

bool b = false;

int main() {

int n, i;

bool b = false;

cin >> n;

for (i = 2; i < n; i++)

{

if (n% i = 0) {

b = true;

}
if (b = true)

{

cout <<"Не натуральное";

}

else

{

cout <<"Натуральное";

};

}

}

Задание№5

Листингпрограммы:

usingnamespacestd;
int main()

{

setlocale(LC_ALL, "Russian");

unsignedint D, R;

cout <<" D = "; cin >> D;

R = D % 7;

switch (R)

{

case 3: cout <<" Понедельник \n "; break;

case 4: cout <<" Вторник \n "; break;

case 5: cout <<" Среда \n "; break;

case 6: cout <<" Четверг \n "; break;

case 0: cout <<" Пятница \n "; break;

case 1: cout <<" Суббота \n "; break;

case 2: cout <<" Воскресенье \n "; break;

}

return 0;

}

Задание№6

Листингпрограммы:

usingnamespacestd;
int main()

{

setlocale(LC_ALL, "Russian");

int sum = 0, mult = 0, a, b;

cin >> a;

cin >> b;

for (int i = a; i <= b; i++) {

if (i%2 == 0) {

sum += i;

}

else {

mult += i;

}

}

cout <<"Суммачетных:"<< sum;

cout <<"Сумма не четных:"<< mult;

}

5. Ответы на контрольные вопросы

  1. while (Условие) {Тело цикла;}

  2. Цикл do while очень похож на цикл while. Единственное их различие в том, что при выполнении цикла do while один проход цикла будет выполнен независимо от условия. Решение задачи на поиск суммы чисел от 1 до 1000, с применением цикла do while.

  3. for (действие до начала цикла; условие продолжения цикла; действия в конце каждой итерации цикла) { инструкция цикла; инструкция цикла2; инструкция цикла N; }

  4. Когда оператор break выполняется в структурах while, for, do/while или switch, происходит немедленный выход из структуры. Программа продолжает выполнение с первого оператора после структуры. Обычное назначение оператора break — досрочно прерывать цикл или пропустить оставшуюся часть структуры switch.

  5. Ранее мы установили, что в большинстве случаев структура while может использоваться вместо for. Единственным исключением является случай, когда выражение приращения в структуре while следует за оператором continue. В этом случае приращение не выполняется до проверки условия продолжения цикла и структура while работает не так, как for.



6. Вывод по проделанной работе

Освоил средства создания циклов различных типов в программах на C++ и операторов управления потоком команд.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Институт Прикладной математики и компьютерных наук

Кафедра Вычислительной техники
Учебная дисциплина

Программирование

Уровень профессионального образования: (высшее образование – бакалавриат)

Направление подготовки: Информатика и вычислительная техника

Профиль подготовки: Электронно-вычислительные машины, комплексы, системы и сети
Лабораторная работа № 03

Массивы и указатели в программах на языке С++


Выполнила: Драчева Кристина

Проверил Савин Н.И.


Тула 2023

1. Цель работы

Познакомиться с принципами использования массивов, указателей и адресной арифметикой в программах на языках C и C++.

2. Техническое задание

1. Написать программу поиска минимального элемента в трёхмерном массиве используя адресную арифметику.

2. Разработать программу суммирования элементов массива A[4][5] по строкам и столбцам используя адресную арифметику. Результат записать в отдельный массив B[9].

3. Написать программу подсчета среднего арифметического элементов целочисленного массива A[25][30] используя адресную арифметику. Память под массив выделить динамически.

4. Написать программу, определяющую в массиве A[47] число отрицательных элементов, находящихся на позициях с чётными номерами используя адресную арифметику.

5. Для массива A[87] обнулить все элементы меньше заданного значения B. После этого все ненулевые элементы перенести в новый массив C, память под который выделить динамически используя адресную арифметику.

6. Дан символьный массив C[]. Определить, является ли строка, определяемая им, палиндромом («симметричной» относительно «центра» последовательностью) используя адресную арифметику

3.Постановка задачи

Решить заданные задачи и ответить на контрольные вопросы.

Способ решения. Для решения поставленной задачи будет использован объектно-ориентированный язык программирования С++.


4. Ход работы

Задание №1

Листинг программы:

int main()

{

int arr[5][5][5];

for (int i = 0; i < 5;i++)

for (int j = 0; j < 5;j++)

for (int k = 0; k < 5;k++)

arr[i][j][k] =20 + rand()%20;
}

Задание№2

Листингпрограммы:

usingnamespace std;

int main()

{

setlocale(LC_ALL, "Russian");

constint arraySize = 100;

int array[arraySize][arraySize];

int summArray[arraySize] = { 0 };

int summArray2[arraySize] = { 0 };

int col = 4, row = 5;
for (int i = 0; i < row; ++i) {

for (int j = 0; j < col; ++j) {

cout <<"Введите A["<< i + 1 <<"]["<< j + 1 <<"] значение: ";

cin >> array[i][j];

}

}
cout << endl <<"Исходнаяматрица: "<< endl;

for (int i = 0; i < row; ++i) {

for (int j = 0; j < col; ++j) {

cout << setw(5) << array[i][j];

}

cout << endl;

}
for (int i = 0; i < row; ++i) {

for (int j = 0; j < col; ++j) {

summArray[j] += array[i][j];

}

}

for (int j = 0; j < col; ++j) {

for (int i = 0; i < row; ++i) {

summArray2[i] += array[i][j];

}

}
cout << endl;

for (int j = 0; j < col; ++j) {

cout << j + 1 << setw(5) << summArray[j] << endl;

}

for (int i = 0; i < col; ++i) {

cout << i + 1 << setw(5) << summArray2[i] << endl;

}
return 0;

}

Задание№3

Листингпрограммы:

int main() {

setlocale(LC_ALL, "Russian");

srand(time(NULL));

const std::size_t rows = 25;

const std::size_t cols = 30;
int** matrix = newint* [rows];

for (std::size_t i = 0; i < rows; ++i) {

*(matrix + i) = newint[cols];
}
int sum = 0;

for (std::size_t i = 0; i < rows; ++i) {

for (std::size_t j = 0; j < cols; ++j) {

*(*(matrix + i) + j) = rand() % 101 - 50;

sum += *(*(matrix + i) + j);
}
}
std::cout

<<"Сумма: "<< sum << std::endl

<<"Количество элементов : "<< rows * cols << std::endl

<<"Результат: "<< sum / double(rows * cols) << std::endl;
for (std::size_t i = 0; i < rows; ++i) {

delete[] matrix[i];
}
delete[] matrix;
return 0;

}

Задание№4

Листингпрограммы:

usingnamespace std;
int main() {

int A = 47, num;

setlocale(LC_ALL, "Russian");

for (size_t i = 0; i < 47; ++i) {

if (!((i + 1) % 2) && (A + i) < 0)

++num;

}

}

Задание№5

usingnamespace std;

int main()

{

setlocale(LC_ALL, "Russian");

int B;

cout <<"Введите значение В ";

cin >> B;

std::vector A = { 3, 51, 49, 5, 44, 80, 26, 47, 12, 77, 35, 82, 80, 36, 29, 25, 1, 78, 6, 37, 56, 12, 35, 11, 13, 71, 80, 69, 62, 57, 32, 34, 55, 82, 47, 39, 16, 18, 28, 73, 18, 50, 41, 45, 66, 6, 49, 26, 29, 6, 32, 82, 79, 32, 67, 48, 23, 13, 22, 53, 88, 93, 33, 48, 41, 21, 67, 3, 3, 72, 61, 72, 10, 90, 37, 37, 38, 8, 49, 28, 30, 80, 45, 6, 63, 81, 93 };

A.erase

(

std::remove_if

(

std::begin(A), std::end(A),

[=](intn)

{

returnn< B;

}

),

A.end()

);
std::copy(

std::begin(A),

std::end(A),

std::ostream_iterator(std::cout, " ")

);
return 0;

}

Задание №6

Листингпрограммы:

usingnamespace std;

int IsPal(intv[], intl)

{

int i;
for (i = 0; i
if (v[i] != v[l - i - 1]) return 0;
return 1;

}
int main()

{

setlocale(LC_ALL, "Russian");

int arr[10];
if (IsPal(arr, 10)) printf("Этопалиндром\n");

else printf("Это не палиндром\n");
system("pause");
}