Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 24

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 24 страницаОсновы программирования (947332) страница 242013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 24)

Над записями возможно выполнение следую­щих операций.Доступ к полям записи. Синтаксическая диаграмма доступа к полям за­писи представлена на рис. 4.35.Например, к полям переменной Sotr типа Human, объявленного выше,можно обратиться следующим образом:Sotr. BirthDay Day: =-25;т: =SotKBirthDay.

Year;...В том случае, если доступ к полям записи осуществляется многократно,целесообразно обращаться к полям записи с использованием оператора при­соединения with (рис. 4.36). Например, для переменной Sotr типа Human воз­можны следующие варианты доступа к полю Day с применением оператораwith:withИдентификаторзаписи / поляГтЧ^)чИдентификаторполяКЕНЗначениеРис. 4.36. Синтаксическая диаграмма <Оператор присоединения>1384. Структурные типы данныха)б)в)r)withwithwithwithSotr do BirthDay.Day:=30;SotnEirthDay do Day: =24;Sotn BirthDay do Daay:=31;Sotr dowith BirthDay do Day:= 7;...Присваивание записей.

Операция возможна при совпадении типов запи­сей и выполняется последовательно поле за полем. Например:OtdelfiJ—Sotr;...Ввод записей с клавиатуры и вывод их на экран выполняются по полямпо правилам ввода переменных соответствующих типов.Пример 4.23. Разработать программу, которая вводит в массив записейинформацию о студентах учебной группы: фамилию и дату рождения. Орга­низовать поиск информации о студенте, фамилия которого вводится с клави­атуры.Program ex;Typedata=record(тип запись данные о дате}year: word; {год}month:LJ2; {месяц}day:L.31;{день}end;zap-record{тип запись о студенте}fam:stringfl 6J; {фам ил ия}birthday: data;{дата рождения}end;Var fb:array[L.25] of zap; { массив данных о группе студентов}fff:string; {строка для ввода фамилии}ij,m,n:byte;key.'boolean; {ключ поиска, если фамилия найдена - true}BeginWriteLnCВведите данные о количестве студентов п<=25');ReadLn(n);т:=0;{ввод исходных данных с клавиатуры поле за полем}repeatт:=т-^1;Write(*Beedume фамилию :');Readln(fb[m].fam);Write(*Введите год роэюдения : '); Readln(fb[m]Mrthday.year);WriteCмесяц: ');ReadLn(fb[m].birthday.month);WriteCдень: *);ReadLn(fb[m].birthday.day);until n=m;WriteLn;139Часть /.

Основы алгоритмизации и процедурное программирование{вывод исходных данных на экране с помощью оператора with}WnteLn('Список студентов группы '); WriteLn;for /;=7 to т dowithfbfijdobeginWrite(i:2,fam:17);with birthday doWriteLn(year:6, month:4y day:4);end;WriteLn;{поиск данных в массиве записей}WriteLn('Beedume фамилию');ReadLniffJ):i:=0;key:=false; {признак «данные не найдены»}repeat i: =1+1 ;if/bfij.fam =fffthen key: = trueuntil key or( i=m);{вывод результата}if key then {если такой студент найден, то выводим данные}withfb[i]dobeginWriteLnCДaнныe о студенте : ');Write(fam:18/ ');with birthday doWriteLn(day:2,': \month:2, V \year:5,' года');endelse WriteLn('Данных о студенте : \fff:18,' нет.');End.Записи с вариантами.

Иногда бывает удобно и естественно рассматри­вать несколько типов данных как варианты одного, т. е. в пределах одной за­писи иметь различную информацию в зависимости от конкретного значениянекоторых полей. Для обеспечения такой возможности запись кроме фикси­рованного списка полей может иметь еще и вариантную часть (4.37).Из диаграммы видно, что вариантная часть может содержать несколькоальтернатив, в каждой из которых задается список полей, присущих данномуварианту.

Каждой альтернативе предшествует константа, идентифицирую­щая соответствующий вариант.Рассмотрим несколько примеров определения записей с вариантами:• без предварительного описания типа:1404. Структурные типы данныхТиппеременнойcase\<УИдентификатор]переменнойЗначениеконстантыИдентификаторполяhGKDHООh©iТипполяОРис.

4.37. Синтаксическая диаграмма <Вариантная часть записи>Var М: recordcase {вариантная часть}byte of {тип констант для идентификации вариантов}0: (by: array [0..3J of byte); {массив из 4 байт}1: (wo: array [O..IJ of word); {массив из 2 слов}2: (lo: longint); {переменная длиной 4 байта}end;...• с предварительным объявлением типа:ТуреFigure = (Square, Triangle, Circle); {перечисляемый тип}Paramf^" record{тип ~ запись с вариантами}X,Y: real;{фиксированные поля}case{вариантная часть}Fig:Figure of { переменная и типидентифицирующих констант}Square:(Side: real);Triangle: (Sidel,Side2,Side3: real);Circle:(Radius: real);end;Var Param: Paramf; {объявление переменной}Конкретное значение переменной типа «запись с вариантами» присваи­вается точно так же, как и обычной записи: вводом с клавиатуры, с помощьюлитеральной константы и с помощью типизированной константы.

Однакопри объявлении инициализированной переменной для вариантной части за­дается только один вариант.141Часть ]. Основы алгоритмизации и процедурное программированиеНапример, пусть запись должна содержать либо данные о человеке, ли­бо о корабле (так, Георгий Седов - это и имя человека, и название корабля).Для этого опишем следующую запись с вариантамиТуреForma = record {запись места прописки человека и корабля}case {вариантная часть}boolean of {тип констант, идентифицирующих варианты}{вариант для человека}True: (Birthplace: string[40]; {место проживания}{вариант для корабля}False: (Country: stringf20J; {страна}EntryPort: string[20]; {порт}EntryDate: array[L.3] of word; {дата}Count: word) {водоизмещение}end;.,.Типизированные константы для задания исходных данных двух записей:Object2 - сведения о человеке. Object 1 - сведения о корабле определяютсятак:ConstObject J: Forma = (Country: 'Польша*;EntryPort: 'Ленинград';EntryDate: (16,3,89);Count: 12);Object2: Forma = (BirthPlace: 'Москва');...Следует отметить, что идентификаторы полей во всех вариантах долж­ны быть различны, а также не совпадать с именами полей фиксированной ча­сти.

Для некоторых значений констант, идентифицирующих вариант, поля ввариантной части записи могут отсутствовать, тогда после двоеточия можнопоместить пустой список «()».Кроме того, при использовании записей с вариантами необходимо учи­тывать некоторые особенности. Так, для размещения переменной типа за­пись всегда отводится фиксированный объем памяти в соответствии с объе­мом, занимаемым самым большим из вариантов, т. е. различные вариантыразмещаются на одном участке памяти, как бы «накладываясь» друг на дру­га.Следует также учитывать, что транслятор языка не содержит никакихсредств контроля корректной обработки вариантных записей.

Это означает,что в любое время возможен доступ ко всем полям во всех вариантах. За со­ответствием хранимой информации и вариантом доступа к ней должен сле­дить сам программист. Однако именно эта особенность записей с варианта­ми может быть использована для неявного преобразования типов данных.1424. Структурные типы данныхПоскольку различные варианты ссылаются на один участок памяти, как бы«накладываясь» друг на друга, можно обращаться к содержимому памятипоочередно, то как к переменной одного типа, то как к переменной другого.Например:ТуреРегет= record {запись с вариантами}case byte of0: Wo:word;{переменная типа word}1: Lodongint; {переменная типа longint}2: Re:real;{переменная типа real}end;Var OPerem;Begin...C.Lo:=0; {очищаем область}C.Wo:=10; {в вариантное поле по шаблону целого без знака запи­сываем число 10}WriteLn(C.Lo:10);...

{печатается содержимое вариантного поля пошаблону длинного целого}В этом примере под поля будет выделено 6 байт памяти в соответст­вии с самым длинным типом во внутреннем представлении. Пользовательможет работать с этим полем по любому из шаблонов, используя идентифи­каторы соответствующих полей записи.Задания для самопроверкиЗадание 1. Разработайте профамму, которая, используя тип запись, формируетмассив данных о сотрудниках отдела, содержащий следующую информацию: фами­лию, год поступления в отдел, стаж работы в отделе, общий стаж работы. Затем сор­тирует полученный массив в соответствии со стажем работы в отделе и выводит пер­вые пять фамилий из отсортированного списка.

После чего определяет среди первыхпяти сотрудников сотрудника, у которого общий стаж наибольший.Задание 2. Разработайте программу, которая формирует массив записей о сту­дентах некоторой группы, содержащий следующую информацию: фамилию, оценкиза последнюю сессию по четырем предметам и размер стипендии. Фамилию и от­метки программа должна вводить с клавиатуры, а размер стипендии считать исходяиз оценок: все «5» - повышенная (+ 25%), есть одна «4» - повышенная (+10%), неттроек - обычная стипендия, есть одна тройка - социальная стипендия (-15%), боль­ше одной тройки - стипендия 0. После чего программа должна сортировать массивпо размеру стипендии и выводить его на экран.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее