Лаб.раб. Министерство образования и науки российской федерации пензенский государственный
Скачать 0.8 Mb.
|
Лабораторнаяработа№1Тема: "Программирование алгоритмов линейной структуры" Цель работы: изучение основных типов данных, способов описания переменных различных типов, операторов присваивания и организации ввода – вывода. Краткие теоретические сведения: Алгоритм – это последовательность действий, выполняемых по строго определенным правилам, однозначно определяющая процесс решения задачи и заведомо приводящая к её решению за некоторое количество шагов. Алгоритмизация – разработка формального метода решения практической задачи с возможностью реализации в виде программы для ЭВМ. Изображение алгоритма в виде схемы выполняется в соответствии с ГОСТ 19.701–90 Единой системы программной документации «Схемы алгоритмов, программ, данных и систем». Структура программ для Microsoft Visual Studio.
В строке 1 говорится о точке входа для консольного приложения, это значит, что данную программу можно запустить через командную строку Windows указав имя программы, к примеру, такое struct_program.cpp. Строка 1 является однострочным комментарием, так как начинается с символов //. В строке 2 подключен заголовочный файл "stdafx.h". Данный файл похож на контейнер, так как в нем подключены основные препроцессорные директивы (те, что подключил компилятор, при создании консольного приложения), и вспомогательные (подключенные программистом). include — директива препроцессора, т. е. сообщение препроцессору. Строки, начинающиеся с символа # обрабатываются препроцессором до компиляции программы. заголовочные файлы: Библиотека cmath определяет набор функций для выполнения общих математических операций и преобразований. Математические функции: тригонометрические функции: cos-вычисление косинуса угла, переведенного в радианы; sin-вычисление синуса угла, переведенного в радианы; tan-вычисление тангенса угла, переведенного в радианы; acos-вычисление арккосинуса, результат будет в радианах; asin-вычисление арксинуса, результат будет в радианах; atan-вычисление арктангенса, возвращаемый результат будет в радианах; atan2-вычисление арктангенса и квадранта по координатам x и y, возвращаемый результат будет в радианах; гиперболические функции: cosh-вычисление гиперболического косинуса; sinh-вычисление гиперболического синуса; tanh-вычисление гиперболического тангенса; экспоненциальные и логарифмические функции: exp-вычисление экспоненты; frexp-получить мантиссу и показатель степени двойки; ldexp-генерация числа по значению мантиссы и показателю степени; log-натуральный логарифм; log10-десятичный логарифм; modf-разделение вещественного значения на дробную и целую части; функции степени: pow-возведение числа в степень. Пример использования функции; sqrt-корень квадратный; округление, модуль и другие функции ceil-округление до наименьшего целого значения; fabs-вычислить модуль значения; floor-округление до наибольшего целого значения; fmod-остаток от деления числителя на знаменатель. Пример использования функций: #include int main() { std::cout << "5.0 ^ 4 = " << pow (5.0, 4) << std::endl; std::cout << "2.77 ^ 9 = " << pow (2.77, 9) << std::endl; std::cout << "12.01 ^ 11.54 = " << pow (12.01, 11.54) << std::endl; std::cout << "sqrt(" << param << ") = " << sqrt(param) // вычисляем корень квадратный << std::endl; double param = 60.0; // угол 60 градусов std::cout << "Косинус " << param << " градусов = " << cos(param * PI / 180) // вычисляем косинус угла, //переведённого в радианы << std::endl; double param = 0.5; std::cout << "Арксинус " << param << " = " << (asin (param) * 180.0 / PI) // вычисляем арксинус << " градусов " << std::endl; double val = 5.5, result; result = log (val); // вычисляем натуральный логарифм std::cout << "ln(" << val << ") = " << result << std::endl; return 0; } Файлы кода C++ (с расширением .cpp) не являются единственными файлами в проектах и программах. Есть еще один тип файлов, который называется заголовочный файл (файл заголовка, подключаемый файл или header file). Они имеют расширение .h, но иногда их можно увидеть и с расширением .hpp или вообще без расширения. Целью заголовочных файлов является удобное хранение предварительных объявлений для использования другими файлами. Всё содержимое из заголовочного файла копируется в файл *.срр, т.е. всё содержимое становится доступным для использования. Заголовочные файлы: cstdio (stdio.h)-заголовочный файл для выполнения операций ввода/вывода; cstring (string.h)-заголовочный файл для работы со строками; iostream-заголовочный файл с классами, функциями и переменными для организации ввода-вывода. Для удобства в библиотеке определены три стандартных объекта-потока: cin – объект класса istream, соответствующий стандартному вводу. В общем случае он позволяет читать данные с терминала пользователя; cout – объект класса ostream, соответствующий стандартному выводу. В общем случае он позволяет выводить данные на терминал пользователя; cerr – объект класса ostream, соответствующий стандартному выводу для ошибок. В этот поток мы направляем сообщения об ошибках программы. Вывод осуществляется, как правило, с помощью перегруженного оператора сдвига влево (<<), а ввод – с помощью оператора сдвига вправо (>>). Основные типы данных представлены в таблице 1. Таблица 1 — Типы данных С++
Способы ввода данных в языке возможно двумя способами: форматированные ввод-вывод или потоковый. При форматированном способе используются операторы ввода scanf вывода printf. Синтаксис операторов имеет вид: scanf(<строка описания форматов> [, <список ввода>]); printf(<строка описания форматов> [, <список вывода>]); Строка описания форматов состоит из обычных символов, специальных управляющих последовательностей символов и спецификаций формата. Обычные символы и управляющие последовательности просто копируются в стандартный выходной поток в порядке их появления. Спецификации формата начинаются с символа % и заканчиваются символом, определяющим тип выводимого значения. Кроме того, спецификации формата могут содержать символы и цифры для управления видом выводимого значения (подробно см. ниже). Список вывода состоит из переменных и/или констант, значения которых должны быть выведены. Количество спецификаций формата должно быть равно количеству выводимых значений, которые указываются в списке вывода. К управляющим последовательностям относятся последовательности символов, представленных в таблице 2. Таблица 2 — Управляющие символы
Иногда при работе операторов используются спецификаторы форматов (таблица 3-5). Таблица 3 — Спецификаторы формата для оператора printf
Кроме того, к командам формата могут быть применены модификаторы l и h (таблица 4). Таблица 4
Таблица 5 — Спецификаторы формата для оператора scanf
Примеры использования спецификаторов и модификаторов в операторах ввода-вывода: int m, n, x; double y; char c = '&'; char str[] = "String"; scanf("%d%d", &m, &n); // Ввод десятичных целых чисел в переменные m и n printf("m = %5d\nn = %5d\n", m, n); // Вывод переменных m и n в десятичном целом формате, используются как минимум 5 знаков scanf("%d", &x); // Ввод десятичного целого числа в переменную x printf("%#010x\n", x); // Вывод переменной x в шестнадцатеричной системе, используются 10 знаков, // впереди добавляются нули и символы 0х scanf("%lf", &y); // Ввод вещественного числа в переменную y printf("y = %7.2lf\n", y); // Вывод вещественной переменной, используются как минимум 7 знаков, из них 2 – после точки printf("c = %c\n", c); // Вывод одного символа printf("%.4s\n", str); } Составим программу на языке С++ для умножения двух чисел. //Подключениестандартныхбиблиотек: #include #include using namespace std; // пространствоимен,гдеопределяютсяидентификаторы void main() //заголовокглавнойфункциипрограммы { //операторныескобки setlocale(0, “Russian”); //установкавыводасообщенийнарусскомязыке float x,y,z; //описание переменных (имя и тип) system(“cls”); //функция очистки экрана cout<<"Введите числа x,y: "< cin>>x>>y; //считать2вещ.числа, записатьихпоадресуперем.x,y z=x*y; cout<<"Произведение="< system(“pause”); } //конецглавнойфункции Пример выполнения задания. Задание: вычислить значение функции sin3 ccos2 a2 y 5sindb15 при A 9,5; B1,365; C 6,5; D 5 . Использовать два варианта ввода исходных данных и вывода результатов: возможности библиотеки функций языка С и библиотеки классов языка С++. Схема программы для задания представлена на рисунке 3:
Рисунок 3 Текст программы с использованием библиотеки функций языка С (форматированный ввод-вывод) для ввода исходных данных и вывода результатов: //Лабораторная работа 1 //с использованием библиотеки классов языка С++ // форматированный ввод-вывод # include # include { setlocale(0, “Russian”); //Вывод сообщений на русском языке const double k1=2.0; const double k2= 15.0; double a, b, c, d, s1, s2, s3, y; system(“cls”); //Очистка экрана printf(“Введите значения переменных a, b, c, d:\n”); scanf(“%lf%lf%lf%lf”, &a, &b, &c, &d); s1=pow(sin(c), 3); s2=pow(cos(a), 2 ); s3=pow(sin(b), d ); y=(s1*s2)/(5*s3) + k1/k2; printf(“Искомое значение y=%lf”, y); system(“pause”); //Пауза } Текст программы с использованием библиотеки классов языка С++ (потоковый ввод-вывод) для ввода исходных данных и вывода результатов: //Лабораторная работа 1 //с использованием библиотеки классов языка С++ // потоковый ввод-вывод # include # include { setlocale(0, “Russian”); //Вывод сообщений на русском языке const double k1= 2.0; const double k2= 15.0; double a, b, c, d, s1, s2, s3, y; system(“cls”); //Очистка экрана cout<<“Введите значения переменных a, b, c, d:”< s1=pow(sin(c), 3); s2=pow(cos(a), 2 ); s3=pow(sin(b), d ); y=(s1*s2)/(5*s3) + k1/k2; cout<<“Искомое значение y=”< } Контрольные вопросы Структура программы на языке С++ Директивы препроцессора, заголовочные файлы, прототипы библиотечных функций, их вызовы. Этапы обработки текста программы. Включение текстов из заголовочных файлов. Главная функция программы. Структура функции, ее заголовок. Определение переменных в программе. Типы переменных. Функции форматного ввода-вывода в стиле С. Ввод-вывод данных потоком в стиле С++. Операции, выражения. Оператор присваивания. Варианты заданий Вычислить выражение, использовать два варианта ввода исходных данных и вывода результатов: возможности библиотеки функций языка С и библиотеки классов языка С++: 1. Y arccos A B B lgA2 B2 при A 5, B 2,35 . B 2 2. A B2 2 при A 6,84; B 3,22; C 4; D 2,5 . Y B C D Y lg tgA при A 4; B13,6 . Y sin 3 c cos2 a 5sin db при A 9.5; B1,365; C 6,6; D 3. 5. Y 2A arcsin 3,14 при A 8; B 5,6 . B 6. Y 2BlnAB D2 при A 5,6; B 2,8; D 3 . 7. Y 2 AD 4C2 при A 5,95; C 3,6; D 3 . 3 8. Y 0,5lg1 sin B C D при 1 sin A A 3,14; B 1,57; C10.5; D 8. 9. 1 B3 2 при A 2,6; B 56,6; C 35; D 20,3 . Y2 10 CD A 10. A/ B 1 2 при A 6; B1,64; C 0,16; D 0,8 . Y C/ D 1 AB Y при A 25; B 8,5; C 0,56; D 0,01 . C DA C Y sinA B C D2 при A 8,4; B 6,4; C 4; D 7 . 13. Y при A 25; B 8; C12,5 . 14. Y A2 B2 C2 lnA B C 15. Y A D3 B C2 при при A 0,6; B 0,5; C 6 . A 0,3; B 2,8; C 4,5; D1,35 . 3 2 16. Y 2sin(3 2)cos2 (5 2) при 1,57 . 17. Y 2 2 cos sin 2 при 2,09 . 4 18. Y sin 2 sin 5 sin 3 cos 1 2sin 2 2 19. Y 1 1 sin 2 2 cos 2 4 при 4,71. при 1,57 . 20. Y 4cos cos 5 cos 4 при 2,09 . 2 2 21. Y arccos A B B lgA2 B2 при A 5, B 2,35 . B 2 22. A B2 2 при A 6,84; B 3,22; C 4; D 2,5 . Y B C D Y lg tgA при A 4; B13,6 . Y sin 3 c cos2 a 5sin db при A 9.5; B1,365; C 6,6; D 3. 25. Y 2A arcsin 3,14 при A 8; B 5,6 . B |