Программирование и структуры данных

Скачать презентацию Программирование и структуры данных Скачать презентацию Программирование и структуры данных

prezentaciya_4.1.ppt

  • Размер: 467.5 Кб
  • Автор:
  • Количество слайдов: 24

Описание презентации Программирование и структуры данных по слайдам

Программирование и структуры данных      2007 г. 1 Лекция 4Программирование и структуры данных 2007 г. 1 Лекция 4 Структуры в языке С. Работа с файлами. Абстрактные структуры данных и структуры хранения.

Программирование и структуры данных      2007 г. 2 Структуры •Программирование и структуры данных 2007 г. 2 Структуры • C труктура объединяет логически связанные данные разных типов. • Тип структуры задает порядок следования отдельных элементов (полей) в структуре и их типы. Описание структурного типа имеет вид: struct имя_типа { Описание элементов };

Программирование и структуры данных      2007 г. 3 Примеры: Программирование и структуры данных 2007 г. 3 Примеры: • struct ANKETA { char fio [20]; /* фамилия и инициалы */ int gr ; /* год рождения */ char adr [40]; /* адрес */ }; • struct BOOK { char author[40]; /* автор книги */ char name [50]; /* название */ int year ; /* год издания */ int pages ; /* число страниц */ };

Программирование и структуры данных      2007 г. 4 • ОписаниеПрограммирование и структуры данных 2007 г. 4 • Описание структурной переменной имеет вид: struct имя_типа имя_переменной; • Например: struct ANKETA a 1; struct BOOK b 1, b 2; struct BOOK mb [100]; /* массив из 100 структур типа BOOK */ struct ANKETA * p 1; /* указатель на структуру типа ANKETA */ struct BOOK * p 2 = & b 2; /* указатель на структуру типа BOOK , ссылающийся на переменную b 2 */

Программирование и структуры данных      2007 г. 5  Программирование и структуры данных 2007 г. 5 p 2 a 1 b 1 b 2 fio author gr name adr year pages

Программирование и структуры данных      2007 г. 6 • ПриПрограммирование и структуры данных 2007 г. 6 • При объявлении структурных переменных можно их инициализировать, например: struct BOOK b 3 = { “Толстой Л. Н. ”, ”Война и мир”, 1995, 1350}; • Для однотипных структур определена операция присваивания. • Пример: b 1=b 3; mb[0]=b 3;

Программирование и структуры данных      2007 г. 7 Обращение кПрограммирование и структуры данных 2007 г. 7 Обращение к полям структурных переменных • Для обращения к отдельным элементам (полям) структурных переменных используется операция выбора “. ” или “ -> ” : имя_переменной . имя_элемента или имя_указателя — > имя_элемента

Программирование и структуры данных      2007 г. 8 Пример 1Программирование и структуры данных 2007 г. 8 Пример 1 /* ввод значения структурной переменной b 2 типа BOOK */ struct BOOK b 2; gets(b 2. author); gets (b 2. name); scanf (“%d%d”, &b 2. year, &b 2. pages);

Программирование и структуры данных      2007 г. 9 Пример 2Программирование и структуры данных 2007 г. 9 Пример 2 struct ANKETA a 2; strcpy (a 2. fio, “ Иванов А. В. ”); а 2. gr = 1980; strcpy ( a 2. adr , “ул. Пушкина, д. 10, кв. 5”);

Программирование и структуры данных      2007 г. 10 Пример 3Программирование и структуры данных 2007 г. 10 Пример 3 struct BOOK b 3 = { “Толстой Л. Н. ”, ” Война и мир”, 1995, 1350}; struct BOOK *p 3 = &b 3; printf (“%s, %d г. , %d с. \n”, p 3 ->author, p 3 ->name, p 3 -> year , p 3 -> pages ); • Результат на экране: Толстой Л. Н. , Война и мир, 1995 г. , 1350 с.

Программирование и структуры данных      2007 г. 11 • ЕслиПрограммирование и структуры данных 2007 г. 11 • Если структурные переменные используются только в одной функции программы, то можно совместить описание переменных с описанием типа. При этом имя типа можно не задавать, например: • struct { char fio[20]; int gr; char adr[40]; } a 1, a 2, *p 1;

Программирование и структуры данных      2007 г. 12 • ПамятьПрограммирование и структуры данных 2007 г. 12 • Память под структурную переменную может быть выделена динамически, при выполнении программы, например: struct BOOK *p 4; p 4 = malloc (sizeof (struct BOOK)); • Такая структура имени не имеет; обращаются к ней с помощью указателя p 4, например: gets (p 4 ->name); scanf (“%d”, &(p 4 ->year));

Программирование и структуры данных      2007 г. 13 Работа сПрограммирование и структуры данных 2007 г. 13 Работа с файлами • Файл – это поименованная область на диске, содержащая какую-либо информацию, например, текст программы, данные для программы, документ. • Файлы бывают текстовые и двоичные ( бинарные ). В операционной системе MS DOS текстовые файлы представляют собой последовательность символьных строк. Каждый символ занимает один байт. Строка заканчивается двумя символами: «возврат каретки» (с кодом 13) и «перевод строки» (с кодом 10).

Программирование и структуры данных      2007 г. 14 Некоторые функцииПрограммирование и структуры данных 2007 г. 14 Некоторые функции доступа к файлам 1. fopen – открытие файла. • Прототип функции : FILE * fopen (char * fname, char * mode); • Первый параметр fname задает имя открываемого файла, второй – режим открытия файла или вид его обработки. Параметр mode может задаваться в виде: “ r ” – чтение файла, “ w ” – запись в файл (если файл существует, он стирается), “ a ” – добавление информации в конец файла, “ r +” – чтение и запись.

Программирование и структуры данных      2007 г. 15 • Пример.Программирование и структуры данных 2007 г. 15 • Пример. FILE *fin, *fout; /* указатели на входной и выходной файлы */ char fname[13]; /* имя выходного файла */ if ((f in = fopen( “f 1. txt” , “r”)) == NULL) { puts (“Файл в текущем каталоге не найден”); exit (1); } puts(“Введите имя выходн ого файла”); gets (fname); fout = fopen ( fname , “w”);

Программирование и структуры данных      2007 г. 16 • 2.Программирование и структуры данных 2007 г. 16 • 2. Для чтения информации из файла служат функции: • fscanf () – форматированный ввод, • fgets () – чтение одной строки, • fgetc () – чтение одного символа, • fread () – ввод заданного числа байтов (символов).

Программирование и структуры данных      2007 г. 17 • Пример.Программирование и структуры данных 2007 г. 17 • Пример. • Файл stud. txt содержит информацию о сдаче сессии студентами. Каждая строка файла содержит фамилию и инициалы студента (20 символов), номер группы и 4 экз. оценки, разделенные пробелами. • Пример строки: Иванов А. С. 4151 4 5 4 3 • Записать информацию из файла в массив структур. /* фрагмент программы */ struct STUDENT /* тип элемента массива (записи файла) */ { char fio[21]; /* фамилия */ int gruppa; /* группа */ int oc[4]; /* массив оценок */ }; FILE *fin ; /* указател ь на входной файл */ struct STUDENT ms[300]; /* массив структур */ int i=0; /* индекс очередного элемента массива ms */ int j; /* индекс очередной оценки */

Программирование и структуры данных      2007 г. 18 if ((fПрограммирование и структуры данных 2007 г. 18 if ((f in = fopen( “stud. txt” , “r”) == NULL) { puts (“Файл в текущем каталоге не найден”); exit (1); } /* чтение информации из файла в массив ms*/ while (!feof(fin)) { fgets (ms[i]. fio, 21, fin); fscanf (fin, “%d”, &ms[i]. gruppa); for (j=0; j<4; j++) fscanf (fin, “%d”, &ms[i]. oc[j]); fgetc(fin); i++; }

Программирование и структуры данных      2007 г. 19 • 3.Программирование и структуры данных 2007 г. 19 • 3. Для записи информации в файл используются функции: • fprintf () – форматированный вывод, • fputs () – вывод строки, • fputc () – вывод одного символа, • fwrite () – вывод заданного числа байтов (символов).

Программирование и структуры данных      2007 г. 20 Часть 2.Программирование и структуры данных 2007 г. 20 Часть 2. Структуры данных и методы программирования Абстрактная структура данных — это структура данных, рассматриваемая с точки зрения применяемых к ней операций без описания способа ее представления в памяти.

Программирование и структуры данных      2007 г. 21 Уровни описанияПрограммирование и структуры данных 2007 г. 21 Уровни описания данных Абстрактные структуры данных: • очередь, • стек, дек, • граф, дерево, • таблица, • множество.

Программирование и структуры данных      2007 г. 22 Методы храненияПрограммирование и структуры данных 2007 г. 22 Методы хранения данных Методы хранения структур данных: • 1. Последовательное (сплошное) представление данных. Наиболее используемая структура хранения — вектор. • 2. Связанное (цепное) представление данных. Основные структуры хранения — список и сеть.

Программирование и структуры данных      2007 г. 23 Методы храненияПрограммирование и структуры данных 2007 г. 23 Методы хранения данных Связанный список — это последовательность элементов, каждый из которых, кроме других данных, содержит указатель (адрес) следующего элемента. Пример списка 10 20 100 0 . . . Указатель списка Пустой указатель

Программирование и структуры данных      2007 г. 24 Методы храненияПрограммирование и структуры данных 2007 г. 24 Методы хранения данных Сеть (многосвязный список) — это набор элементов, каждый из которых может иметь несколько указателей на другие элементы. В однородной сети все элементы содержат одинаковое количество ссылок, в неоднородной – разное. Однородная (регулярная) сеть из трех элементов: