Главная » Просмотр файлов » metod_15.03.04_atppp_oaip_up_2016

metod_15.03.04_atppp_oaip_up_2016 (1016600), страница 13

Файл №1016600 metod_15.03.04_atppp_oaip_up_2016 (Методические документы) 13 страницаmetod_15.03.04_atppp_oaip_up_2016 (1016600) страница 132017-07-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Таким образом, элемент записи можно указывать как влевой части оператора присваивания, так и в выражениях в правой части. Надэлементами записи можно выполнять все действия, которые допустимы дляданных его типа. Например, если тип элемента записи – целый, то можновыполнять все операции, допустимые для целых данных. Так, для рассмотренногопримера (экзаменационной ведомости) над элементами записи можно, например,выполнить следующие операции:а) ввести значения порядковых номеровRead(C1.N);Read(C2.N);б) вычислить сумму первых двух оценокSumma1 := C1.Ball[1] + C1.Ball[2];Summa2 := C2.Ball[1] + C2.Ball[2];73Обращение к записи в целом, а не только к отдельным её элементам,допускается лишь в операторе присваивания.

Слева и справа от знакаприсваивания при этом должны использоваться имена записей одинакового типа.8.2. Оператор присоединения.Мы отметили, что обращение к элементам записи происходит с помощьюуточнённого имени. Оператор присоединения позволяет упростить обращение кэлементу записи. Имя записи выносится в заголовок оператора присоединения, а вблоке Begin – end используются только имена элементов записи.Оператор присоединения имеет вид:With имя_записи doBeginОператорыEnd;Пример. Для 1-ой экзаменационной ведомости (списка 1) операторприсоединения можно записать так:With C1 doBeginRead(N);Summa := Ball[1] + Ball[3];End;Пример.

Имеется ведомость учащихся с оценками:Иванов Иван2Петров Пётр2Сидоров Сидор 3Составить программу для вычисления среднего балла.Поскольку в каждой строке ведомости представлены данные различноготипа, введём запись с именем СПИСОК, состоящую из двух полей:Name – фамилия и имя – упакованный массив из 15 символов;Ball – оценка – целое число.Для вычисление среднего балла Midball находится сумма всех оценокSumma, которая делится на число студентов N.Program W123;Const N = 3; (* число учащихся в списке *)M = 15; (* максимальная длина Name *)Type T = RecordName: Packed Array [1..M] of Char;Ball: Integer;End;Var Spisok: T;I, K: Integer; (* параметры цикла *)Midball: Real; (* средний балл *)Summa: Integer; (* сумма оценок *)BeginSumma := 0;Writeln(‘ введите таблицу ‘);74For I := 1 to N doBeginFor K := 1 to M doRead(Spisok.Name[K]);Read(Spisok.Ball);Summa := Summa + Spisok.Ball;End;Midball := Summa / N;Writeln(‘----------------------------‘);Writeln(‘ средний балл = ‘, Midball: 5: 2);End.Описание записи сделано в разделе Type, где Т – имя типа.

В разделепеременных Var указано, что переменная СПИСОК тип Т.Раздел операторов состоит из двух циклов: один вложен в другой. Внешнийцикл с параметром I выполняется столько раз, сколько имеется фамилий введомости (в данном случае N = 3). Внутренний цикл с параметром Кпредназначен для ввода фамилии и имени. На фамилию и имя отводится поле из15 позиций. Лишние позиции поля заполняются пробелами. Внутри поляфамилию и имя можно располагать свободно, например:_ _ _ _ Иванов _ Иванили _ _Иванов _ Иван_ _или _ _ _Иванов _ Иван_или _ Иванов_ _ Иван_ _После имени следует оценка.Пример.

Присвоить звание “отличник” тем, у кого по всем предметам пятёрки.Из исходного списка С1, в котором содержатся фамилии и оценки, нужносформировать другой список С2, состоящий из отличников. Для формированиясписков используется массив массивов.Program otl;Const K = 5; (* количество человек *)Type Tip = RecordName: Array [1..K, 1..15] of Char;Math: Array [1..K] of Integer;Phis: Array [1..K] of Integer;Chem: Array [1..K] of Integer;End;Var C1, C2: Tip; (* списки *)I, J, N: Integer; (* параметры циклов *)BeginJ := 0;Writeln(‘ введите фамилию и оценки: ‘);For I := 1 to K doBeginFor N := 1 to 15 do Read(C1.Name[I, N]);Read(C1.math[I], C1.Phis[I], C1.Chem[I]);If (C1.Math[I] = 5) And75(C1.Phis[I] = 5) And(C1.Chem[I] = 5) thenBeginJ := J + 1;C2.Name[J] := C1.Name[I];End;End;If J = 0 then Writeln(‘нет отличников ‘)else BeginWriteln(‘-----------------------‘);Writeln(‘отличники:‘);For I := 1 to J doWriteln(C2.Name[I]);End;End.Пример.

Дан многочлен 4А + 5В – 8С + 16А – 3А + 9К – 1АНайти подобные члены для переменной А и вычислить суммарный коэффициент.Один элемент многочлена можно считать записью, так как он состоит из данныхразличного типа – коэффициента (число) и буквы.Введём обозначения:М1 – элемент многочлена (запись),М2 – результирующий элемент (запись),Coef – коэффициент (элемент записи),Buk – буква (элемент записи),Elem – тип записи,Sum – сумму коэффициентов.Program Ex4;Type Elem = Record(* тип элемента *)Coef: Integer; (* коэффициент *)Buk: Char; (* буква *)End;Var M1: Elem; (* входной элемент *)M2: Elem; (* выходной элемент *)Sum: Integer; (* сумма коэффициентов *)BeginSum := 0;Writeln(‘ введите многочлен ‘);While Not EOLN do(* end of line *)BeginRead(M1.Coef, M1.Buk);If M1.Buk = ‘A’ then Sum := Sum + M1.Coef;End;M2.Coef := Sum;M2.Buk := ‘A’;Writeln(‘подобный член = ‘, M2.Coef: 3, M2.Buk);End.76Запись - это комбинированный тип, сложная переменная с несколькимикомпонентами.

В отличие от массивов компоненты записи (поля ) могут иметьразные типы, и доступ к ним осуществляется не по индексу, а по имени поля.Записи могут входить в качестве компонентов в другие переменные,например, можно сформировать массив записей.К каждому компоненту записи можно обратиться, используя имяпеременной типа записи и имя поля, разделённых точкой.В области действия оператора присоединения With имена переменныхзаписей и полей, указанные в его заголовке, можно опускать.

Трансляторавтоматически формирует полные имена. В области действия оператораприсоединения нельзя изменять элементы списка переменных-записей и полей,указанные в заголовке.Пример. Определить число студентов 1974 г. рождения.Type Student = RecordName: Array [1..15] of Char;Date: Integer;End; { of record }Var Grope: Array [1..30] of Student;K, I: Integer;BeginK := 0;For I := 1 to 30 doWith Grope[I].Date doIf Date = 1974 then K := K + 1;Writeln(K);End.В данном примере в заголовке оператора With стоит Grope[I] – элементмассива, зависящий от параметра I, поэтому оператор присоединения вставленвнутрь цикла по I.8.3. Записи с вариантамиПри определении комбинированного типа в него можно включатьвариантную часть.

Это означает, что разные переменные, хотя они и относятся кодному типу, могут иметь различные структуры. Например, пусть необходимозадать информацию о некотором человеке, указав фамилию и год рождения, атакже, если это мужчина, то сообщить, военнообязанный ли он и какую имеетспециальность; если это женщина, то указать, замужем ли она и сколько имеетдетей:Type Pol = (Mug, Gen);Chel = RecordFam: Array [1..10] of Char;God: 1900..2000;MG: Pol; { заголовок вариантной части }Case Pol ofMug: (Voen: Boolean; Spec: Array [1..15] of Char);Gen: (Zamugem: Boolean; Dety: Integer);77End; (* of record *)Var Ch1, Ch2: Chel;Вариантная часть записи начинается оператором Case и следует за общейчастью; после её окончания в записи не появляться никакие другие поля, поэтомуоператор Case не закрывается служебным словом End.Обычно некоторое поле общей части указывает вариант.

В примере это полеMG, называемое полем признака или дискриминации.Все варианты описываются внутри оператора Case. Каждый вариантхарактеризуется задаваемым в скобках списком описаний присущих емукомпонентов.Перед списком стоит одна или несколько меток. Тип этих метокуказывается в заголовке вариантной части (в отличие от оператора варианта, гдеселектором варианта является выражение, а не тип).

Тип должен быть скалярным(не массивы и не записи), При этом он задаётся именем.В явном виде указывать тип в заголовке не разрешается.Часто для сокращения записи поле признака (дискриминант) включается взаголовок вариантной части:Case MG: Pol ofДля переменной Ch1 типа Chel можно написать следующие операторыприсваивания:Ch1.Fam := ‘Solomatin’;Ch1.God := 1977;Ch1.MG := Mug;Ch1.Voen := True;Ch1.Spec := ‘Programmist’;Задав значение поля признака MG (некоторую константу типа Pol), можноприсваивать новые значения только полям вариантной части, помеченных такойже константой.Хотя никакого контроля поля селектора при обращении к компоненту извариантной части не производится, для надёжности работы программы следуетпридерживаться этого правила.В любой записи может быть только одна вариантная часть, и, если она есть,она должна располагаться за всеми фиксированными полями.Пример.Type Alfa = Array [1..10] of Char;Variety = (Book, Journal, Newspaper);Name = RecordFirst, Last: Alfa;End; (* of Name *)Edition = RecordName1: Name;Title, Publishers: Alfa;Case V: Variety ofBook: (Years: Integer);Journal: (Number: 1..12;Volume: Integer;78YearJ: 1900..2000);Newspaper: (Day: 1..31;Month:1..12;YearN: Integer);End; (* of Edition *)………………………Var E: Edition;…………………….…E.Name1.First := ‘Niklau’;E.Name1.Last := ‘Wirth’;E.Title := ‘Pascal’;E.Publichers := ‘Springer’;E.V := Journal;E.Number := 5;E.Volume := 12;E.YearJ := 1972;В описании записи разрешается использовать только одну вариантнуючасть, причём она должна быть записана после фиксированной части.

Однако ввариантной части, в свою очередь, может появиться вариантная часть,следовательно, могут быть вложенные друг в друга вариантные части.При записи варианта обязательно присутствие круглых скобок, даже если вних ничего не заключается. В этом случае записывается просто: ( ).Пример. Определить площадь геометрической фигуры.X и Y – координаты одного из углов прямоугольника или треугольника илицентра окружности.Area – площадь.Skew – угол наклона одной из сторон прямоугольника.Side1 и Side2 – длины двух смежных сторон прямоугольника.Inclin – угол наклона одной из сторон треугольника.Side – её длина.Angle1 и Angle1 – углы, образованные с нею двумя другими сторонами.Diameter – диаметр окружности.Program Opr;Const Pi = 3.141592;Type Figure = (Triangle, Rectangle, Circle);GeometricFigure = RecordX, Y: Real;Area: Real;Case Shape: Figure ofTriangle: (Inclin, Side, Angle1,Angle2: Real);Rectangle: (Skew, Side1, Side2: Real);Circle: (Diameter: Real);End; (* of record *)Var GFig: GeometricFigure;Begin……………79CaseGFig.ShapeofTriangle:GFig.Area0.5*SQR(GFig.Side)/(cos(GFig.Angle1)/sin(GFig.Angle2)+cos(GFig.Angle2)/sin(GFig.Angle1));Rectangle: GFig.Area := GFig.Side1 * GFig.Side2;Circle: GFig.Area := Pi * SQR(GFig.Diameter) / 4;End; (* of Case *)…………………….End.:=9.

ТИПИЗИРОВАННАЯ КОНСТАНТАТипизированную константу можно использовать как переменную. Еёследует рассматривать как инициализированную переменную, значение которойзадано с самого начала. Применение типизированных констант экономитмашинное время, т.к. начальное присвоение значений уже выполняетсякомпилятором.Типизированные константы задаются, как обычные, но дополнительно ониполучают и свой тип. Необходимо принять во внимание, что заданные значенияимеются в распоряжении программы только при новом ее пуске, а затем могутизменять свое значение. Повторный пуск программы не с самого начала можетдать уже другие значения.Преимущество применения типизированных констант заключается впростоте присвоения начальных значений для переменных.Синтаксис (вид описания):Const имя: тип = значение;9.1.

Простая типизированная константаЗадается как простая переменная.Пример: Const A:Integer=1267;Kol:Real=12,32;Sim:Char =’Z’B:Char=Ord(65);Типизированные константы разрешается использовать в место переменнойв виде параметров в подпрограммах.Типизированная константа представляет собой переменную с заданнымзначением. Т.о., её нельзя использовать в описании других констант или типов.Пример: Const X:Integer=0;Y:Integer=50;Type Mas: Array [X..Y] of Integer; это недопустимо.9.2.

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

Тип файла
PDF-файл
Размер
1,01 Mb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

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