Скачиваний:
4
Добавлен:
20.05.2014
Размер:
301.57 Кб
Скачать

If (условие) { гр1 } еlse { гр2 } (6.3)

Возможна более короткая форма его:

If (условие) { гр1 } (6.4)

Слова if , else означают “если”, “иначе” , а гр1, гр2 – это две группы

операторов, образующие два блока: then-блок и else-блок (then означает "тогда").

Если условие выполняется, то работает первый блок и затем переход на конец if .

Если условие не выполняется, то работает else-блок. В отсутствие else-блока

продолжается выполнение программы

В условии обычно используются операции отношения и логические функции.

Пример:

if ( d = = 0 ) { d = p + 1; cout << d << endl; } else { d++; p= d;} // (6.5)

Основные правила.

1. Оба блока могут состоять из любого количества любых операторов.

  1. Блок else ( co словом else) может отсутствовать и тогда в случае

невыполнения условия происходит переход на конец оператора if.

3. Если гр1 или гр2 состоит только из одного оператора, то фигурные

скобки можно опустить.

4. Оба блока гр1, гр2 могут иметь вложенную структуру по аналогии с

вложенными циклами.

  1. Для сложных операторов if с неоднозначным соответствием слов

if и else действует правило: else относится к ближайшему

предшествующему if соответствующего блока.

  1. Для более четкого выделения условного оператора можно после

последней закрывающей скобки поставить точку с запятой, что

означает добавление пустого оператора после завершения if.

Пример сложного оператора if .

int a, b, c; / / (6.6)

cout << “Введите a,b”; cin >> a >> b;

if(a == 0 && b == 0) cout << “a=b=0”<<endl;

if(a > b) c=1; else

if (a <0) c=2; else c=3;

cout <<" a="<< a <<" b="<< b <<" c="<< c <<endl;

Попробуйте предсказать результат работы этой программы при произвольно

выбранных значениях a, b и проверьте себя, выполнив программу на ПК.

Кроме оператора if, условие можно использовать в выражении, которое

содержит условную операцию ( ?: ) с тремя операндами:

вр1 ? вр2 : вр3 ;

Эта форма использования условия похожа на оператор if в MathCAD.

Здесь вр1, вр2, вр3 – три любых выражения, причем первое обычно

является условием. Если первое выражение не равно нулю (это “истина”),

то значением всего выражения будет вр2, а иначе вр3.

Примеры :

max = (x > y) ? x : y ; a = ( x > 0) ? x : -x ; (6.7)

Отметим, что в примерах (6.7) тот же результат можно получить

с помощью встроенных функций max( x, y ) и abs(x), fabs (x).

6.4. Работа с файлами

В разделе 5.2 рассмотрели ввод с клавиатуры и вывод на экран.

Для этого использовались потоки cout, cin:

программа  поток cout  экран, программа  поток cin  экран.

Эти потоки называют стандартными. Но при выводе и вводе данных в работающей

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

обычно нужно либо распечатать, либо передать через файл в другую программу.

Для файлов вместо стандартных потоков сin, cout должны быть объявлены

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

в виде связи с именем:

программа  поток  файл,

программа  поток  файл

Программа может использовать много потоков и файлов.

Поток, как и обычные переменные, должен быть описан, а затем подключен к

конкретному файлу. Далее программа взаимодействует только с потоком,

используя его имя. Следовательно, при работе с файлом имеем два имени:

имя файла и имя потока.

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

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

ifstream - для ввода (чтения) данных из файла,

ofstream - для вывода (записи) данных в файл,

fstream - для чтения и записи в один файл.

Есть несколько способов открытия файла, но рассмотрим самый простой:

открытие файла в объявлении потока, например,

ifstream fr1 (“ \ \ Papka1 \ \ vvod.txt ” ) ;

ofstream fr2 (“ \ \ Papka1 \ \ rez.txt ” ) ; (6.8)

fstream fr3 (“ revv.txt ” ) ;

Для файлов в рабочей папке путь можно не указывать.

Эти операторы похожи на объявления простых переменных вида

int fr4 = 1 ;

но значение не присваивается, а передается в скобках, как для функций.

Позже в лекциях по ООП будет показано, что для объявлений (6.8) вызываются конструкторы классов ifstream, ofstream, fstream, но пока классы рассматривать

не будем и ограничимся термином “ типы ” .

Выбранное имя потока, например, fr2 в (6.8), далее используется в операторах

вывода вместо имени cout. Например, вместо

cout << x; записываем fr2 << x;

Следует обратить внимание на обязательное использование двух косых черт (обратных

слэшей) вместо одной в текстовой константе, определяющей путь к файлу. Один

символ \ компилятор воспринимает как признак управляющего символа и поэтому

будет ошибка.

Правило: в кавычках для пути к файлу вместо \ нужно использовать \ \

Указанные для вывода файлы будут создаваться заново при каждом выполнении программы. Чтобы файл создавался один раз и была возможность его дополнения, нужно в скобках после имени файла добавить втoрой параметр, например,

ofstream fr (“ \ \ Рарка1 \ \ rezx.txt” , ios : : app ); (6.9)

Здесь ios::app - это режим открытия файла с возможностью дозаписи в конец. Операция :: ( два двоеточия) называется операцией уточнения.

Для работы с потоками в текст программы должен быть включен заголовочный файл

<fstream.h>

Если подключен этот файл, то заголовочный файл <iostream.h> не нужен.

Пример программы.

#include <fstream.h>

#include <conio.h> // for getch ( )

#include <stdlib.h> // for exit ( )

Соседние файлы в папке Шпора по информатике