Практикум на ЭВМ технология программирования в среде С++




Скачать 409.93 Kb.
НазваниеПрактикум на ЭВМ технология программирования в среде С++
страница3/12
Дата публикации31.05.2014
Размер409.93 Kb.
ТипДокументы
literature-edu.ru > Курсовая работа > Документы
1   2   3   4   5   6   7   8   9   ...   12

1.3Вывод символов.


Допустим, что в программе объявлена потоковая переменная out File, с которой связано имя текстового файла, заданное строковой переменной fileName.

ifstream outFile(fileName);

При создании файл пуст, а курсор устанавливается в его начало (или конец). Если файл уже существует, его содержимое при открытии будет стерто, а курсор — установлен в его начало (или конец).

Операторы вывода << и функции, использующие поток cin, также могут работать с файлами. Допустим, в программе объявлены символьная переменная ch и переменная потока outFile. Тогда операторы

outFile << ch;

и

outFile.put(); означают следующее.

Записать значение переменной ch в позицию,

на которую установлен курсор файла Переместить курсор файла на следующую позицию

Иллюстрация работы этих операторов приведена на рис. А.15. Обратите внимание, что если бы переменная X содержала символ \n, то предыдущие операторы записали бы в файл признак конца строки.



Перед выполнением оператора После выполнения оператора;

Рис. А.1.5. Эффект применения оператора outFile«ch к текстовому файлу outFile, когда переменная ch содержит символ X

Кроме того, с помощью оператора << в текстовый файл можно выводить целые строки (см. раздел "Строки класса string

1.4Закрыть файл.


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

myFile.close();

Закрытый файл становится недоступным для ввода или вывода, пока он снова не будет открыт.

1.5Числовые данные в текстовых файлах.


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

При считывании из текстового файла значения переменной типа int система ожидает ввода последовательности символов, которые потом можно преобразовать в целое число. Например, если текстовый файл содержит символы 2, 3 и 4, то при считывании этих символов в целочисленную переменную х система пре­образует их во внутреннее представление целого числа 234 и присвоит его пере­менной х. Точнее говоря, текстовый файл содержит ASCII-коды символов 2, 3 и 4, т.е. десятичные числа 50, 51 и 52. Однако эти коды представлены в двоичном виде на рис. А.16, а. При считывании этих кодов в целочисленную переменную х, она содержит внутреннее двоичное представление целого числа 234, которые представлены в двоичном виде на рис. рис. А.16, б. Следовательно, представление цифр в текстовом файле отличается от представления соответствующих целых чисел в памяти компьютера.

а) Текстовый файл




Рис. А.1.6. Двоичная система кодирования: а) двоичное представление ASCII-символов 2, 3 и 4, содержащихся в текстовом файле; б) внутреннее двоичное представление целого числа 234

В заключение рассмотрим случай, когда текстовый файл содержит целые числа и связан с потоковой переменной inFile, а переменная х имеет тип int. Тогда оператор

inFile >> х; означает следующее.

  • Найти первый непробельный символ

  • Преобразовать в целое число последовательность символов, начинающуюся с текущей позиции курсора файла inFile и заканчивающуюся непосредственно перед следующим символом с, не являющимся цифрой

  • Присвоить полученное целое число переменной х

  • Переместить курсор на символ с

Последовательность этих шагов продемонстрирована на рис. А. 17. Учтите, что если эта последовательность начинается с символа, отличающегося от знаков +, -, а также цифр 0 . . ., 9, считывание будет прекращено. Например, система не может преобразовать последовательность символов wl23 в целое число. Однако символы 123 из последовательности 123wrt будут успешно считаны.














Рис. А.1.7. Считывание целого числа из текстового файла

Когда программа записывает в текстовый файл целое число, например, число 234, система сначала преобразует его внутреннее двоичное представление (0000000011101010) в последовательность символов 2, 3, 4, а затем записывает эти символы в файл. Если переменная outFile является переменной потока вывода, а переменная х имеет целочисленный тип, то оператор

outFile <<х;

означает следующее.

  • Преобразовать значение переменной х в последовательность

  • символов

  • Добавить эту последовательность в файл Установить курсор файла на позицию, следующую за последним записанным символом

Приведенная ниже функция считывает и выводит на экран текстовый файл, содержащий целые числа.

void echoFile(string fileName)

{

ifstream inFile (fileName) ,

int x;

while (inFile >> x) // Считывание до конца файла

cout << х << " ";

cout << endl;

inFile.close();

}//Конец функции echoFile

Эта функция игнорирует символы конца строки и выводит все целые числа в одну строку.

Допустим, нам нужно вывести на экран все строки, содержащиеся в файле, где каждая строка содержит одинаковое количество целых чисел, то решить задачу достаточно просто. Например, если каждая строка файла состоит из трех целых чисел, а х, у и z — целочисленные переменные, цикл while из предыдущего примера можно заменить следующим оператором.

while (inFile >> х >> у >> z)

cout << x << " " << у << " " < х << endl;

Другое решение, не зависящее от количества целых чисел в строке, заключается в использовании функций реек и ignore. Следовательно, предыдущую функцию можно модифицировать следующим образом. Обратите внимание, что новая переменная всегда передается в функцию по ссылке.

void skipBlanks(ifstreams inFile)

// Пропускает пробелы в текстовом файле.

{

while (inFile.peek() == ' ')

inFile.ignore(1);

} // Конец функции skipBlanks

void echoLine(ifstream& inFile)

// Выводит одну строку текстового файла.

{

int х;

while (inFile.peek() != '\n')

{

inFile >> X;

skipBlanks(inFile);

cout << x << " ";

}//Конец оператора while

cout << "\n";

inFile.ignore(1); // Сразу после символа \п f

}// Конец функции echoLine

void echoFile(string fileName)

// Выводит содержимое текстового файла.
{

ifstream inFile(fileName);

skipBlanks(inFile);

while (inFile.peekO != EOF)

echoLine(inFile);

inFile.close();
}//Конец функции echoFile
При чтении данных из входного файла иногда требуется контролировать, был ли достигнут конец файла после очередной операции ввода. Это позволяет делать метод eof(), возвращающий нулевое значение, если конец файла еще не достигнут, и ненулевое значение — если уже достигнут.

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

Когда программа покидает область видимости потокового объекта, он уничтожается. При этом перестает существовать связь между потоковым объектом и физическим файлом, а физический файл закрывается. Если алгоритм требует более раннего закрытия файла, вы можете воспользоваться методом close().

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

1   2   3   4   5   6   7   8   9   ...   12

Похожие:

Практикум на ЭВМ технология программирования в среде С++ iconПрактикум на ЭВМ среда программирования и отладка программ
Рыков В. И. Среда Microsoft Visual C++ и отладка программ. Технология работы с языком С++. /Издание Башкирского ун-та. Уфа 2006....

Практикум на ЭВМ технология программирования в среде С++ iconОсновы информатики и вычислительной техники системы программирования
Рассматриваются основные понятия языков программирования. Излагаются процедурный и объектный подходы в программировании. Более подробно...

Практикум на ЭВМ технология программирования в среде С++ iconРабочая программа по курсу «основы Программирования на языке ассемблер»
Программа предназначена для обучения основам программирования на языке низкого уровня Ассемблере учащихся средних школ, учреждений...

Практикум на ЭВМ технология программирования в среде С++ iconПрограмма учебной дисциплины «Управление данными»
«Математика», «Информатика», «Программирование на языках высокого уровня», «Дискретная математика», «Объектно-ориентированное программирование»,...

Практикум на ЭВМ технология программирования в среде С++ iconПрактикум по спортивной психологии Санкт-Петербург
...

Практикум на ЭВМ технология программирования в среде С++ iconРеферат по теме: "Строение персональных компьютеров ibm pc"
Эвм и мини ЭВМ. Это стало предметом серьезного беспокойства фирмы ibm (International Bussines Machines Corporation) ведущей компании...

Практикум на ЭВМ технология программирования в среде С++ iconКонспект лекций доцента и. А. Волковой по курсу «системы программирования»
Система программирования – комплекс программных инструментов и библиотек, который поддерживает создание и существование программного...

Практикум на ЭВМ технология программирования в среде С++ iconПлан лекции: Задачи, решаемые вычислительными центрами Структура...
Создание вычислительных центров является способом повышения эффективности работы ЭВМ. Вычислительный центр объединяет технику различных...

Практикум на ЭВМ технология программирования в среде С++ iconМентальное моделирование как технология понимания текста на примере книг Карлоса Кастанеды
Ваша собственная ментальная программа. Поэтому вполне может случиться, что некоторые ментальные программы не могут быть отмоделированы...

Практикум на ЭВМ технология программирования в среде С++ iconПрактикум по когнитивной терапии
М15 Практикум по когнитивной терапии: Пер с англ. — Спб.: Речь, 2001. — 560 с. Isbn 5-9268-0036-6

Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции