Реферат по предмету "Информатика, программирование"


Работа со структурами в языке программирования Си++

Лабораторная работа №6
 
“Работа соструктурами в языке программирования Си++”
 
Цель работы: познакомитьсяс понятием структуры и структурной переменной. Научиться создавать массивыструктур и работать со вложенными структурами.
1.        Теоретическиесведения
 
Структура – это объединение одноголибо более объектов (переменных, массивов, указателей, других структур). Как имассив, она представляет собой совокупность данных, но отличается от него тем,что к ее элементам необходимо обращаться по имени, и ее различные элементы необязательно должны принадлежать одному типу.
Структуры удобноиспользовать там, где разнообразные данные, относящиеся к одному и тому жеобъекту, необходимо объединять. Например, ученика средней школы характеризуютследующие данные: фамилия, имя, дата рождения, класс, возраст.
Объявление структурыосуществляется с помощью ключевого слова struct, за которым следует ее тип,список элементов, заключенных в фигурные скобки. Ее можно представить вследующем общем виде:
struct тип {тип элемента1 имя элемента 1;
 тип элемента n имяэлемента n; };
Именем элемента можетбыть любой идентификатор. В одной строке можно записывать через запятуюнесколько идентификаторов одного типа.
Например:
struct   date{ int day;
int month;
int year;} ;
Русские буквыиспользовать в идентификаторе в языке СИ нельзя.
Следом за фигурнойскобкой, заканчивающей список элементов, могут записываться переменные данноготипа, например:
struct date {…} a, b, c;
При этом выделяетсясоответствующая память.
Выведенное имя типа можноиспользовать для объявления записи, например: struct date day;. Теперьпеременная day имеет тип date.
Разрешается вкладыватьструктуры одна на другую. Для лучшего восприятия структуры используем русскиебуквы в идентификаторах, в языке СИ этого делать нельзя.
Например:
struct  УЧЕНИК { charФамилия [15];
имя [15];
struct DATA ДАТАРОЖДЕНИЯ;
int класс, возраст;};
Определенный выше типDATA включает три элемента: День, Месяц, Год, содержащие целые значения (int).Запись УЧЕНИК включает элементы: ФАМИЛИЯ [15]; ИМЯ[15]; ДАТА РОЖДЕНИЯ, КЛАСС,ВОЗРАСТ. ФАМИЛИЯ [15] и ИМЯ [15] – это символьные массивы из 15 компоненткаждый. Переменная ДАТА РОЖДЕНИЯ представлена составным элементом (вложеннойструктурой) ДАТА. Каждой дате рождения соответствуют день месяца, месяц и год.Элементы КЛАСС и ВОЗРАСТ содержат значения целого типа (int). После введениятипов ДАТА и УЧЕНИК можно объявить переменные, значения которых принадлежатэтим типам.
Например:
struct УЧЕНИК УЧЕНИКИ[50];
массив УЧЕНИКИ состоит из50 элементов типа УЧЕНИК.
В языке СИ разрешеноиспользовать массивы структуры; записи могут состоять из массивов и другихзаписей.
Чтобы обратиться котдельному компоненту структуры, необходимо указать ее имя, поставить точку исразу за ней написать имя нужного элемента.
Например:
Ученики [1]. КЛАСС = 3;
Ученики [1]. ДАТАРОЖДЕНИЯ. ДЕНЬ=5;
Ученики [1]. ДАТА РОЖДЕНИЯ.МЕСЯЦ=4;
Ученики [1]. ДАТАРОЖДЕНИЯ. ГОД=1979;
Первая строка указывает,что 1-й ученик учится в третьем классе, а последующие строки – его датурождения: 5.04.79.
Каждый тип элементаструктуры определяется соответствующей строкой объявления в фигурных скобках.Например, массив УЧЕНИКИ имеет тип УЧЕНИК, год является целым числом. Так каккаждый элемент записи относится к определенному типу, его составное имя можетпоявляться везде, где разрешено использовать значение этого типа. Рассмотримпример программы:
/* Демонстрация записи */
#include
struct computer  {   intmem;
 int sp;
char model [20]; };
/* Объявление записи типаcomputer, состоящей из трех элементов: mem, sp, model */
structcomputer pibm =
{512, 1, “ПЭВМ ЕС1840.05”}
/* Объявление иинициализация переменной  pibm типа computer */
main ( )
{ printf (“ персональнаяЭВМ % s\n\n “, pibm.model);
printf ( “объемоперативной памяти — %  d  К байт \n”, pibm.mem);
printf(“производительность — % d млн. операций в секунду  \n”, pibm.sp);
/* вывод на экранзначений элементов структуры */
}
В данной программеобъявляется запись computer, которая состоит из трех элементов: mem (памятьЭВМ), sp (быстродействие), model [20] (модель ПЭВМ). Переменная pibm имеет типcomputer и является глобальной. Строки pibm.model, pibm.mem, pibm. sp воператоре printf вызывают обращение к соответствующим элементам записи pibmтипа computer, которым ранее были присвоены определенные значения.
Результат работыпрограммы имеет вид:
персональная ЭВМ ПЭВМЕС 1840.05
объем оперативнойпамяти – 512 К байт
производительность – 1млн. операций в секунду
Рассмотрим использованиев программе вложенных структур:
/* Демонстрация вложенныхструктур*/
# include
struct date {int day;
int month;
int year;   };
/* Объявление записи типаdate*/
struct person{ char fam [20];
char im [20];
char ot [20];
struct datef1;};
/* Объявление структурытипа person; одним из элементов записи person является запись f1
типа date   */
main ( )
{ structperson ind1;
/* обьявление переменнойind1 типа person */
printf ( “Укажитефамилию, имя, отчество, день, \n месяц”
“ и год рождениягражданина ind1\n”);
scanf (“ % S % S  % S  %d  %d”, &ind1.fam, &ind1.im, &ind1.ot,
&ind1.f1.day, &ind1.f1.month, &ind1.f1.year );
/* Ввод сведений огражданине ind1 */
printf (“ Фамилия, имя, отчество: % S % S % S  \n”,ind1.fam, ind1.im, ind1.ot);
printf (“ Год рождения- % d  \n”, ind1.f1.year);
printf (“ Месяц  рождения — % d -й  \n”,ind1.f1.month);
printf (“ День  рождения- % d -й  \n”, ind1.f1.day);
/* Вывод сведений огражданине ind1 */
}
Структура типа date (дата) содержит три элемента: day (день), month (месяц), year (год). Структуратипа person (человек) содержит четыре элемента: fam[20] (фамилия), im[20] (имя), ot[20] (отчество), f1 (дата рождения). Последний из них (f1) – это вложеннаязапись типа date.
Результаты работыпрограммы:
Укажите фамилию, имя,отчество, день, месяц и год рождения гражданина ind1
Алексеев
Сергей
Петрович
3
5
1978
Подчеркнутая информациявводится пользователем.
Сведения о гражданинеind1
Фамилия, имя,отчество: Алексеев Сергей ПетровичГод рождения – 1978
Месяц рождения – 5-й
День рождения – 3-й
В следующей программерассмотрим использование структуры в виде элементов массива pibm. Каждыйэлемент состоит из следующих компонентов: mem (память), sp (объем винчестера),model [20] (модель ПЭВМ):
/* Массивы записей */
#include
structcomputer { int mem, sp;
char model[20];
pibm [10];};
/* объявление записитипа computer;
объявление массива pibmтипа computer */
main ( )
{ int i, j, k,priz;
for ( i=0; i
{ printf (“Введитесведения о ПЭВМ %d и признак (0-конец;
\n другая цифра-продолжение)\n”, i);
printf (“ модель ПЭВМ — ”);
scanf (“%S”,&pibm [i].model );
printf ( “объем оперативной памяти -”);
scanf (“%d”,&pibm[i].mem);
printf (“ объем винчестера — ”);
scanf ( “%d,&pibm[i].sp ”);
printf (“признак — ”);
scanf (“ %d ”,&priz );
k=i;
if  (!priz)break; }
/* Здесь !priz – операция отрицания priz; break – выход из цикла for, если priz=0  */
for (i=0; i
{
printf ( “\n О какой ПЭВМВы хотите получить сведения?\n (Введите номер  от 0 до 9)\n” );
scanf ( “%d”,&j );
 if (j>k)
{ printf (“Нет сведенийоб этой ПЭВМ \n”);
continue; }
printf (“ персональная ЭВМ %s\n ”, pibm[j].model);
printf (“объемоперативной памяти — % d Мб \n ”, pibm[j].mem);
printf (“объем винчестера- % d Мб \n ”, pibm[j].sp);
printf (“ признак – “ );
scanf ( “ %d”, &priz);
if (!priz) break; }
/* Ввод сведений о ПЭВМ изанесение в массив pibm записей типа computer (первый цикл for); вывод на экрансведений о ПЭВМ (второй цикл for) */
}
Результаты работыпрограммы:
Введите сведения оПЭВМ и признак (0-конец; другая цифра – продолжение)        
модель ПЭВМ – АТ 486SX
объем оперативнойпамяти – 32
объем винчестера – 4Гбайта
признак – 1
Введите сведения оПЭВМ и признак (0-конец; другая цифра – продолжение)
модель ПЭВМ – АТ 386DX
объем оперативнойпамяти – 64
объем винчестера – 14Гбайт
признак – 0
О какой ПЭВМ Вы хотитеполучить сведения? (Введитн номер от 0 до 9)
1
модель ПЭВМ – АТ 386DX
объем оперативнойпамяти – 16 Мб
объем винчестера – 2,5Гбайт
признак – 0
 
2.        Задание
 
Из таблицы взять заданиепо варианту и написать программу.
 
3.        Содержаниеотчета
 
Отчет должен содержать:
1)      задание к работе;
2)      программу;
3)      результатырасчетов.№ вар.  Задание 1 Опишите запись СТУДЕНТ и поместите в нее следующую информацию: Ф.И.О., оценки (математика, физика, черчение, химия, сопромат). Определите, сколько студентов имеют неудовлетворительную оценку по математике. 2 Воспользовавшись записью СТУДЕНТ из варианта №1, определите, сколько студентов имеют неудовлетворительную оценку хотя бы по одному предмету. 3 Воспользовавшись записью СТУДЕНТ из варианта №1, определите, сколько студентов сдали все экзамены на 5.     4 Воспользовавшись записью СТУДЕНТ из варианта №1, определите средний балл группы по физике.     5 Воспользовавшись записью СТУДЕНТ из варианта №1, определите количество отличных оценок, полученных группой по всем предметам.     6 Воспользовавшись записью СТУДЕНТ из варианта №1, определите, сколько студентов имеют средний балл от 4 до 5.     7 Воспользовавшись записью СТУДЕНТ из варианта №1, определите, какое количество неудовлетворительных оценок получено по всем предметам.     8 Воспользовавшись записью СТУДЕНТ из варианта №1, определите, какой из предметов был сдан группой лучше всего.     9 Воспользовавшись записью СТУДЕНТ из варианта №1, определите, сколько студентов не имеют задолженностей.    10 Опишите запись АНКЕТА и поместите в нее следующую информацию: Ф.И.О.(фамилия, имя, отчество), адрес (улица, номер дома, номер квартиры), пол, возраст. Определите, сколько лиц женского и сколько мужского пола проживают в одном доме.    11 Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько лиц мужского пола в возрасте старше 18 лет и младше 60 проживают на одной улице.    12 Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько лиц женского пола в возрасте старше 30 лет проживают в одном доме.    13 Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько детей до 7 лет проживают на одной улице.    14 Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько лиц мужского пола и женского в возрасте до 50 лет проживают на одной улице.    15 Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько детей от 1 года до 5  проживают в одном доме.    16 Опишите запись ТРАНСПОРТ и поместите в нее следующую информацию: Ф.И.О. (фамилия, имя, отчество пассажира), багаж (количество вещей, вес в кг). Определить число пассажиров, вес багажа которых превышает 30 кг.    17 Воспользовавшись записью ТРАНСПОРТ из варианта №16, определите, имеется ли пассажир, багаж которого состоит из одной вещи весом в 20 кг.    18 Воспользовавшись записью ТРАНСПОРТ из варианта №16, определите средний вес багажа.    19 Воспользовавшись записью ТРАНСПОРТ из варианта №16, определите количество пассажиров, вес багажа которых превосходит средний.    20 Воспользовавшись записью ТРАНСПОРТ из варианта №16, определите количество пассажиров, имеющих более трех вещей.
Литература
1.  Подбельский В.В. Язык Cu ++: Учебноепособие. — М.: Финансы и статистика,1995, — 560 с.
2.  Страуструп Б. Язык программированияСг ++. — М.: Радио и связь, 1991. — 352 стр.
3.  Собоцинский В.В. Практический курсTurbo Cu ++. Основы объктно- ориентированного программирования. — М.: Свет,1993. — 236 с.
4.  Романов В.Ю. Программирование наязыке Cu ++. Практический подход. — М.: Компьтер, 1993. — 160 с.
5.  Уинер Р. Язык турбо Cu. — М.: Мир,1991. — 384 с.
6.  Юлин В.А., Булатова И.Р. Приглашениек Cu. — Мн.: Высш. Шк., 1990,- 224 с.
7.  Котлинская Г.П., Галиновский О.И.Программирование на языке Cu. -Мн.: Высш. Шк., 1991. — 156 с.


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.