II. Манипуляции с данными файла Факультет компьютерных наук и телекоммуникаций Кафедра математического и программного обеспечения информационных систем Отчет Об учебной практике Студентов 1 курса группы 141102 На тему:«Генератор кроссвордов» Руководители практики: Чашин Ю.Г. Лысых В.В. Барсук А.А. Команда исполнителей: Мишусти А.И. Курбонов Ш.Г. Ткачев О.А. Оценка работы:__________ Принял:_________ Дата_________ Постановка задачи: 1. Изучение работы со средой Visual C++ VisualC++- интегрированная среда разработки (Integrated Development Environment, или, сокращенно, IDE) — это программный продукт, объединяющий текстовый редактор, компилятор, отладчик и справочную систему. Любая программа в среде Visual C++ всегда создается в виде отдельного проекта. Проект (project) — это набор взаимосвязанных исходных файлов и, возможно, включаемых заголовочных файлов, компиляция и компоновка которых позволяет создать исполняемую программу. Основу Visual C++ составляет рабочая область (project workspace). Она может содержать любое количество различных проектов, сгруппированных вместе для согласованной разработки: от отдельного приложения до библиотеки функций или целого программного пакета. Решение же простых (учебных) задач сводится к оформлению каждой программы в виде одного проекта, т.е. рабочая область проекта будет содержать ровно один проект. После запуска Visual C++ появляется главное окно программы, вид которого приведен на рисунке 1. (В зависимости от настроек Visual C++ его вид может несколько иным.)  Рисунок 1. – Главное окно Visual C++ Экран VisualC++ разделен на четыре основные зоны. Сверху расположены меню и панели инструментов. Кроме них рабочий стол Visual C++ включает в себя три окна: 1. Окно Project Workspace (окно рабочей области) – расположено в левой части. Первоначально окно закрыто, но после создания нового проекта или загрузки существующего проекта это окно будет содержать несколько вкладок. 2. Окно Editor (окно редактирования), расположено справа. Его используют для ввода, проверки и редактирования исходного кода программы. 3. Окно Output (окно вывода) служит для вывода сообщений о ходе компиляции, сборки и выполнения программы и сообщений о возникающих ошибках. Для кнопок панелей инструментов предусмотрена удобная контекстная помощь: если навести курсор мыши на кнопку и задержать на пару секунд, то всплывет подсказка с назначением данной кнопки. Developer Studio позволяет создавать проекты различных типов, которые ориентированы на различные сферы применения. Большинство типов проектов являются оконными Windows-приложениями с соответствующим графическим интерфейсом. Но также предусмотрена работа и консольными приложениями. При запуске консольного приложения операционная система создает консольное окно, через которое идет весь ввод – вывод данных программы. Такая работа и представляет имитацию работы в операционной системе MS DOS или других операционных системах в режиме командной строки. Этот тип приложений больше всего подходит для целей изучения языка C/C++ так как не требует создания Windows-кода для пользовательского интерфейса. Изучение работы с файлами Файл – именованный набор байтов, который может быть сохранен на некотором накопителе. Работа с файлами разделяется на 3 этапа: • Открытие файла. • Манипуляции с данными. • Закрытие файла. Рассмотрим каждый этап подробно. I. Открытие файла Создается экземпляр класса fstream.h Для того чтобы открыть файловый поток в среде Visual C++ используется функция FILE* fopen (const char* имя файла; const, char* режим). Для записи в файл используется оператор вставки : << и оператор ofstream, который сбрасывает данные. Согласно документации Visual C++ выделяют следующие виды режимов файлов: • r – режим для чтения; • r+ - открытие файла одновременно на чтение и запись; • w – создание нового пустого файла. Если файл не существует, то он не создается; • w+ - открытие пустого файла для чтения и записи; • a – открывает существующий файл в режиме записи, при этом указатель сдвигается на последний байт файла (на конец файла); • b- двоичные режим; • t - текстовый режим. FILE* fopen (“mu.txt”, “rtt”); II. Манипуляции с данными файла Записывать данные в файл в среде Visual C++ можно при помощи функции fwrite(). Это функция принимает 2 обязательных параметра и 1 необязательный. В качестве обязательных параметров выступает дескриптор файла и режим файла: Для того, чтобы считать файл как единое целое, нужно использовать функцию readfile(), принимающая 1 обязательный параметр. Функция открывает файл, отображает его содержимое в окне браузера, а затем закрывает файл. Также можно использовать функциюfpassthru()которая принимает 1 обязательный параметр. Перед использованием этой функции необходимо открыть файл в режиме чтения. По окончанию считывания файла функция автоматически закрывает файл(при этом дескриптор файла становиться недействительным). Очень часто встречаются ситуации, когда необходимо содержимое сайта считать в массив. Эту возможность предусматривает использование функции file(). При вызове этой функции, каждая строка файла сохранятся в отдельном элементе указанного массива. III. Закрытие файла Закрытие файла происходить с помощью функции int fclose(FILE*), которая принимает 1 обязательный параметр. Пример работы программы, создающей файл и открывающей его. Файл состоит из строк, выводящихся на экран. int i; char buff [81]; ofstream outfile ("test.dat"); if (!outfile) return 0; for (i=0; i<10; i++ ){ cout <<" This is line "<<i+1<< endl;}; outfile.close(); ifstream infile ("test.dat"); if (!infile) return 0; while (!infile.eof()) { infile.getline ( buff , sizeof (buff)); cout << buff << endl; infile.close(); getch(); return 0; } return 0; } Изучение работы с циклами В языке C++ существует три вида циклов: цикл while c предусловием, цикл while с постусловием, цикл for. Цикл while ("пока") с предусловием Цикл while с предусловием позволяет выполнить одну и ту же последовательность действий пока проверяемое условие истинно. При этом условие записывается до тела цикла и проверяется до выполнения тела цикла. При выполнении цикла while сначала проверяется условие. Если оно ложно, то цикл не выполняется и управление передается на следующую инструкцию после тела цикла while. Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла. Синтаксис цикла while ("пока") c предусловием такой: while (условие) { блок инструкций } Следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10: #include "stdafx.h"; #include <iostream>; using namespace std; void main () { int n; n=1; while(n<=10) // создается условие { cout<<n*n<<endl; // блок инструкций n=n+1;} cin>>n; } Цикл while ("пока") с постусловием Цикл "пока" с постусловием отличается от цикла с предусловием тем, что сначала выполняется блок цикла, а потом проверяется условие. Если условие истинно, то цикл будет выполнен еще раз, и так до тех пор, пока условие будет истинно. Синтаксис цикла с постусловием такой (обратите внимание на обязательную точку с запятой после условия): do { Блок инструкций } while (условие); Поскольку условие проверяется после выполнения тела цикла, то блок цикла с постусловием всегда будет выполнен хотя бы один раз, независимо от истинности условия. Это может привести к ошибкам, поэтому использовать цикл while с постусловием следует только тогда, когда это действительно упрощает алгоритм. Пример программы: напечатать на экран квадраты всех целых чисел от 1 до 10. #include "stdafx.h"; #include <iostream>; using namespace std; void main () { int n; n=1; do {cout<<n*n<<endl; // блок инструкций n=n+1;} while(n<=10); // создается условие cin>>n; } Цикл for Цикл for является универсальным циклом, который может использоваться и вместо цикла while. Однако в большинстве случаев цикл for используется для того, чтобы некоторая переменная изменялась в заданном диапазоне с заданным шагом. Синтаксис оператора for такой: for (инициализация ; условие ; итератор ) инструкция где инициализация, условие, итератор — арифметические выражения, инструкция — одна инструкция языка C++. Работает цикл for следующим образом. Сначала вычисляется выражение "инициализация". Затем вычисляется значение "условия". Если оно истинно, то выполняется "инструкция" тела цикла, а затем вычисляется "итератор". Если же "условие" ложно, то цикл не выполняется и управление передается на следующую инструкцию после цикла. Если цикл был выполнен, то после вычисления "итератора" снова проверяется "условие", и если оно истинно, то снова выполняется "инструкция", а затем вычисляется "итератор" и так далее, пока условие не станет ложно. Таким образом, "инициализация" выполняется один раз до выполнения цикла и, как правило, используется для присвоения начальных значений переменным, изменяющимся в цикле. "Условие" проверяется всякий раз перед очередным выполнением блока цикла и обычно используется для задания границы изменения переменной в цикле. "Итератор" вычисляется после выполнения блока цикла и в большинстве случаев содержит оператор присваивания, инкремента или декремента, изменяющий значение переменной. Пример программы: напечатать на экран квадраты всех целых чисел от 1 до 10. #include "stdafx.h"; #include <iostream>; using namespace std; void main () { int n; for (int n=1;n<=10; n=n+1) //( начальное значение ; условие выполнения ; приращение ) { cout<<n*n<<endl; } cin>>n; } |