Презентация на тему: Структуры

Реклама. Продолжение ниже
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
Структуры
1/32
Средняя оценка: 4.7/5 (всего оценок: 61)
Код скопирован в буфер обмена
Скачать (90 Кб)
Реклама. Продолжение ниже
1

Первый слайд презентации

Структуры

Изображение слайда
1/1
2

Слайд 2

Структура – это составной объект языка Си, содержащий данные, объединенные в группу под одним именем. Данные, входящие в эту группу, называют полями ( членами структуры ). В отличие от массивов поля могут иметь различные типы. Для создания объектов-структур надо: - объявить структурный тип данных, т.е. описать пользовательский тип (выделения памяти не происходит); - объявить структурные переменные описанного типа, при этом происходит выделение памяти.

Изображение слайда
1/1
3

Слайд 3

Объявление структурного типа выполня-ется в виде шаблона, общий формат которого: struct Имя_Типа { Описание полей } ; Структурный тип обычно декларируется в глобальной области, т.е. до первой выполняемой функции. Тогда его можно использовать во всех функциях, входящих в проект.

Изображение слайда
1/1
4

Слайд 4

Структурный тип обычно применяется для групповой обработки объектов. Параметрами таких операций являются адрес и размер структуры. Так как одним из параметров обработки структур является размер, нельзя объявлять поля структуры указателем на объект переменного размера, т.е. использовать указатели на char ( объекты классов ). Пример шаблона для обработки информации о результатах сессии студентов struct Spisok { char fio [2 1 ]; - Фамилия студента double s_bal ; - Средний балл };

Изображение слайда
1/1
5

Слайд 5

Создание структурных переменных можно выполнить двумя способами. Способ 1. В любом месте программы объявить переменные, используя описанный ранее структурный тип. Например для описанного ранее типа Spisok : Spisok zap, *pzap, mas_zap[30]; Объявлены zap – структурная переменная (запись), pzap – указатель на структуру, mas_zap[30] – массив структур.

Изображение слайда
1/1
6

Слайд 6

Способ 2. Объявляют переменные в шаблоне структуры между закрывающейся фигурной скобкой и символом « ; ». Для приведенного ранее примера: struct Spisok { char fio [2 1 ]; double s_bal ; } zap, * pzap, mas_zap[30] ; В таком случае, если объявлены все необходимые переменные, Имя_Типа ( Spisok ) может отсутствовать.

Изображение слайда
1/1
7

Слайд 7

Обращение к полям структур выполняется с помощью составных имен, которые образуются двумя способами: 1) при помощи операции принадлежности (. ) от значения (имени структурной переменной) к полю: Имя_Структуры. Имя_Поля или ( *Указатель_Структуры ). Имя_Поля 2) при помощи операции косвенной адресации ( –> ) от адреса к полю Указатель_Структуры –> Имя_Поля или ( &Имя_Структуры ) –> Имя_Поля

Изображение слайда
1/1
Реклама. Продолжение ниже
8

Слайд 8

Для объявленных ранее переменных Spisok zap, * pzap, mas_zap[30] ; содержащих поля char fio[2 1 ] ; и double s_bal ; 1) обращение к полям fio и s_bal переменной zap : а) с помощью операции принадлежности zap. fio и zap. s_bal б) с помощью операции косвенной адресации ( & zap ) -> fio и ( & zap ) -> s_bal 2) обращение к первому символу строки fio пере - менной zap : zap. fio [0]

Изображение слайда
1/1
9

Слайд 9

3 ) обращение к полям fio и s_bal от указателя pzap : а) с помощью операции косвенной адресации pzap -> fio и pzap -> s_bal б) с помощью операции принадлежности ( * pzap ). fio и ( * pzap ). s_bal 4 ) обращение к полям fio и s_bal i -го элемента массива mas_zap : а) с помощью операции принадлежности mas_zap [ i ]. fio и mas_zap [ i ]. s_bal б) с помощью операции косвенной адресации ( mas_zap + i ) -> fio и ( mas_zap + i ) -> s_bal

Изображение слайда
1/1
10

Слайд 10

Рассмотрим пример программы создания динамического массива структур, содержащих поля fio и s_bal (как раньше), его заполнение, вывод всей информации на экран и поиск сведений о студентах, у которых средний балл выше 7,99 баллов.

Изображение слайда
1/1
11

Слайд 11

... struct Spisok { - Шаблон структуры char fio [21]; double s_bal ; }; Spisok In (void); - Функция ввода void Out ( Spisok ); - Функция вывода void main () { Spisok *Stud ; - Указатель для массива int i, n; cout << " Input n : "; - Количество студентов cin >> n;

Изображение слайда
1/1
12

Слайд 12

Stud = new Spisok [n]; - Захват памяти for(i=0;i<n;i++) - Заполнение массива Stud [ i ] = In ( ); cout << "\n\t Spisok “ << endl; for(i=0;i<n;i++) Out ( Stud [ i ] ); - Вывод информации cout << "\n\t Ball > 7.99“ << endl; for(i=0;i<n;i++) if ( Stud [ i ]. s_bal > 7.99) - Поиск Out ( Stud [ i ] ); и вывод delete [ ] Stud ; - Освобождение памяти }

Изображение слайда
1/1
13

Слайд 13

//------- Функция Ввода одного элемента структуры ------- Spisok In ( ) { Spisok z; cout << "\n FIO - "; fflush ( stdin ); - Очистка стандартного буфера ввода stdin, необходимая в данном случае перед использованием функции gets gets ( z.fio ); cout << "\n Ball - "; cin >> z.s_bal ; return z ; } //------- Функция Вывода одного элемента структуры ------ void Out ( Spisok z ) { cout << setw(20) << z.fio << " \t “ << z.s_bal << endl; }

Изображение слайда
1/1
14

Слайд 14

Ф а й л ы

Изображение слайда
1/1
Реклама. Продолжение ниже
15

Слайд 15

Файл – это набор данных, размещенный на внешнем носителе и рассматриваемый в процессе обработки как единое целое. В файлах размещаются данные, предназначенные для длительного хранения. Различают два вида файлов: текстовые и бинарные. Текстовые файлы представляют собой последовательность символов и могут быть просмотрены и отредактированы с помощью любого текстового редактора. Бинарные (двоичные) файлы представляют собой последовательность данных, структура которых определяется программно.

Изображение слайда
1/1
16

Слайд 16

Файлы рассматриваются компилятором как последовательность (поток байт) информации. В начале работы любой программы автоматически открываются стандартные потоки ввода ( stdin ) и вывода ( stdout ). Для файлов определен указатель ( маркер ) чтения-записи данных, который определяет текущую позицию доступа к файлу. В языке Си имеется большой набор функций для работы с файлами, большинство в stdio.h и io.h. Потоки данных, с которыми работают функции ввода-вывода по умолчанию, буферизированы. При открытии потока с ним связывается определенный участок памяти, который называется буфером. Все операции чтения-записи ведутся через этот буфер.

Изображение слайда
1/1
17

Слайд 17

Для обработки любого файла необходимо выполнить следующие действия: 1) открыть файл; 2) обработать данные файла (запись, чтение, поиск и т.п.); 3) закрыть файл.

Изображение слайда
1/1
18

Слайд 18

Открытие файла Каждому файлу в программе присваивается внутреннее логическое имя, используемое в дальнейшем при обращении к нему. Логическое имя (имя файла) – это указатель на файл, т.е. на область памяти, где содержится вся необходимая информация о нем. Формат объявления : FILE * Имя_Указателя; FILE – структурный тип, описанный в библиотеке stdio.h, содержащий 9-ть полей:

Изображение слайда
1/1
19

Слайд 19

typedef struct { unsigned char *curp; // Current active pointer unsigned char *buffer; // Data transfer buffer int level; // fill/empty level of buffer int bsize; // Buffer size unsigned short istemp; // Temporary file indicator unsigned short flags; // File status flags wchar_t hold; // Ungetc char if no buffer char fd; // File descriptor unsigned char token; // Used for validity checking } FILE;

Изображение слайда
1/1
20

Слайд 20

Прежде чем начать работать с файлом, его нужно открыть для доступа с помощью функции fopen ( Имя_Файла, Режим ) Данная функция фактическому Имени Файла на носителе (дискета, винчестер) ставит в соответствие логическое имя ( Указатель файла ). Имя файла и путь к нему задается первым параметром – строкой, например: “ d:\\work\\Sved.txt ” – файл с именем Sved, расширением txt, находящийся на d: в папке work. Обратный слеш «\», как специальный символ в строке записывается дважды.

Изображение слайда
1/1
21

Слайд 21

Если путь к файлу не указан, его размещением будет текущая папка. При успешном открытии функция fopen возвращает указатель на файл (указатель файла). При ошибке возвращается NULL. Ошибки обычно возникают, когда неверно указывается путь к открываемому файлу, например, если указать путь, запрещенный для записи.

Изображение слайда
1/1
22

Слайд 22

Второй параметр – строка, в которой задается режим доступа к файлу: w – файл открывается для записи ( write ); если файла нет, то он создается; если файл уже есть, то прежняя информация уничтожается; r – файл открывается для чтения ( read ); если такого файла нет, то возникает ошибка; a – файл открывается для добавления ( append или add ) новой информации в конец; t – файл открывается в текстовом режиме; b – файл открывается в двоичном режиме.

Изображение слайда
1/1
23

Слайд 23

Последние два режима используются совместно с рассмотренными выше. Возможны следующие комбинации режимов доступа: w + b, wb +, а также некоторые другие комбинации. По умолчанию файл открывается в текстовом режиме. Пример открытия файла: FILE *f; – Объявляется указатель f f = fopen (« d at_sp. txt ", "w"); – открывается для записи текстовый файл в текущей папке с именем d at_sp. txt и указателем f, или более кратко: FILE *f = fopen (“dat_sp.txt", "w");

Изображение слайда
1/1
24

Слайд 24

Закрытие файла После работы с файлом доступ к нему необходимо закрыть с помощью функции fclose ( Указатель_Файла ); Для предыдущего примера: fclose ( f ); Если надо изменить режим доступа к уже открытому файлу, то его необходимо закрыть, а затем открыть с другим режимом: freopen ( Имя_Файла, Режим, Указатель ); - закрывается файл с заданным в третьем параметре Указателе (аналогично функции f close ), а затем открывается файл, используя первый и второй параметры (аналогично функции fopen ).

Изображение слайда
1/1
25

Слайд 25

Запись-чтение информации Основными действиями при работе с файлами являются запись и чтение информации. Все действия по чтению-записи данных в файл можно разделить на три группы: – операции посимвольного ввода-вывода; – операции построчного ввода-вывода; – операции ввода-вывода блоками. Рассмотрим основные функции записи-чтения данных.

Изображение слайда
1/1
26

Слайд 26

Создание текстовых результирующих файлов обычно необходимо для оформления различных отчетов. Для работы с текстовыми файлами чаще всего используются функции fprintf, fscanf, fgets, fputs Параметры и действия этих функций аналогичны рассмотренным ранее функциям printf, scanf, gets и puts. Отличие состоит в том, что printf и др. работают по умолчанию с экраном монитора и клавиатурой, а функции fprintf и др. – с файлом, указатель которого является одним из параметров.

Изображение слайда
1/1
27

Слайд 27

1. Например: ... FILE *f1 = fopen(“data.txt”, “w”); int a = 2, b = 3; printf ( ” %d + %d = %d \n ”, a, b, a+b); fprintf ( f1,” %d + %d = %d\n ”, a, b, a+b); fclose ( f1 ); ... Просмотрев файл f1 любым текстовым редактором, можно убедиться, что данные в нем располагаются так же, как и на экране.

Изображение слайда
1/1
28

Слайд 28

2. Например: ... FILE *f1 = fopen ( “data.dat”, “wb” ); int a, b; puts ( “ Input a, b” ); scanf ( “%d%d”, &a, &b ); fprintf ( f1,”%d %d”, a, b ); fclose ( f1 ); ... Далее по коду считать данные из файла f1 можно следующим образом f1 = fopen ( “data.dat”, “rb” ); fscanf ( f1, “%d%d”, &a, &b ); ...

Изображение слайда
1/1
29

Слайд 29

Бинарные файлы обычно используются для обработки данных, состоящих из структур, чтение и запись которых удобно выполнять блоками. Функция fwrite ( p, size, n, f ); выполняет запись « n » блоков размером « size » байт каждый из области памяти с адресом « p » в файл « f ». Функция fread ( p, size, n, f ); выполняет чтение « n » блоков размером « size » байт каждый из файла « f » в область памяти с адресом « p ». В случае успеха функция возвращает количество считанных блоков.

Изображение слайда
1/1
30

Слайд 30

Позиционирование в файле Каждый открытый файл имеет скрытый указатель на текущую позицию в нем. При открытии файла этот указатель устанавливается на позицию, определенную режимом, и все операции в файле будут выполняться с данными, начинающимися в этой позиции. При каждом чтении (записи) указатель смещается на количество прочитанных (записанных) байт – это последовательный доступ к данным. С помощью функции fseek можно выполнить чтение или запись данных в произвольном порядке.

Изображение слайда
1/1
31

Слайд 31

fseek ( f, size, code ) выполняет смещение указателя файла f на size байт в направлении code : 0 – смещение от начала; 1 – смещение от текущей позиции; 2 – смещение от конца файла. Смещение может быть как положительным, так и отрицательным, но нельзя выходить за пределы файла. В случае успеха функция возвращает 0, 1 –при ошибке, например, выход за пределы файла. Доступ к файлу с использованием этой функции называют произвольным доступом.

Изображение слайда
1/1
32

Последний слайд презентации: Структуры

Рассмотрим некоторые полезные функции: 1) ftell ( f ) – определяет значение указателя на текущую позицию в файле, –1 в случае ошибки; 2) fileno ( f ) – определяет значение дескрип - тора ( fd ) файла f, т.е. номер файла; 3) filelength ( fd ) – определяет длину файла в байтах, имеющего дескриптор fd ; 4) chsize ( fd, pos ) – выполняет изменение размера файла, имеющего номер fd, признак конца файла устанавливается после байта с номером pos ; 5) feof ( f ) – возвращает ненулевое значение при правильной записи признака конца файла.

Изображение слайда
1/1
Реклама. Продолжение ниже