Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Операнд_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 - Тригонометрические и гиперболические функции
Таблица 1.9 - Другие наиболее часто используемые
Пример:
#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++ выводит сразу все сообщения об ошибках, обнаруженных в программе. Иногда одна синтаксическая ошибка может привести к неправильной интерпретации нескольких строк программы и, как следствие, к сообщениям о синтаксических ошибках в тех строках, где их в действительности нет. После исправления действительной ошибки и повторной компиляции эти сообщения исчезают. Кроме сообщений об ошибках выводит предупреждения (warnings). Предупреждения означают, что компилятор обнаружил в программе фрагмент, который может быть ошибочным. Таким образом, компилятор пытается предотвратить возможные ошибки времени выполнения, и даже логические ошибки. Структура предупреждающего сообщения аналогична структуре сообщения об ошибках. Справочная система также предоставляет информацию о предупреждениях компилятора. Само появление предупреждений еще не означает, что вы обязательно должны что-то изменить в тексте программы, но к ним необходимо относиться к ним внимательно. Аппаратура и материалы. Для выполнения лабораторной работы необходим персональный компьютер со следующими характеристиками: процессор 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. Названия лабораторной работы. 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++ if и switch, позволяющего реализовывать разветвляющиеся алгоритмы.
|