На экзамен. Вопросы
.docx
34. Двумерный массив (матрица) – массив, элементы которого имеют два номера (номер строки номер столбца).
Индекс двумерного массива – порядковый номер строки или столбца в двумерном массиве.
Описание двумерного массива
имеет вид:Mas: array [IMin.. Imax, Jmin..JMax]of T где array – массив, of – из, Mas – имя массива, IMin – минимальное значение индекса строки, IMax – максимальное значение индекса строки, JMin – минимальное значение индекса столбца, JMax – максимальное значение индекса столбца, T – тип элементов.
Это означает, что переменная Mas является массивом, который может иметь индексы строк от IMin до IMax , индексы столбцов от JMin до JMax у элементов типа T.
Пример Var A : array [1..10,1..15] of real;
Это означает, что переменная A – массив, который может содержать от 1 до 10 строк, от 1 до 15 столбцов из элементов вещественного типа.
Доступ к элементу двумерного массива на языке Pascal имеет вид: Mas: [Ind 1, Ind 2] где Mas – имя массива, Ind1 – индекс строки, Ind2 – индекс столбца.Это означает доступ к элементу массива Mas , находящемуся в строке с индексом Ind1 и в столбце с индексом Ind2 .
Пример.
A[1,1]
b[i,j]
Это означает элемент массива A в 1-й строке и 1-м столбце, и т.д.
Задача. Условие задачи. Дан двумерный массив A из m строк и n столбцов (m 10; n 15). Найти сумму положительных элементов в массиве A.
Программа. Program z2; Var A:array[1..10,1..15] of real; i,j,m,n:integer; s:real; Begin read(m,n); s:=0; for i:=1 to m do for j:=1 to n do begin read(A[i,j]); if A[i,j]>0 then s:=s+A[i,j]; end; writeln(s); End.
|
НАЧАЛО
Вывод s КОНЕЦ |
35.
Характеристика |
Для всех элементов |
Для части элементов |
s |
s:=0; for i:=1 to m do for j:=1 to n do s:=s+A[i,j]; |
s:=0; for i:=1 to m do for j:=1 to n do if A[i,j]>z then s:=s+A[i,j]; |
k |
k:=m*n; |
k:=0; for i:=1 to m do for j:=1 to n do if A[i,j]>z then k:=k+1; |
p |
p:=1; for i:=1 to m do for j:=1 to n do p:=p*A[i,j]; |
p:=1; for i:=1 to m do for j:=1 to n do if A[i,j]>z then p:=p*A[i,j]; |
max |
max:=A[1,1]; for i:=1 to m do for j:=1 to n do if A[i,j]>max then max:=A[i,j]; |
max:=-1E10; for i:=1 to m do for j:=1 to n do if (A[i,j]>max) and (A[i,j]>z) then max:=A[i,j]; |
min |
min:=A[1,1]; for i:=1 to m do for j:=1 to n do if A[i,j]<min then min:=A[i,j]; |
min:=1E10; for i:=1 to m do for j:=1 to n do if (A[i,j]<min) and (A[i,j]>z) then min:=A[i,j]; |
sr |
s:=0; for i:=1 to m do for j:=1 to n do s:=s+A[i,j]; sr:=s/(m*n); |
s:=0; k:=0; for i:=1 to m do for j:=1 to n do if A[i,j]>z then begin s:=s+A[i,j]; k:=k+1; end; sr:=s/k; |
Характеристика |
Для каждой строки |
Для каждого столбца |
s |
for i:=1 to m do begin s[i]:=0; for j:=1 to n do s[i]:=s[i]+A[i,j]; end; |
for j:=1 to n do begin s[j]:=0; for i:=1 to m do s[j]:=s[j]+A[i,j]; end; |
p |
for i:=1 to m do begin p[i]:=1; for j:=1 to n do p[i]:=p[i]*A[i,j]; end; |
for j:=1 to n do begin p[j]:=1; for i:=1 to m do p[j]:=p[j]*A[i,j]; end; |
max |
for i:=1 to m do begin max[i]:=A[i,1]; for j:=1 to n do if A[i,j]>max[i] then max[i]:=A[i,j]; end; |
for j:=1 to n do begin max[j]:=A[1,j]; for i:=1 to m do if A[i,j]>max[j] then max[j]:=A[i,j]; end; |
min |
for i:=1 to m do begin min[i]:=A[i,1]; for j:=1 to n do if A[i,j]<min[i] then min[i]:=A[i,j]; end; |
for j:=1 to n do begin min[j]:=A[1,j]; for i:=1 to m do if A[i,j]<min[j] then min[j]:=A[i,j]; end; |
38. а) Особенности элементов одномерного массива
Рассмотрим одномерный массив . Элементы ai этого массива имеют такие особенности:
-
Элементы положительные, если .
-
Элементы отрицательные, если .
-
Элементы нулевые, если .
-
Элементы ненулевые, если .
-
Элементы находятся в диапазоне от x до y, если и .
-
Элементы не находятся в диапазоне от x до y, если или .
-
Элементы чётные, если .
-
Элементы нечётные, если или .
-
Элементы на чётных местах, если или .
-
Элементы на нечётных местах, если или .
-
Элементы кратны x, если .
-
Элементы на местах, кратных x, если .
37.
Операция |
Фрагмент программы |
|
for i:=1 to m do for j:=1 to n do read(A[i,j]); |
|
for i:=1 to m do begin for j:=1 to n do write(A[i,j]); writeln; end; |
|
for i:=1 to m do for j:=1 to n do A[i,j]:=z; |
(аналогично уменьшение, умножение, деление) |
for i:=1 to m do for j:=1 to n do A[i,j]:=A[i,j]+z; |
(аналогично вычитанием, умножением, делением) |
for i:=1 to m do for j:=1 to n do B[i,j]:=A[i,j]+z; |
(аналогично минимального) |
max:=A[1,1]; imax:=1; jmax:=1; for i:=1 to m do for j:=1 to n do if A[i,j]>max then begin max:=A[i,j]; imax:=i; jmax:=j; end; |
|
s:=0; for j:=1 to n do s:=s+A[1,j]; |
|
s:=0; for i:=1 to m do s:=s+A[i,1]; |
38. б) Особенности элементов квадратных матриц
Двумерный массив называется квадратной матрицей, если у него количество строк равно количеству столбцов ().
Рассмотрим квадратную матрицу:
.
Элементы aij этого массива имеют такие особенности:
-
Элементы находятся на главной диагонали, если .
-
Элементы находятся выше главной диагонали, если .
-
Элементы находятся ниже главной диагонали, если .
-
Элементы находятся вне главной диагонали, если .
-
Элементы находятся на побочной диагонали, если .
-
Элементы находятся выше побочной диагонали, если .
-
Элементы находятся ниже побочной диагонали, если .
-
Элементы находятся вне побочной диагонали, если .
39. Подпрограмма – именованный блок операторов, отдельно выделенный в составе программы. Подпрограммы бывают 2-х видов:
Как правило, использование подпрограммы означает:
а) Заголовок. б) Разделы описаний. в) Тело подпрограммы (begin…end;).
Заголовок подпрограммы и её вызов включают:
Параметр подпрограммы величина, от значения которой зависит результат выполнения подпрограммы. Формальные параметры – переменные, которые объявляются в заголовке подпрограммы. Фактические параметры – переменные или значения, которые подставляются вместо формальных параметров в момент конкретного вызова подпрограммы. Параметры-значения – параметры, значения которых передаются в подпрограмму в момент её вызова и назад не выдаются. Параметры-переменные – параметры, значения которых передаются в подпрограмму в момент её вызова и могут использоваться после выполнения подпрограммы (перечисляются со словом var перед именем переменной). Локальные переменные – переменные, используемые только внутри подпрограммы. Глобальные переменные – переменные, которые могут использоваться в любом месте основной программы, в т.ч. и в подпрограмме.
|
40. Заголовок описания функции имеет вид: function Func ( SFP1:T1;..:SFPN:TN):T; где function – функция, Func – имя функции, SFP1 – список формальных параметров 1-й, SFPN – список формальных параметров N-й, T1 – тип параметров в 1-м списке, TN – тип параметров в N-м списке, T – тип значения, возвращаемого функцией. Это означает, что задаётся подпрограмма-функция с именем Func, зависящая от формальных параметров из списка SFP1 типа T1 , … из списка SFPN типа TN , а также вычисляющая значение типа T. Вызов функции из другой части программы имеет вид: Func ( SFP) где Func – имя функции, SFP – список фактических параметров. Это означает, что вычисляется значение функции Func, зависящей от фактических параметров из списка SFP, причём вызов функции может осуществляться в составе выражения. Условие задачи. Вычислить , а также найти с использованием подпрограммы-функции возведения в степень. Программа. Program z1; Var A:array[0..100] of real; B,C,x:real; i,n:integer; Function Step(a,b:real):real; begin Step:=exp(b*ln(a)); end; Begin read(n,x); for i:=0 to n do read(A[i]); B:=Step(2.1,5)+Step(7,0.3); C:=0; for i:=0 to n do C:=C+A[i]*Step(x,i); writeln(B,C); End. |
41. Заголовок описания процедуры имеет вид: Procedure Proc( SFP1:T1;..:SFPN:TN):T; где procedure – процедура, Proc – имя процедуры, SFP1 – список формальных параметров 1-й, SFPN – список формальных параметров N-й, T1 – тип параметров в 1-м списке, TN – тип параметров в N-м списке. Это означает, что задаётся подпрограмма-процедура с именем Proc, зависящая от формальных параметров из списка SFP1 типа T1 , … из списка SFPN типа TN, а также выполняющая какие-либо действия. Вызов процедуры из другой части программы имеет вид: Proc( SFP) ; где Proc – имя процедуры, SFP – список фактических параметров. Это означает, что выполняются действия в теле процедуры Proc, зависящей от фактических параметров из списка SFP, причём вызов процедуры не может осуществляться в составе выражения. Условие задачи. В двумерном массиве A из 3 строк и 4 столбцов вычислить сумму и произведение отрицательных элементов с использованием подпрограммы-процедуры, именованных констант и типов данных. Программа. Program z2; Const m=3; n=4; Type TT=array [1..m,1..n] of real; Var A:TT; i,j:integer; s,p:real; Procedure SumPro(B:TT; m,n:integer; var s,p:real); var i,j:integer; begin s:=0; p:=1; for i:=1 to m do for j:=1 to n do if B[i,j]<0 then begin s:=s+B[i,j]; p:=p*B[i,j]; end; end; Begin for i:=1 to m do for j:=1 to n do read(A[i,j]); SumPro(A,3,4,s,p); writeln(s,p); End. |
||||||||||||
42. Файлы – упорядоченные наборы данных различного типа, хранящиеся в памяти. В языке Pascal файлы бывают:
Для текстовых файлов обычно применяются следующие стандартные процедуры:
Условие задачи. Ввести матрицу A размером 33 из файла a1.txt, заменить в ней элементы выше главной диагонали на нули, а затем вывести эту матрицу в файл a2.txt. Пр-ма: Program z3; Var A:array[1..3,1..3] of real; i,j:integer; f1,f2:text; Begin assign(f1,'a1.txt'); assign(f2,'a2.txt'); reset(f1); rewrite(f2); for i:=1 to 3 do for j:=1 to 3 do read(f1,A[i,j]); for i:=1 to 3 do for j:=1 to 3 do if i<j then A[i,j]:=0; for i:=1 to 3 do begin for j:=1 to 3 do write(f2,A[i,j]); writeln(f2,''); end; close(f1); close(f2); readln; End. |
43. Строка – упорядоченный набор символов в кавычках. Описание строки имеет вид: St :string[NMax]; где string – строка, St – имя строки, NMax – максимальное количество символов в строке. Это означает, что переменная St является строкой, которая может содержать от 0 до NMax символов. Описание символьной переменной имеет вид: Ch : Char; где char – символьный тип, Ch – имя символа. Это означает, что переменная Ch является символом. Пример. Var god : string[4]; bukva : char; Это означает, что переменная god – строка, включающая максимум 4 символа, а переменная bukva – единичный символ. Доступ к символу в строке имеет вид: St [ Ind ] где St – имя строки, Ind – индекс символа. Это означает доступ к символу с номером Ind в строке St. Пример. god[3] Это означает 3-й символ в строке god. К строкам можно применять следующие операции: + (сцепление). = (равно). <> (не равно). < (меньше). > (больше). <= (меньше или равно). >= (больше или равно). К строкам обычно применяют следующие стандартные функции:
К строкам обычно применяют следующие стандартные процедуры:
Условие задачи. Ввести строку с названием купленного товара. Если товар не является вещью, то объединить строку с названием товара и слово «вкусно». Программа. Program z4; Var tovar : string[10]; itog : string[20]; Begin readln(tovar); if not(tovar='Вещь') then itog:=tovar+' - вкусно'; writeln(itog); End. Контрольный пример.
|
44. Запись – неупорядоченный набор величин разных типов, называемых полями. Поле – именованная величина, являющаяся частью записи. Описание записи имеет вид: Zap: record SP1: T1; … SPN:TN end; где record – запись, end – конец описания записи, Zap – имя записи, SP1 – список полей 1-й, SPN – список полей N-й, T1 – тип полей в 1-м списке, TN – тип полей в N-м списке. Это означает, что переменная Zap является записью, включающей поля в списке SP1 типа T1 , … поля в списке SPN типа TN. Пример. Var computer : record nazv : string[10]; god : integer; bystr : real; end; Это означает, что переменная computer – запись, включающая поля nazv строкового типа, god целочисленного типа, bystr вещественного типа. Доступ к полю записи имеет вид: Zap. Pole где Zap – имя записи, Pole – имя поля. Это означает доступ к полю Pole записи Zap. Пример. computer.nazv Это означает поле nazv записи computer. Оператор присоединения имеет вид: with Zap do Op где with – с, do – делать, Zap – имя записи, Op – оператор. Это означает, что с полями записи Zap надо выполнять оператор Op. Пример.1 readln(computer.nazv,computer.god,computer.bystr); Пример2. with computer do readln(nazv,god,bystr); Условие задачи. Задана запись студента с полями: фамилия, год рождения, средний балл за сессию. Начислить студенту стипендию, если известно, что за все отличные оценки начисляется стипендия в 1000 рублей, а за остальные оценки стипендия не начисляется. Программа. Program z5; Var student : record fam: string[10]; god: integer; ball: real; end; stip: real; Begin with student do readln(fam,god,ball); if student.ball=5 then stip:=1000 else stip:=0; writeln('Стипендия – ',stip:7:2,' рублей'); End. Контрольный пример.
|
||||||||||||
45. Множество – неупорядоченный набор данных одинакового типа. Описание множества имеет вид: Mn: set of T; где set – множество, of – из, Mn – имя множества, T – тип элементов множества. Это означает, что переменная Mn является множеством элементов типа T. Пример. Var zifra : set of 0..9; Это означает, что переменная zifra – множество чисел, которые могут принимать значения от 0 до 9. Задание элементов множества на языке Pascal имеет вид: [Sem] где SEM – список элементов множества. Это означает, что в списке элементов множества SEM перечисляются элементы. Пример. [0..3,9] Это означает, что задаются элементы множества 0, 1, 2, 3, 9. Над множествами определены следующие операции: + (объединение). (пересечение). - (вычитание). = (эквивалентность). <> (неэквивалентность). >= или <= (вхождение). in (принадлежность). Над множествами обычно применяются следующие стандартные процедуры:
Условие задачи. Заданы множество A чётных чисел от 0 до 9 и множество B нечётных чисел от 0 до 9. Определить, в какое множество входит число c. Программа. Program z7; Var A,B : set of 0..9; c: byte; Begin A:=[0,2,4,6,8]; B:=[1,3,5,7,9]; read(c); if (c in A) then writeln('Число входит в A') else if (c in B) then writeln('Число входит в B'); End. Контрольный пример.
|