Здесь располагается содержимое class "clearfloat" id "рамка"

Курс кружка "Программист"

У р о к и
  1. Этапы решения задач на компьютере. Разработка программы.
  2. *КОНТРОЛЬ*
  3. Понятие алгоритма. Свойства алгоритма.
  4. *КОНТРОЛЬ*
  5. Формы представления алгоритмов. Графический способ записи алгоритмов. Школьный алгоритмический язык.
  6. *КОНТРОЛЬ*
  7. Базовые алгоритмические структуры: базовая структура следование.
  8. *КОНТРОЛЬ*
  9. Базовые алгоритмические структуры: базовая структура ветвление.
  10. *КОНТРОЛЬ*
  11. Базовые алгоритмические структуры: базовая структура ЦИКЛ.
  12. *КОНТРОЛЬ*
  13. Эволюция языков программирования. Классификация языков программирования.
  14. *КОНТРОЛЬ*
  15. Язык Си++. Эволюция языка и его преимущества.
  16. *КОНТРОЛЬ*
  17. Синтаксис языка Си++.
  18. *КОНТРОЛЬ*
  19. Константы и переменные в С++. Преобразование типов данных.
  20. *КОНТРОЛЬ*
  21. Операторы используемые в С++.
  22. *КОНТРОЛЬ*
  23. Некоторые визуальные компоненты С++Builder.
  24. *КОНТРОЛЬ*
    ***Лабораторная работа № 1***
    Создание простого приложения в С++Builder.
  25. Основные константы и математические функции. Команда форматированного вывода строки.
  26. *КОНТРОЛЬ*
    ***Лабораторная работа № 2***
    Создание программы вычисления значения функции.
  27. Условные операторы выбора if.
  28. *КОНТРОЛЬ*
    ***Лабораторная работа № 3***
    Создание программы с разветвленной структурой.
  29. Условный оператор множественного выбора switch. Безусловный переход.
  30. *КОНТРОЛЬ*
    ***Лабораторная работа № 4***
    Создание программы со структурой ВЫБОР.
  31. Оператор цикла for (цикл со счетчиком).
  32. *КОНТРОЛЬ*
    ***Лабораторная работа № 5***
    Создание программы c циклом ДЛЯ.
  33. Операторы цикла с условием. Прерывание цикла.
  34. *КОНТРОЛЬ*
    ***Лабораторная работа № 6***
    Создание программы c циклом ПОКА.
  35. Одномерные массивы. Обработка строк.
  36. *КОНТРОЛЬ*
    ***Лабораторная работа № 7***
    Создание программы обработки строк.
  37. Многомерные массивы.
  38. *КОНТРОЛЬ*
    ***Лабораторная работа № 8***
    Создание программы обработки двумерного массива.
  39. Указатели и ссылки.
  40. *КОНТРОЛЬ*
  41. Функции: объявление, описание и использование.
  42. *КОНТРОЛЬ*
    ***Лабораторная работа № 9***
    Создание и использование функций в C++.
  43. Файлы и потоки. Файловый ввод/вывод с помощью компонентов.
  44. *КОНТРОЛЬ*
    ***Лабораторная работа № 10***
    Работа с файлами с помощью компонентов С++Builder.
  45. Файловый вывод/вывод в двоичном режиме.
  46. *КОНТРОЛЬ*
    ***Лабораторная работа № 11***
    Запись и чтение блоков из двоичного файла (произвольный доступ).

    ***Лабораторная работа № 12***
    Запись, дописывание и чтение потоков из файла.
Дополнения

Лабораторная работа № 11

Запись и чтение блоков из двоичного файла (произвольный доступ).

Цель: Научится работать с двоичными файлами в режиме произвольного доступа.
Задача: Создать приложение с формой, которая записывает массив в файл, затем считывает массив из файла с заданной позиции. Организовать функцию выхода из программы.
Порядок выполнения:

Форма 11

  1. Создать проект с формой.
  2. Задать имя формы Name=Form1
  3. Задать надпись в верхней части окна Form1->Caption= “Запись и чтение блоков из файла (произвольный доступ) ”
  4. На форму вынести элемент главного меню, задать пункт Файл-Выход и действие Form1->Close();
  5. На форму вынести элемент Memo: Name= Memo1. Очистить окно Memo1  (Memo->Lines).
  6. На форму вынести 3 кнопки Button:  1) Name= Button1, Caption=“Запись”, 2) Name= Button2, Caption=“Чтение”,  3) Name= Button3, Caption=“Очистить окно Вывода”
  7. На событие OnClick кнопки Button1 записать код:

int N[5]={1,2,3,4,5};
Memo1->Clear();
ofstream outfile("test3.dat", ios::out|ios::binary);
if (!outfile) {
ShowMessage("Файл не удается создать");
return ;
                                          }
 outfile.write((char *)&N, sizeof N);
 Memo1->Lines->Add("В файл записано:");
 Memo1->Lines->Add("1   2   3   4   5   ");
outfile.close();

  1. На событие OnClick кнопки Button2 записать код:

int K[5];
int Pos;
char str[30];
ifstream infile("Test3.dat", ios::in|ios::binary);
if(!infile)
{
ShowMessage("Файл не удается открыть");
return;
}
Memo1->Lines->Add("Начальная позиция");
Pos=infile.tellg();
Memo1->Lines->Add(IntToStr(Pos));
infile.seekg(12,ios::beg); //смещение на 12 байт (3 целых числа) отн. нач. файла
Memo1->Lines->Add("Позиция после сдвига");
Pos=infile.tellg();
Memo1->Lines->Add(IntToStr(Pos));
infile.read((char *)&K, sizeof K);
Memo1->Lines->Add("Прочитанные из файла данные");
sprintf(str," %i %i ", K[0], K[1]);
// закрытие файла
infile.close();
Memo1->Lines->Add(str);
Memo1->Lines->Add("Позиция после чтения");
Pos=infile.tellg();
Memo1->Lines->Add(IntToStr(Pos));

  1. На событие OnClick кнопки Button3 записать код: Memo1->Clear();
  2. Подключить модули <stdio.h>, <fstream.h>

Пояснения к коду программы:
Подключаемые модули:
#include <stdio.h>//подключаются функции форматированного вывода sprintf
#include <fstream.h>    //для использования функций  ofstream ifstream
На кнопку Запись:
int N[5]={1,2,3,4,5};  //объявляется целочисленный массив N на 5 элементов и задаются значения
Memo1->Clear();   //очистить многострочное окно редактирования
ofstream outfile("test3.dat", ios::out|ios::binary);  /* открывается выходной поток outfile для двоичного вывода в файл test3.dat  */
if (!outfile) {  //если не outfile на открывается  то
ShowMessage("Файл не удается создать");  //вывести сообщение
return ; //и выйти из функции
                                                  }
 outfile.write((char *)&N, sizeof N);    /*вывести в   outfile двоичный блок соответствующий размеру массива N, начиная непосредственно с адреса расположения N в памяти (указатель приводиться к типу char)*/
 Memo1->Lines->Add("В файл записано:"); /* символьная строка добавляется в многострочное окно редактирования как новая строка */
 Memo1->Lines->Add("1   2   3   4   5   ");  /* символьная строка добавляется в многострочное окно редактирования как новая строка */
outfile.close();  //закрыть поток outfile (закрыть файл)
На кнопку Чтение:
int K[5]; //объявляется целочисленный массив N на 5 элементов
int Pos;  //объявляется целочисленная переменная Pos
char str[30]; //объявляется симвльный массив str размером в 30 элементов
ifstream infile("Test3.dat", ios::in|ios::binary); /* открывается входной поток outfile для двоичного ввода из файла test3.dat  */
if(!infile)  //если поток не открывается то
{
ShowMessage("Файл не удается открыть"); //выдать сообщение
return; //и выйти из функции
}
Memo1->Lines->Add("Начальная позиция");  /* символьная строка добавляется в многострочное окно редактирования как новая строка */
Pos=infile.tellg();  //положение указателя входного потока записывается в Pos
Memo1->Lines->Add(IntToStr(Pos)); //значение указателя выводится в Memo1
infile.seekg(12,ios::beg); //смещение на 12 байт (3 целых числа) отн. нач. файла
Memo1->Lines->Add("Позиция после сдвига"); /* символьная строка добавляется в многострочное окно редактирования как новая строка */
Pos=infile.tellg();  //положение указателя входного потока записывается в Pos
Memo1->Lines->Add(IntToStr(Pos)); //значение указателя выводится в Memo1
infile.read((char *)&K, sizeof K); /*ввести из   intfile  в массив двоичный блок соответствующий размеру массива K, начиная непосредственно с адреса расположения K в памяти (указатель на массив приводится к типу char )*/
Memo1->Lines->Add("Прочитанные из файла данные"); /* символьная строка добавляется в многострочное окно редактирования как новая строка */
sprintf(str," %i %i ", K[0], K[1]); // в str вывести значения K[0], K[1]
infile.close();  // закрытие файла
Memo1->Lines->Add(str); /*значение str вывести как новую строку в многострочное окно редактирования Memo1*/
Memo1->Lines->Add("Позиция после чтения");  /* символьная строка добавляется в многострочное окно редактирования как новая строка */
Pos=infile.tellg();  //положение указателя входного потока записывается в Pos
Memo1->Lines->Add(IntToStr(Pos));  //значение указателя выводится в Memo1
 Кнопку Очистить окно Memo:
Memo1->Clear();  //очистить многострочное окно редактирования
Главное меню:
Form1->Close();  //закрыть форму Form1 (закрыть программу)

Анимация выполнения работы:

Pr11.exe (9 MБ) Скачать