Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СиАОД_Тычинина.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Требования к оформлению отчетов по лабораторным работам

Отчет по лабораторной работе должен содержать:

  1. Титульный лист со следующей информацией:

  • Название лабораторной работы;

  • Номер варианта;

  • ФИО выполнивших работу студентов;

  • ФИО преподавателя.

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

  2. Задание в соответствие с вариантом.

  3. Схемы алгоритмов по каждому заданию.

  4. Полученный текст отлаженной программы.

  5. Результаты выполнения программы.

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

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

Знакомство с интегрированной средой Visual C++.

Разработка линейных программ.

Цель работы

Знакомство с интегрированной средой Visual С++, освоение процедуры ввода-вывода и навыков написания линейных программ.

Теоретическая часть

Интегрированная среда Visual С++

Integrated Development Environment (интегрированная среда разработки), или сокращенно, IDE – это программный продукт, объединяющий текстовый редактор, компилятор, отладчик и справочную систему. Любая программа, создаваемая в среде Visual C++, даже такая простая, как «Hello, World!» всегда оформляется как отдельный проект. Проект – это набор взаимосвязанных исходных файлов и, возможно, включаемых (заголовочных) файлов, компиляция и компоновка которых позволяет создать исполняемую программу.

Запуск Visual C++ можно осуществить через меню Пуск > Программы > Microsoft Visual Studio. В появившемся окне необходимо выбрать тип приложения Visual C++. После запуска Visual C++ появляется главное окно программы.

Рабочий стол Visual C++ включает в себя три окна:

Окно рабочей области (Project Workspace) предназначено для оказания помощи при написании и сопровождении больших многофайловых программ.

Окно редактора (Editor) используется для ввода и проверки исходного кода.

Окно вывода (Output) служит для вывода сообщений о ходе компиляции, сборки и выполнения программы. В частности, сообщения о возникающих ошибках появляются именно в этом окне.

Для создания нового проекта типа «консольное приложение» необходимо выполнить следующие действия:

  1. Выберите в строке меню главного окна команду File>New…

  2. В открывшемся диалоговом окне New выберите вкладку Projects (рисунок 1.1).

Рисунок 1.1

  1. Выберите тип Win32 Console Application (рисунок 1.2).

  2. Введите имя проекта в текстовом поле name, например, first.

  3. Введите имя каталога размещения файлов проекта в текстовом поле Location. Рекомендуется для размещения проектов выделить специальную папку, например, D:\My_project. Если указанный вами каталог отсутствует, то он будет автоматически создан.

  4. Щелкните левой кнопкой мыши по кнопке ОК.

Рисунок 1.2

  1. После щелчка запускается мастер приложений Application Wizard, который открывает диалоговое окно Win32 Console Application с предложением определиться, какой подтип консольного приложения вам требуется создать (рисунок 1.3). Необходимо выбрать тип An empty project (пустой проект) и щелкнуть на кнопке Finish.

  2. Для добавления нового файла щелкните правой кнопкой мыши в окне рабочей области (рисунок 1.4) и выберите пункт Add > New Item (Добавить > Новый элемент). В результате откроется диалоговое окно New. Выберите тип файла С++file (.cpp). Введите имя файла (рисунок 1.5).

  3. В окне Editor можно набирать текст программы (рисунок 1.6).

  4. Для отладки готового проекта можно воспользоваться кнопкой .

Рисунок 1.3

Рисунок 1.4

Рисунок 1.5

Рисунок 1.6

11. Введите в окне Editor следующий текст программы:

#include <iostream>

using namespace std;

int main() { //1

cout<<"Hello, world! "<<endl; //2

return 0; //3

}

Рассмотрим каждую строку программы отдельно. В начале программы записана директива препроцессора1, по которой к исходному тексту программы подключается заголовочный файл <iostream>. Этот текстовый файл, который содержит описания элементов стандартной библиотеки, необходимых для выполнения ввода-вывода. Если говорить более конкретно, то в этом файле описан набор классов для управления вводом-выводом, стандартные объекты-потоки cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток << (вывода на экран) и извлечения из потока >> (ввода с клавиатуры). Все директивы препроцессора начинают записывать со знака #.

В C++ есть такое понятие как пространство имен. Каждая переменная, класс и т.п. принадлежат какому-то пространству имен. Для обращения к переменной "a" пространства имен "nmsps" нужно писать "nmsps::a". По умолчанию используется пространство имен с пустым именем, однако все стандартные функции расположены в пространстве имен std. Поэтому во второй строке программы записано using namespace std2. Если не писать "using namespace std;" то, например, вместо cout << "Hello world!", надо будет всякий раз писать std::cout << "Hello world!"; и так для каждой стандартной функции.

Программа на С++ состоит из функций. Функция – это именованная последовательность операторов. Функция состоит из заголовка и тела. Строка, помеченная комментарием 1, представляет собой заголовок главной (в данном случае единственной) функции программы. Она должна иметь имя main, указывающее, что именно с нее требуется начинать выполнение. Заголовок любой функции пишется по определенным правилам. За именем функции в скобках обычно следует список передаваемых ей параметров. В данном случае он пуст, но скобки необходимы, чтобы компилятор мог распознать, что это именно функция, а не другая конструкция языка. Перед именем записан тип значения (int – целое), возвращаемого функцией в точку ее вызова (в данном случае во внешнюю среду). По стандарту главная функция должна возвращать целочисленное значение. В данной программе эту функцию выполняет оператор 3.

После круглых скобок в фигурных скобках записывается тело функции, то есть операторы, которые требуется выполнить. Для удобства восприятия принято располагать тело с отступом в 3-4 позиции от заголовка.

Стандартный объект, с помощью которого выполняется вывод на экран, называется cout. Ему с помощью операции << передается то, что необходимо вывести. Для перехода на следующую строчку записывается слово endl. Это так называемый манипулятор. В строке, помеченной комментарием 2, осуществляется вывод на экран строки «Hello, world!».

В последней строке используется команда return 0. Обычно ноль возвращается в вызывающую функцию, когда программа была выполнена успешно. Другие значения могут быть возвращены, если произошла ошибка во время выполнения. Определенное число может указывать также тип ошибки. Например, если произошла ошибка при открытии файла, возвращаемое значение будет равно 1. Это существенно помогает в отладке программы. Результат выполнения программы показан на рисунке 1.7.

Рисунок 1.7

Примеры линейных задач [1]

Если в программе все операторы выполняются последовательно, один за другим, то такая программа называется линейной. Рассмотрим в качестве примера программу, вычисляющую результат по заданной формуле.

Задача 1.1. Расчет по формуле

Написать программу, которая переводит температуру в градусах по Фаренгейту в градусы Цельсия по формуле:

С=5/9(F-32), где С – температура по Цельсию, а F – температура по Фаренгейту.

Перед написанием программы нужно четко определить, что в нее требуется ввести и что мы должны получить в результате. В данном случае в качестве исходных данных выступает одно вещественное число, представляющее собой температуру по Цельсию, в качестве результата – другое вещественное число. Напишем первый вариант программы:

#include <iostream>

using namespace std;

int main(){ //1

float fahr, cels; //2

cout<<endl<<(" Введите температуру по Фаренгейту")<<endl;//3

cin >> fahr; //4

cels=5./9*(fahr-32); //5

cout << ("По Фаренгейту: ") << fahr;

cout << (",в градусах Цельсия: ") << cels << endl; //6

return 0; //7

}

Для хранения исходных данных и результатов надо выделить достаточно места в оперативной памяти. Для этого служит оператор 2. В данной программе требуется хранить два значения: температуру по Цельсию и температуру по Фаренгейту, поэтому в операторе определяются 2 переменные: fahr – для хранения температуры по фаренгейту и cels – по Цельсию.

При описании переменной нужно указать ее тип, чтобы компилятор знал, сколько места выделить памяти, как интерпретировать значение переменной. Поскольку температура может принимать не только целые значения, для переменной выбран вещественный тип float.

Для того чтобы пользователь программы знал, в какой момент требуется ввести с клавиатуры данные, применяется, так называемое, приглашение к вводу (оператор 3). На экран выводится указанная в операторе строка символов, и курсор переводится на следующую строку. Строка символов – это последовательность любых представимых в компьютере слов, заключенных в кавычки.

В операторе 4 выполняется ввод с клавиатуры одного числа в переменную fahr. Для этого используется стандартный объект cin и операция извлечения (чтения) >>.

Обратите внимания, что для корректного вычисления температуры в выражении cels=5./9*(fahr-32) число 5 представлено в формате 5.0, иначе константы 5 и 9 будут обе целочисленные, а результат их деления получится также целочисленным и дробная часть просто отбросится. Можно то же выражение написать и по-другому: cels=5*(fahr-32)/9.

Если набрать текст примера в интегрированной среде Microsoft Visual C++, откомпилировать программу и запустить на выполнение, то можно увидеть вместо приглашения «Введите температуру по Фаренгейту» набор неопознанных символов. Дело в том, что в операционной системе MS DOS для кодировки символов используется стандарт ASCII1, являющийся международным только в первой половине кодов (от 0 до 127). Вторая половина кодов (от 128 до 255) является национальной и отличается для разных стран. Например, в России для второй половины таблицы ASCII используется так называемая «альтернативная кодировка ГОСТа». В Windows же используется стандарт ANSI2, в первой половине совпадающий с ASCII, а во второй половине отличающийся от его российского варианта. Разработчики интегрированной среды Visual C++ решили, что режим консольных приложений должен имитировать работу в среде MS DOS, поэтому ввод-вывод выполняется в этом режиме в кодировке ASCII. В то же время в текстовом редакторе Visual C++, как и во всех Windows-приложениях, используется кодировка ANSI. C данной проблемой можно бороться двумя способами. Первый – перейти полностью на английский язык. Второй – использовать один из способов преобразования кодов знаков из одного стандарта в другой.

Существует несколько способов преобразования кодов знаков из одного стандарта в другой, самый простой — настройка локали.

Локаль – это набор параметров: набор символов, язык пользователя, страна, часовой пояс и др. Локаль необходима для быстрой настройки пользовательского интерфейса, в зависимости от географического положения. В С++ есть функция setlocale(), которая выполняет перекодировку символов в соответствии с требуемым языком. Функция setlocale() имеет два параметра, первый параметр – тип категории локали, в нашем случае LC_CTYPE – набор символов, второй параметр – значение локали. Таким образом, сначала устанавливаем нужную локаль, в нашем случае – "RUS", после чего, можно использовать кириллицу, для вывода сообщений в консоль.

После устранения проблемы с кодировками приглашение будет выводится корректно, но возникнет другая неприятность. После ввода значения по Фаренгейту в командной строке мелькнет результат вычислений, и оно сразу же закроется.

Чтобы программа завершалась после нажатия клавиши нужно добавить перед return 0 команду задержки экрана system("pause"). Теперь программа работает корректно. На рисунках 1.8 и 1.9 показаны результаты выполнения программы.

Рисунок 1.8

Рисунок 1.9

            1. Задача 1.2. Временной интервал

Заданы моменты начала и конца некоторого промежутка времени в часах, минутах и секундах (в пределах одних суток). Найти продолжительность этого промежутка в тех же единицах.

Окно проекта, реализующего данную задачу представлено на рисунке 1.10.

Для использования математических функций библиотеки С++ необходимо подключить к программе заголовочный файл <cmath>.

Список математических функций библиотеки С++ приведен в таблице 1.1.

Рисунок 1.10

Задача 1.3. Пример программы для вычисления нескольких математических функций.

#include <iostream>

#include <cmath>

using namespace std;

int main() {

cout<<"log10(10)= "<<log10(10.0)<<endl;//логарифм десятичный

cout<<"log10(1)= "<<log10(1.0)<< endl;

cout<<"log(2.718281)="<<log(2.718281)<<endl;//натуральный логарифм(по основанию экспоненты) exp = 2.718281

cout<<"sqrt(9)= "<<sqrt(9.0)<<endl;//корень квадратный

cout<<"pow(2,3)= "<<pow(2.0,3.0)<<endl;//два в кубе

cout<<"abs(0)= "<< abs(0.0)<<endl; // модуль от нуля

cout<<"abs(-5)= "<<abs(-5.0)<< endl;

cout<<"ceil(3.14)= "<<ceil(3.14)<<endl;//округление 3.14 до наименьшего целого, но не меньше чем 3.14

cout<<"ceil(-2.4)="<<ceil(-2.4)<<endl;//округление -2.4 до наименьшего целого, но не меньше чем -2.4

cout<<"floor(3.14)="<<floor(3.14)<<endl;//округление 3.14 до наибольшего целого, но не больше чем 3.14

cout<<"floor(-2.4)="<<floor(-2.4)<<endl;// округление -2.4 до наибольшего целого, но не больше чем -2.4

cout<<"fmod(2.4/2.0)="<<fmod(2.4,2.0)<<endl;//остаток от деления 2.4/2

system("pause");

return 0;

}