Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Операнд_1 ? операнд_2 : операнд_3






Первый операнд может иметь арифметический тип или быть указателем. Он оце­нивается с точки зрения его эквивалентности нулю (операнд, равный нулю, рас­сматривается как false, не равный пулю - как true). Если результат вычисления первого операнда равен true, то результатом условной операции будет значение второго операнда, иначе - третьего операнда. Вычисляется всегда либо второй операнд, либо третий. Их тип может различаться. Условная операция является сокращен­ной формой условного оператора if.

 

#include < stdio.h>

int main()

{

int a = 11, b = 4, max;

max = (b > a)? b: a;

printf(“Наибольшее число: %d”, max);

return 0;

}

 

Результат работы программы:

Наибольшее число: 11.

Выражения языка С++. В ыражения состоят из операндов, знаков операций и скобок и используются для вычисления некоторого значения определенного типа. Каждый операнд является, в свою очередь, выражением или одним из его частных случаев ­- константой или переменной. Примеры выражений:

 

(а + 0.12) / 6

х & & у | |! z

(t * sin(x) - 1.05e4)/((2 * k + 2) * (2 * k + 3))

 

Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении за­писано несколько операций одинакового приоритета, унарные операции, условная операция и операции присваивания выполняются справа налево, остальные - сле­ва направо. Например, а = b = с означает а = (b = с), а а + b + с означает (а + b) + с. Порядок вычисления подвыражений внутри выражений не определен: например, нельзя считать, что в выражении (sin(x + 2) + cos (у + 1)) обращение к синусу бу­дет выполнено раньше, чем к косинусу, и что х + 2 будет вычислено раньше, чем y + 1.

Результат вычисления выражения характеризуется значением и типом. Напри­мер, если а и b - переменные целого типа и описаны так:

 

int а = 2, b = 5;

 

то выражение а + b имеет значение 7 и тип int, а выражение а = b имеет значение, равное помещенному в переменную а (в данному случае 5) и тип, совпадающий с типом этой переменной. Таким образом, в C++ допустимы выражения вида а = b = с: сначала вычисляется выражение b = с, а затем его результат становится правым операндом для операции присваивания переменной а.

В выражение могут входить операнды различных типов. Если операнды имеют одинаковый тип, то результат операции будет иметь тот же тип. Если операнды разного типа, перед вычислениями выполняются преобразования типов по опре­деленным правилам, обеспечивающим преобразование более коротких типов в более длинные для сохранения значимости и точности.

Преобразования бывают двух типов:

- изменяющие внутреннее представление величин (с потерей точности или без потери точности);

- изменяющие только интерпретацию внутреннего представления.

К первому типу относится, например, преобразование целого числа в веществен­ное (без потери точности) и наоборот (возможно, с потерей точности), ко второ­му - преобразование знакового целого в беззнаковое.

В любом случае величины типов char, signed char, unsigned char, short int и unsigned short int преобразуются в тип int, если он может представить все значе­ния, или в unsigned int в противном случае.

После этого операнды преобразуются к типу наиболее длинного из них, и он ис­пользуется как тип результата. Программист может задать преобразования типа явным образом.

Стандартные математические функции. В языке C для математических вычислений используются стандартные математические функции, декларированные в заголовочном файле math.h (табл. 1.8 и табл. 1.9).

 

Таблица 1.8 - Тригонометрические и гиперболические функции

Тригонометрические функции (угол задается в радианах) Обратные тригонометрические функции (возвращают угол в радианах) Гиперболические функции
sin(x) - синус asin(x) - арксинус sinh(x) - гиперболический синус
cos(x) - косинус acos(x) - арккосинус cosh(x) - гиперболический косинус
tan(x) - тангенс atan(x) - арктангенс tanh(x) - гиперболический тангенс
  atan2(y, x) - угол в полярных координатах точки (x, y) в диапазоне .  

 

Таблица 1.9 - Другие наиболее часто используемые
математические функции

Функция Действие
hypot(x, y) вычисляет гипотенузу прямоугольного треугольника с катетами x и y
exp(x) экспоненциальная функция,
log(x) натуральный логарифм, ln(x), x > 0
log10(x) десятичный логарифм, lg(x), x > 0
pow(x, y) вычисляет . Ошибка области, если x = 0 и y ≤ 0 или x < 0, y - не целое
pow10(p) Вычисляет . Результат вычисляется в виде double. Все аргументы считаются допустимыми, p типа int.
sqrt(x) корень квадратный из x, x ≥ 0
ceil(x) находит наименьшее целое типа double, не меньшее x ceil(6.25) = 6.00, ceil(-6.25) = -6.00
floor(x) находит наибольшее целое типа double не превышающее значение x. floor(6.25) = 6.00, floor(-6.25) = -7.00
fabs(x) абсолютное значение (модуль) числа с плавающей точкой fabs(-6.25) = 6.25

 

Пример:

 

#include " stdafx.h"

#include " math.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

double x, z, s;

const double a=0.5, b=1.08, c=2.1, m=0.7;

z=(sin(x)/sqrt(1+m*m*sin(x*x))-c*m*log10(m*x));

cout< < " z=";

cout< < z;

s=(exp(-a*x)*sqrt(x+1)+exp(-b*x)*sqrt(x+1.5));

cout< < " \ns=";

cout< < s;

getch();

return 0;

}

 

В этом примере вычисляется функция:

при заданных значениях: х = 1.7; a = 0.5; b =1.08; c = 2.1; m =0.7.

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

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

К ошибкам времени выполнения программы относятся такие, которые возникают не в результате нарушения синтаксиса C++, а в результате выполнения програм­мой каких-либо недопустимых действий (например, попытка разделить число на нуль или записать данные на заполненный диск). Некоторые из этих ошибок от­личаются тем, что возникают лишь при определенных условиях, например при заполнении диска или обращении в нуль значения какой-либо переменной. Как правило, при возникновении ошибки времени выполнения программа выдает специальное сообщение об ошибке (и часто ее выполнение на этом завершается), Логические ошибки в программе относятся к самому «труднонаходимому» типу ошибок, поскольку их зачастую невозможно выявить формальными методами. При наличии логических ошибок программа выполняется и компилируется без проблем, но делает не то, что ждет от нее программист. Обнаружить и устранить логические ошибки (а также ошибки времени выполнения) в программе можно с помощью тестирования и отладки.

Сообщение об ошибке содержит указание на имя файла и строку, в которой обнаруже­на ошибка, код ошибки и ее краткое описание. Более подробные сведения об ошибке можно получить в справочной системе. Для этого нужно щелкнуть на стро­ке сообщения об ошибке один раз (при этом строка будет выделена) и нажать кла­вишу F1. Если щелкнуть на строке сообщения об ошибке дважды, в окне редактора исходных текстов будет выделена строка, в которой обнаружена ошибка. Visual C++ выводит сразу все сообщения об ошибках, обнаруженных в программе.

Иногда одна синтаксическая ошибка может привести к неправильной интерпре­тации нескольких строк программы и, как следствие, к сообщениям о синтакси­ческих ошибках в тех строках, где их в действительности нет. После исправления действительной ошибки и повторной компиляции эти сообщения исчезают.

Кроме сообщений об ошибках выводит предупреждения (war­nings). Предупреждения означают, что компилятор обнаружил в программе фраг­мент, который может быть ошибочным. Таким образом, компилятор пытается пре­дотвратить возможные ошибки времени выполнения, и даже логические ошибки. Структура предупреждающего сообщения аналогична структуре сообщения об ошибках. Справочная система также предоставляет информацию о предупрежде­ниях компилятора. Само появление предупреждений еще не означает, что вы обя­зательно должны что-то изменить в тексте программы, но к ним необходимо относиться к ним внимательно.

Аппаратура и материалы. Для выполнения лабораторной работы необходим персональный компьютер со следующими характеристиками: процессор Intel Pentium-совместимый с тактовой частотой 800 МГц и выше, оперативная память - не менее 64 Мбайт, свободное дисковое пространство - не менее 500 Мбайт, устройство для чтения компакт-дисков, монитор типа Super VGA (число цветов от 256) с диагональю не менее 15². Программное обеспечение - операционная система Windows2000/XP и выше, среда разработки приложений Microsoft Visual Studio.

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

Методика и порядок выполнения работы. Перед выполнением лабораторной работы каждый студент получает индивидуальное задание. Защита лабораторной работы происходит только после его выполнения (индивидуального задания). При защите лабораторной работы студент отвечает на контрольные вопросы, приведенные в конце, и поясняет выполненное индивидуальное задание. Ход защиты лабораторной работы контролируется преподавателем.Номер индивидуального задания студента , где - номер студента в журнале преподавателя. Порядок выполнения работы:

1. Оформить программу, указав свою фамилию и инициалы, группу с использованием однострочного и многострочного комментариев.

2. Объявить и проинициализировать переменные основных типов (int, double, char).

3. По инструкции cin > > ввести одно из предложенных значений переменных с клавиатуры (int, double).

4. Оставшиеся значения определить как константы, используя константные переменные.

5. Вычислить значения выражение по заданным расчетным формулам и наборам исходных данных.

6. Инструкцией cout < < вывести на экран значения исходных данных и результаты вычислений, сопровождая вывод именами выводимых величин на экран. При переводе на новую строку использовать управляющий символ ‘/n’ и манипулятор endl.

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

Индивидуальное задание №1. Вариант:

Задание   Задание
1. при х = 1.426; у = - 1.220; z = 3.5.   2.   при х = 1.4; a = 0.5; b = 3.1.
3. при х = 1.825; у = 18.225; z = - 3.289.   4. при х = 0.3; a = 0.5; b = 2.9.
5. при х = 0.335; у = 0.025.   6. при х = 1.426; у = -0.823; z = 2.724.
7.   при a = - 0.5; b = 1.7; t = 0.44.   8. при х = 0.9; m = 1.2; c = 2.4.
9. при a = - 1.5; b = 15.5; x = -2.9.   10.   при х = 5.4; у = 1.9; b = 3.5; m = 0.2.
11. при a = 16.5; b = 3.4; x = 0.61.   12. при х = 0.54; a = 1.1; b = - 1.22.
13. при a = 0.7; b = 0.05; x = 0.5.   14. при х = 1.82; у = 18.23; z = 3.44.
15. при х = 0.2; a = 1.1; b = 0.04.   16.   при a = 1.5; b = 15.6; t = 0.9.
17. при m = 2; c = -1; t = 1.2; b = 0.7.   18.   при b = 0.7; c = -1.8; t = 1.2.
19. при a = 3.2; b = 17.5; x =- 4.8.   20. при a = 3.44; b = 17.52; x=- 4.8, z = 5.34.
21. при a = 10.2; b = 9.2; x = 2.2; c = 0.5.   22. при х = 3.23; a = 10.23; b = 9.84; c = 0.5.
23. при a = 0.3; b = 0.9; x = 0.61.   24. при a =0.001; b = 5.8; x = 1.77.

 

Содержание отчета и его форма. Отчет по лабораторной работе должен состоять из:

1. Названия лабораторной работы.

2. Цели и содержания лабораторной работы.

3. Ответов на контрольные вопросы лабораторной работы.

4. Формулировки индивидуального задания и порядка его выполнения.

Отчет о выполнении лабораторной работы в письменном виде сдается преподавателю.

Вопросы для защиты работы

1. Назовите преимущества языка С++.

2. Какие окна включает в себя рабочий стол Visual C++?

3. Каковы этапы создания консольного приложения в среде Visual C++?

4. Какова структура программы, написанной на языке C++?

5. Какие существуют основные типы данных в языке C++? Дать их назначение.

6. Каково назначение директивы #include в языке C++?

7. Каково назначение функций printf() и puts() в языке C++?

8. Каково назначение функций clrscr(), getch() и cputs() в языке C++?

9. Каким образом осуществляется потоковый ввод-вывод в языке C++? Каково назначение объектов cin и cout?

10. Что такое литерал?

11. Как производится объявление переменной и константной переменной в языке C++? В чем отличие присваивания от инициализации?

12. Какие спецификаторы используются для задания класса памяти?

13. Какое существует деление операций в соответствии с количеством операндов, которые в них используются?

14. Из чего состоят выражения?

15. Какие существуют математические функции в языке C++?

16. Каким образом осуществляется диагностирование ошибок компиляции в среде Visual C++?

 

Пример выполнения лабораторной работы №1:

1. Формулировка индивидуального задания:

Вычислить:

при х = 1.7; a = 0.5; b =1.08; c = 2.1; m =0.7.

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

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

/* Горошко А.А.

гр. БАС-051*/

 

#include " stdafx.h"

#include < iostream>

#include " conio.h"

#include " math.h"

#include " windows.h"

 

using namespace std;

 

int _tmain(int argc, _TCHAR* argv[])

{

setlocale(LC_ALL, " Russian");

double x, z, s;

//const double a = 0.5, b = 1.08, c = 2.1, m = 0.7;

double a, b, c, m;

 

cout< < " Введите переменную" < < " \nx=";

cin > > x;

cout< < " Введите переменную" < < " \na=";

cin > > a;

cout< < " Введите переменную" < < " \nb=";

cin > > b;

cout< < " Введите переменную" < < " \nc=";

cin > > c;

cout< < " Введите переменную" < < " \nm=";

cin > > m;

 

z=(sin(x)/sqrt(1+m*m*sin(x*x))-c*m*log10(m*x));

cout< < " z=";

cout< < z;

s=(exp(-a*x)*sqrt(x+1)+exp(-b*x)*sqrt(x+1.5));

cout< < " \ns=";

cout< < s;

 

getch();

 

return 0;

}

3. Результаты работы программы:

Лабораторная работа №2.
Программирование алгоритмов разветвляющейся структуры
в языке C++

 

Цель работы и содержание: приобретение навыков программирования разветвляющихся алгоритмов. Освоить операторы языка C++ if и switch, позволяющего реализовывать разветвляющиеся алгоритмы.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.02 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал