Скачать презентацию Язык программирования Паскаль Методы сортировок Тип запись Массивы Скачать презентацию Язык программирования Паскаль Методы сортировок Тип запись Массивы

Язык программирования Паскаль 7.ppt

  • Количество слайдов: 48

Язык программирования Паскаль Методы сортировок Тип запись. Массивы записей Файловый тип данных Файлы записей Язык программирования Паскаль Методы сортировок Тип запись. Массивы записей Файловый тип данных Файлы записей 1

Повторение 1 Двумерный массив А имеет размерность Nx. N. Определите какую задачу решает фрагмент Повторение 1 Двумерный массив А имеет размерность Nx. N. Определите какую задачу решает фрагмент алгоритма. For i: =1 To N Div 2 Do For j: =1 To N Do Begin C: =a[i, j]; a[i, j]: =a[N-i+1, j]; a[N-i+1, j]: =c End; 1 меняет порядок строк массива на обратный 2 меняет порядок столбцов массива на обратный 3 меняет местами элементы главной и побочной диагонали 4 меняет местами элементы i-ой строки и j-го столбца 5 ничего не меняет в массиве 2 Ответ: 1

Повторение 2 Какие из следующих выражений принимают значения TRUE (а) [5]=[5, 5, 5] (б) Повторение 2 Какие из следующих выражений принимают значения TRUE (а) [5]=[5, 5, 5] (б) [э. . я]=[э, ю, я] (в) [‘ 5’]<=[‘ 0’. . ’ 6’, ’ 9’, ‘ 4’. . ’ 8’] (г) [‘c’, ’b’]=[‘c’. . ’b’] Выберите наиболее полный ответ. 1 (а), (б), (г) 2 (б), (г) 3 (а), (б), (в), (г) 4 (a), (в) 5 (б) Ответ: 4 3

Повторение 3 Укажите верные описания множества: Var M 1: set of char; M 2: Повторение 3 Укажите верные описания множества: Var M 1: set of char; M 2: set of Integer; M 3: set of Real; M 4: set Of 1. . 256; Ответ: М 1 4

Методы сортировок l l l Сортировка – процесс упорядочения заданного множества объектов по заданному Методы сортировок l l l Сортировка – процесс упорядочения заданного множества объектов по заданному признаку. Обычно сортировку подразделяют на два класса: внутреннюю и внешнюю. При внутренней сортировке все элементы хранятся в оперативной памяти, таким образом, как правило, это сортировка массивов. При внешней сортировке — элементы хранятся на внешнем запоминающем устройстве, это сортировка файлов. Одно из основных требований к методам сортировки — экономное использование памяти. Это означает, что переупорядочение нужно выполнять «на том же месте» , то есть методы пересылки элементов из одного массива в другой не представляют интереса. 5

Данные элемента массива можно сортировать: l по возрастанию – каждый следующий элемент больше предыдущего: Данные элемента массива можно сортировать: l по возрастанию – каждый следующий элемент больше предыдущего: a[1]a[2]>…>a[n] l по невозрастанию – каждый следующий элемент не больше предыдущего: a[1]≥a[2] ≥…≥a[n] l 6

Метод «пузырька» – метод простого обмена l l Производится последовательное упорядочение смежных пар элементов Метод «пузырька» – метод простого обмена l l Производится последовательное упорядочение смежных пар элементов массива: x[1] и x[2], x[2] и x[3], …x[N-1] и x[N]. Если первый элемент больше второго, то элементы переставляются. В итоге, после N -1 сравнения максимальное значение переместится на место элемента X[N]. Затем ту же процедуру повторяют до X[N-1] элемента и т. д. Таким образом, нужно выполнить данную процедуру N-1 раз. При первом прохождении нужно сравнить N -1 пар элементов, при втором – N-2 пары, при k-ом прохождении – N-k пар. 7

l l l Дан массив из 5 элементов: 5 8 1 6 7 5 l l l Дан массив из 5 элементов: 5 8 1 6 7 5 1 8 6 7 4 сравнения 5 1 6 8 7 5 1 6 7 8 l 5 1 6 7 8 1 5 6 7 8 l И т. д. l l 3 сравнения 8

Program Sort 1; Const N=10; Type mas=array[1. . N] of real; Var x: mas; Program Sort 1; Const N=10; Type mas=array[1. . N] of real; Var x: mas; i, k: integer; a: real; Begin For i: =1 to N do {Ввод элементов массива} read(x[i]); For i: =1 to N-1 do {Сортировка} For j: =1 to N-i do If x[j]>x[j+1] then Begin a: =x[j]; x[j]: =x[j+1]; x[j+1]: =a; End; For i: =1 to N do {Вывод элементов массива} Write(x[i], ’ ‘) End. 9

Модифицированный «пузырек» l. Идея модификации: просматривать массив до тех пор, пока существует обмен между Модифицированный «пузырек» l. Идея модификации: просматривать массив до тех пор, пока существует обмен между элементами. Как только при очередном просмотре не происходит ни одного обмена между элементами, это означает, что массив отсортирован. При таком подходе может потребоваться один просмотр массива, если массив отсортирован. l Программа: Const n=100; Var a: array[1. . n] Of Integer; i, k, R: Integer; F: Boolean; Begin … i: =n; {длина неотсортированной части массива} repeat F: =true; {массив является отсортированным} For k: =1 to i-1 Do if a[k]>a[k+1] then begin R: =a[k]; a[k]: =a[k+1]; a[k+1]: =R; F: =false {массив был неотсортированным} end; i: =i-1; until F and (i>1); … 10 end. Сколько просмотров потребуется в рассмотренном выше примере?

Сортировка вставками (метод прямого включения) l l l Начиная со 2 элемента, каждый текущий Сортировка вставками (метод прямого включения) l l l Начиная со 2 элемента, каждый текущий элемент с номером k запоминается в промежуточной переменной. Затем просматриваются предыдущие k-1 элемент и ищется место вставки k-го элемента таким образом, чтобы не нарушить упорядоченности, при этом все элементы превышающие k-й сдвигаются вправо. На освободившееся место вставляется k-й элемент. 11

l Например, дан массив 5 4 3 1 l 4531 l 3451 l 1345 l Например, дан массив 5 4 3 1 l 4531 l 3451 l 1345 l 12

Program Sort 2; Const N=10; Type Tvector=array[1. . N] of real; Var A: Tvector; Program Sort 2; Const N=10; Type Tvector=array[1. . N] of real; Var A: Tvector; b: real; i, j, k: integer; Begin For i: =1 to N do read(A[i]); {Ввод элементов массива} For k: =2 to N do Begin b: =A[k]; {Запоминаем текущий элемент в промежуточной переменной} j: =k-1; {Ищем новое место вставки, сдвигая на 1 элемент вправо} While (j>0) and(A[j]>b) do Begin A[j+1]: =A[j]; j: =j-1; end; A[j+1]: =b; {На освободившееся место вставляется элемент} End; For i: =1 to N do {Вывод элементов массива} 13 write(A[i]) End.

Сортировка методом простого выбора Алгоритм: l 1) выбрать максимальный элемент массива, l 2) поменять Сортировка методом простого выбора Алгоритм: l 1) выбрать максимальный элемент массива, l 2) поменять его местами с последним элементом (после этого самый большой элемент будет стоять на своём месте), l 3) повторить пункты 1 -2 с оставшимися n-1 элементами. 14

Например: l 52746 l 5 2 6 4 7 l 52467 l 42567 l Например: l 52746 l 5 2 6 4 7 l 52467 l 42567 l 24567 15

Program sort 3; Const N=10 Var a: array[1. . N] of integer; i, j, Program sort 3; Const N=10 Var a: array[1. . N] of integer; i, j, k, n, m: integer; begin for i: =1 to N do read(a[i]); {Ввод элементов массива} for i: =n downto 2 do begin k: =i; {Запоминаем номер и } m: =a[i]; {значение текущего элемента} for j: =1 to i-1 do {Поиск максимального элемента} if a[j]>m then begin k: =j; m: =a[k] end; if k<>i then begin {Меняем местами с последним} a[k]: =a[i]; a[i]: =m end; for i: =1 to N do write(a[i]: 3) {Вывод элементов массива} 16

Тип запись l. При работе с массивами основное ограничение заключается в том, что каждый Тип запись l. При работе с массивами основное ограничение заключается в том, что каждый элемент должен иметь один и тот же тип. Но при решении многих задач возникает необходимость хранить и обрабатывать совокупности данных различного типа. l. Пример Для каждого из 25 студентов известны фамилия, дата рождения и оценка (в баллах) по пяти дисциплинам. Требуется вычислить среднюю оценку каждого студента и выбрать имеющих максимальный средний балл. l. В данном случае фамилия может быть представлена строкой из 15 символов, дата рождения – строка из 10 символов, оценка – это целое число, а средний балл должен быть представлен вещественным (действительным) числом. l. В Паскале для описания комбинаций объектов разных типов используются записи. 17

Запись - это структурированный тип, содержащий набор объектов разных типов. l Составляющие запись объекты Запись - это структурированный тип, содержащий набор объектов разных типов. l Составляющие запись объекты называются ее полями. В записи каждое поле имеет свое собственное имя. l Чтобы описать запись, необходимо указать ее имя, имена объектов, составляющих запись и их типы. l Описание типа запись: Type <имя записи> = Record <поле 1> : <тип 1>; <поле 2> : <тип 2>; . . . <поле n> : <тип n> End; l 18

19 19

Данные для решения рассматриваемой задачи можно описать как запись следующим образом: Type student = Данные для решения рассматриваемой задачи можно описать как запись следующим образом: Type student = Record fam: String[15]; {поле фамилии студента} date: String[10]; {поле даты рождения студента} b 1, b 2, b 3, b 4, b 5: 2. . 5; {поля баллов по дисциплинам} sb: Real {поле среднего балла} End; l Переменная типа student будет иметь смысл структуры, содержащий информацию, характеризующую одного студента. l 20

Чтобы обратиться к любому элементу записи (к отдельному полю), используется составное имя, имеющее структуру: Чтобы обратиться к любому элементу записи (к отдельному полю), используется составное имя, имеющее структуру: <имя переменной>. <имя поля>. Например: student. fam: =’Петров А. А. ’; student. b 1: =3; l Каждое поле записи может иметь любой тип (кроме файлового), в частности, оно может быть снова записью. Например, поле date – дата рождения может быть описано так: Type student = Record fam: String[15]; {поле фамилии студента} date: record {запись даты рождения студента} god: integer; mes: 1. . 12; den: 1. . 31 end; b 1, b 2, b 3, b 4, b 5: 2. . 5; {поля баллов по дисциплинам} sb: Real {поле среднего балла} End; l Чтобы обратиться к записи 3 уровня, нужно записать составное имя: student. date. god: =1979. l 21

Имена полей, составляющих запись, не должны повторяться. l Имя поля может совпадать с именем Имена полей, составляющих запись, не должны повторяться. l Имя поля может совпадать с именем другой переменной. Например, var p: record p 1: Integer; end; p 1: integer; begin p 1: =2; readln(p. p 1); writeln(p 1, ' ', p. p 1); p 1: =p. p 1; writeln(p 1, ' ', p. p 1); end. l 22

l Присваивание значений одной записи другой возможно только при полной идентичности описаний. Описание 1 l Присваивание значений одной записи другой возможно только при полной идентичности описаний. Описание 1 Описание 2 Описание 3 Type T=record Var p, q: record Var p: record p 1: Integer; end; Var p: T; q: T; end; q: record p 1: Integer; end; Описания 1 и 2 дадут возможность осуществлять присваивания p: =q и q: =p, при описании 3 это будет невозможно. 23

Массивы записей Чтобы хранить в памяти ЭВМ информацию обо всех 25 студентах группы, необходимо Массивы записей Чтобы хранить в памяти ЭВМ информацию обо всех 25 студентах группы, необходимо ввести массив gruppa, представляющий массив записей: Var gruppa: Array[1. . 25] Of student; l Доступ к элементам массива можно осуществить двумя способами: указанием имени переменной и имени поля и с помощью оператора присоединения. l Указание имени переменной и имени поля: Например, чтобы обратиться к году рождения 5 -го по списку студента, нужно записать: student[5]. datе. god. l Что означают следующие записи: gruppa[2]. fam, gruppa[3]. sb, gruppa[1]. b 4? l 24

Ввод фамилий и оценок учащихся, то есть элементов массива gruppa, можно задать так: For Ввод фамилий и оценок учащихся, то есть элементов массива gruppa, можно задать так: For i: = 1 To 25 Do Begin Readln (gruppa[i]. fam); Readln (gruppa[i]. date); Readln (gruppa [i]. b 1); Readln (gruppa [i]. b 2); Readln (gruppa [i]. b 3); Readln (gruppa [i]. b 4); Readln (gruppa [i]. b 5); End; l 25

Использование оператора присоединения позволяет осуществлять доступ к полям записи, таким образом, как если бы Использование оператора присоединения позволяет осуществлять доступ к полям записи, таким образом, как если бы они были простыми переменными. l Общий вид оператора присоединения: With <имя записи> Do <оператор>. l Внутри оператора к компонентам записи можно обращаться только с помощью имени соответствующего поля. l Пример For i : = 1 To 25 Do With gruppa [i] Do Begin Readln (fam); Readln (date); Read. Ln (b 1, b 2, b 3, b 4, b 5); End; l 26

Program Example; Const m=25; Type student = Record fam : String[15]; date : String[10]; Program Example; Const m=25; Type student = Record fam : String[15]; date : String[10]; b 1, b 2, b 3, b 4, b 5 : 2. . 5; sb : Real; End; Var gruppa : Array[1. . m] Of student; p : student; i : Integer; sbmax : Real; Begin {ввод исходных данных} For i: =1 To m Do With gruppa[i] Do Begin Write ('Введите фамилию: '); Readln(fam); Write ('Введите дату рождения: '); Readln(date); Write ('Введите пять оценок: '); Read. Ln(b 1, b 2, b 3, b 4, b 5); End; For i: =1 To m Do {вычисление среднего балла} With gruppa[i] Do sb: =(b 1+b 2+b 3+b 4+b 5)/5; {поиск максимального среднего балла} sbmax: =0; For i: =1 To m Do If gruppa[i]. sb>=sbmax Then sbmax: =gruppa[i]. sb; {печать результатов} For i: =1 To m Do If gruppa[i]. sb=sbmax Then With gruppa[i] Do Writeln(fam: 20, '-', date: 15, ’-‘, sb: 6: 3); Readln; End. 27

Записи с вариантами При определении типа записи в нее можно включать вариантную часть. Это Записи с вариантами При определении типа записи в нее можно включать вариантную часть. Это означает, что разные переменные, хотя они относятся к одному типу, могут иметь различные структуры. l Например, пусть необходимо задать информацию о некотором человеке, указав фамилию и год рождения, а также, если это мужчина, то сообщить, военнообязанный ли он и какую имеет специальность, а если это женщина, то указать, замужем ли она и сколько имеет детей. l Используются две структуры записи: Type pol=(m, w); persona=record fam: string[20]; godro: 1900. . 2007; case mw: pol of m: (voen: boolean; spec: string[15]); w: (merry: boolean; child: byte) end; var p 1, p 2: persona; l 28

l. К элементам вариантной части можно обращаться так же, как к элементам фиксированной части l. К элементам вариантной части можно обращаться так же, как к элементам фиксированной части записи. P 1. mw: =m; p 1. voen: =true; P 2. mw: =w; p 2. child: =2; l. В процессе выполнения программы в структуру записи включается тот вариант, элементам которого в данный момент было присвоено значение. Как только какому-либо элементу другого варианта присваивается некоторое значение, в структуру записи включается этот вариант, а элементы предыдущего варианта становятся неопределенными. 29

l l После вариантной части записи поля появляться не могут. Имена полей, использующиеся в l l После вариантной части записи поля появляться не могут. Имена полей, использующиеся в описании различных вариантов, не должны повторяться в этой записи; нельзя также применять одно и то же имя в общей и вариантной частях записи. При записи варианта (списков элементов) обязательно наличие круглых скобок, даже если в них ничего не заключается. Вариантная часть может содержать другие записи, в том числе и с вариантами. Степень вложенности записей в вариантной части не ограничена. 30

Файловый тип данных l l Файловый тип – это структурированный тип, представляющий собой совокупность Файловый тип данных l l Файловый тип – это структурированный тип, представляющий собой совокупность однотипных элементов, количество которых заранее не определено. Описание файлового типа: В качестве типа элемента можно использовать любой тип, кроме файлового. В зависимости от способа объявления можно выделить три вида файлов Паскаля: • текстовые файлы (определяются типом text); • типизированные файлы (задаются предложением file of …); • нетипизированные файлы (определяются типом file). 31

Примеры объявления файловых переменных в Паскале: var Text. File: Text; {текстовый файл} f 1: Примеры объявления файловых переменных в Паскале: var Text. File: Text; {текстовый файл} f 1: File of string; {типизированный файл строк - не текстовый!} f 1: file of integer; {типизированный файл целых чисел} f 2: File of real; {типизированный файл вещественных чисел} Other. File: File; {нетипизированный файл} l 32

l l l Файл – это последовательность элементов, пронумерованных от 0 и заканчивающаяся маркером l l l Файл – это последовательность элементов, пронумерованных от 0 и заканчивающаяся маркером конца файла. Количество элементов в файле - это длина файла. Адрес текущего элемента файла, называется указателем. Существуют специальные процедуры для перемещения указателя и для определения его месторасположения. Работы с типизированными файлами аналогична работе с текстовыми файлами. Но, в отличие от текстовых файлов, файлы других типов нельзя просматривать и редактировать с помощью текстовых редакторов. Ввод и вывод информации возможно реализовать только программным путём. 33

l. Существует два типа доступа к элементам файла: последовательный и прямой. l. При последовательном l. Существует два типа доступа к элементам файла: последовательный и прямой. l. При последовательном доступе, чтобы просмотреть n-ый элемент файла, нужно прочитать предыдущие (n-1) элемент. l. При прямом доступе можно обратиться сразу к элементу с номером n. Для этого используется процедура seek(<имя файла>, <номер элемента>). После выполнения этой команды, указатель файла будет перемещён на элемент с указанным номером. При этом нужно учитывать, что нумерация начинается с 0. l. Для определения количества элементов в файле используется функция filesize(<имя файла>). Таким образом, последний элемент файла будет иметь номер (filesize(<имя файла>) – 1). 34

Типизированный файл Прямой доступ seek() Текстовый файл + – Последовательный доступ read(), write() + Типизированный файл Прямой доступ seek() Текстовый файл + – Последовательный доступ read(), write() + + Определения количества элементов в файле File. Size() + – – + Построчный ввод/вывод Read. Ln(), Writeln() Правила открытия файла Reset(), Rewrite() – возможно как чтение, так и запись, но исполнение Rewrite() очищает файл Возможность дополнения файла Seek(F, File. Size(F)); Write(F, …); Reset() – только для чтения Rewrite() – только для записи Append() 35

l Пример. Создать файл целых чисел, введя в него N элементов и вывести на l Пример. Создать файл целых чисел, введя в него N элементов и вывести на экран 3 -й элемент, если он существует. Решить задачу с использованием типизированного файла и двух технологий работы с ним: последовательного и прямого доступа. Program example; Var a: file of integer; N, i, k: integer; Begin Assign(a, ’a. dat’); Rewrite(a); Read. Ln(N); for i: =1 to N do Begin Read(k); Write(a, k) End; Close(a); Reset(a); If N<3 then write(‘ 3 элемент не существует’) else {Последовательный доступ} Begin for i: =1 to 3 do Read(a, k); Write(k) End; Close(a) end. {Прямой доступ} … Begin Seek(a, 2); Read(a, k); Write(k); end; Close(a) end. 36

Файлы записей l l Чаще всего записи используются как элементы файлов. Для этого можно Файлы записей l l Чаще всего записи используются как элементы файлов. Для этого можно создать файл типа «запись» . Чтобы ввести запись в файл, нужно сначала считать с клавиатуры все поля, а затем записать переменную в файл. Для вывода записи из файла, нужно считать переменную из файла, а затем выводить по отдельности каждое поле записи. Пример. Сформировать файл fm. dat, содержащий сведения о студентах (фамилия, номер зачётной книжки, оценка) и вывести список студентов, получивших 2. 37

Program example; Type stud=record fio: string[20]; nz: integer; mark: 2. . 5 end; Var Program example; Type stud=record fio: string[20]; nz: integer; mark: 2. . 5 end; Var s: stud; fstud: file of stud; N, i: integer; Begin Assign(fstud, ’fm. dat’); Re. Write(fstud); Write(‘Введите количество студентов: ’) Read. Ln(N); for i: =1 to N do Begin Write(‘Введите фамилию: ’); Readln(s. fio); Write(‘Введите № зачетной книжки: ’) Readln(s. nz); Write(‘Введите оценку: ’) Readln(s. mark); Write(fstud, s) end; Close(fstud); Reset(fstud); for i: =1 to N do Begin Read(fstud, s); if s. mark=2 then writeln(s. fio); End; Close(fstud) end. 38

l l Задача 1. Написать программу, которая запрашивает следующую информацию о спортсмене: фамилия, имя, l l Задача 1. Написать программу, которая запрашивает следующую информацию о спортсмене: фамилия, имя, балл за 1 упражнение, балл за 2 упражнение, балл за 3 упражнение и сохраняет ее в файле записей. Балл за отдельное упражнение не больше 10. Введите в файл информацию о десяти спортсменах. Используя созданный файл, выведите на экран таблицу соревнований, отсортированную по убыванию суммы баллов. Не забудьте подписать столбцы. В таблицу достаточно вывести фамилию и набранный спортсменом балл. 39

program z 1; Const Nmax=20; type Tsp=record fam: String[20]; name: String[15]; u 1, u program z 1; Const Nmax=20; type Tsp=record fam: String[20]; name: String[15]; u 1, u 2, u 3: 1. . 10; sum: Byte; end; var sp 1: Tsp; msp: array[1. . Nmax] Of Tsp; {Массив записей} f: file Of Tsp; {Файл записей} i, j, N: Integer; 40

Begin assign (f, 'mzap. dat'); {Ввод данных в файл записей} Rewrite (f); Write('N='); Read. Begin assign (f, 'mzap. dat'); {Ввод данных в файл записей} Rewrite (f); Write('N='); Read. Ln (N); For i: =1 to N Do Begin Writeln(i, ': '); With sp 1 Do Begin {Считать с клавиатуры все поля, а затем записать переменную в файл} write ('Фамилия: '); Readln (fam); write ('Имя: ' ); Read. Ln (name); write ('Упражнение 1: '); Readln(u 1); write ('Упражнение 2: '); Readln (u 2); write ('Упражнение 3: '); Readln (u 3); sum: = u 1+u 2+u 3; end; Write(f, sp 1); { Нельзя writeln! Только write!} end; close (f); 41

Reset (f); {Заполнение массива записей из файла записей} For i: =1 to N Do Reset (f); {Заполнение массива записей из файла записей} For i: =1 to N Do Begin read (f, msp[i]); { Для вывода из файла, считать сначала в переменную} With msp[i] Do {Вывод на экран для проверки} write (fam: 20, name: 15, u 1: 5, u 2: 5, u 3: 5, sum: 6); end; For i: =1 to N-1 Do {Сортировка «пузырьком» } For j: =1 to N-i Do If msp[j]. sum < msp[j+1]. sum then Begin sp 1: =msp[j]; msp[j]: =msp[j+1]; msp[j+1]: =sp 1; end; Write. Ln('Результат: '); For i: =1 to N Do {Вывод на экран в виде таблицы отсортированного массива записей} With msp[i] Do writeln (fam: 20, name: 15, u 1: 5, u 2: 5, u 3: 5, sum: 6); Close (f); end. 42

l Задача 2. Сведения о деталях, хранящихся на складе, содержат следующие атрибуты: название, количество, l Задача 2. Сведения о деталях, хранящихся на складе, содержат следующие атрибуты: название, количество, стоимость одной детали. Вывести информацию о детали, суммарная стоимость для которой максимальна. program z 2; type detal = record a: string[30]; kol, st: integer; end; var a: array [0. . 99] of detal; n, i, max: integer; begin write('Количество деталей? '); readln(n); for i: =0 to n-1 do With a[i] do begin write('Информация об ', i, ' детали: '); readln(a); readln(kol); readln(st); end; max : = 0; for i: = 1 to n-1 do if a[max]. kol*a[max]. st < a[i]. kol*a[i]. st then max: =i; writeln('Искомая деталь: ', a[max]. a, ' стоимостью ', a[max]. st, ' в количестве ', a[max]. kol); end. 43

Тестовые задания Определить, как описанная ниже программа изменяет массив A. Program s; Const N=10; Тестовые задания Определить, как описанная ниже программа изменяет массив A. Program s; Const N=10; Var A: array[1. . N] of integer; I, j: integer; Procedure Exchange(var a, b: integer); var c: integer; begin c: =a; a: =b; b: =c end; Begin for i: =1 to N-1 do for j: =2 to N-i+1 do if A[j]

Даны описания Type T=record k: integer; z: record x, y: real end; Var R: Даны описания Type T=record k: integer; z: record x, y: real end; Var R: T; Q: integer; P: real; Указать неверный оператор присваивания. 1 Q: =R. k+trunc(R. z. y+1. 5) 2 P: =R. k+R. x 3 P: =R. z. x+R. z. y 4 Q: =sqr(R. k) 5 P: =sqrt(R. k)+R. z. x Ответ: 2 45

Даны следующие описания: var F: file of integer; S, I: integer. Выбрать фрагмент программы, Даны следующие описания: var F: file of integer; S, I: integer. Выбрать фрагмент программы, читающей целые числа из непустого файла и печатающей их в обратном порядке. 1 assign(F, ’f. dat’); reset(F); for I: =Filesize(F)-1 downto 0 do Begin seek(F, I); read(F, S); writeln(S) end; 2 assign(F, ’f. dat’); reset(F); for I: =Filesize(F) downto 0 do Begin seek(F, I); read(F, S); writeln(S) end; 3 assign(F, ’f. dat’); reset(F); for I: =Filesize(F)-1 downto 1 do Begin seek(F, I); read(F, S); writeln(S) end; 4 assign(F, ’f. dat’); reset(F); for I: =Filesize(F) downto 1 do Begin seek(F, I); read(F, S); writeln(S) end; 5 assign(F, ’f. dat’); reset(F); I: =Filesize(F); while not eof(F)do begin seek(F, I); read(F, S); writeln(S); I: =I-1 end; Ответ: 1 46

В файле T. inp записаны числа 1 2 3 4 5. Определить содержимое этого В файле T. inp записаны числа 1 2 3 4 5. Определить содержимое этого файла после выполнения следующей программы. Var t: file of integer; n, i: integer; begin assign(t, ’T. inp’); reset(t); n: =2; seek(t, n); read(t, i); i: =–i; seek(t, n); write(t, i); close(t) end. 1 1 2 – 3 4 5 2 1 – 2 3 4 5 3 1 – 3 3 4 5 4 1 2 3 – 3 5 5 1 2 – 3 5 Ответ: 1 47

Какую задачу решает следующий программный фрагмент? Var n: 1. . 2000; d: 0. . Какую задачу решает следующий программный фрагмент? Var n: 1. . 2000; d: 0. . 9; k: integer; sd: set of 0. . 9; … sd: =[ ]; repeat d: =n mod 10; sd: =sd+[d]; n: =n div 10 until n=0; k: =0; for d: =1 to 9 do if d in sd then k: =k+1; write(k); Ответ: находит количество различных и не равных 0 цифр в записи десятичного числа n 48