Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

На экзамен. Вопросы

.docx
Скачиваний:
17
Добавлен:
11.04.2015
Размер:
213.57 Кб
Скачать

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.

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

Для всех элементов

Для части элементов

  1. Сумма

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];

  1. Количество

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;

  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];

  1. Максимальное значение

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];

  1. Минимальное значение

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];

  1. Среднее значение

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;

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

Для каждой строки

Для каждого столбца

  1. Сумма

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;

  1. Произведение

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;

  1. Максимальное значение

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;

  1. Минимальное значение

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;

36.

38. а) Особенности элементов одномерного массива

Рассмотрим одномерный массив . Элементы ai этого массива имеют такие особенности:

  1. Элементы положительные, если .

  1. Элементы отрицательные, если .

  2. Элементы нулевые, если .

  3. Элементы ненулевые, если .

  4. Элементы находятся в диапазоне от x до y, если и .

  5. Элементы не находятся в диапазоне от x до y, если или .

  6. Элементы чётные, если .

  7. Элементы нечётные, если или .

  8. Элементы на чётных местах, если или .

  9. Элементы на нечётных местах, если или .

  10. Элементы кратны x, если .

  11. Элементы на местах, кратных x, если .

37.

Операция

Фрагмент программы

  1. Ввод элементов массива

for i:=1 to m do

for j:=1 to n do

read(A[i,j]);

  1. Вывод элементов массива

for i:=1 to m do

begin

for j:=1 to n do

write(A[i,j]);

writeln;

end;

  1. Замена элементов массива на величину z

for i:=1 to m do

for j:=1 to n do

A[i,j]:=z;

  1. Увеличение элементов массива на величину z

(аналогично уменьшение, умножение, деление)

for i:=1 to m do

for j:=1 to n do

A[i,j]:=A[i,j]+z;

  1. Вычисление элементов массива B прибавлением к элементам массива A величины z

(аналогично вычитанием, умножением, делением)

for i:=1 to m do

for j:=1 to n do

B[i,j]:=A[i,j]+z;

  1. Вычисление индексов максимального элемента imax , jmax

(аналогично минимального)

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;

  1. Вычисление суммы элементов 1-й строки

s:=0;

for j:=1 to n do

s:=s+A[1,j];

  1. Вычисление суммы элементов 1-го столбца

s:=0;

for i:=1 to m do

s:=s+A[i,1];

38. б) Особенности элементов квадратных матриц

Двумерный массив называется квадратной матрицей, если у него количество строк равно количеству столбцов ().

Рассмотрим квадратную матрицу:

.

Элементы aij этого массива имеют такие особенности:

  1. Элементы находятся на главной диагонали, если .

  1. Элементы находятся выше главной диагонали, если .

  2. Элементы находятся ниже главной диагонали, если .

  3. Элементы находятся вне главной диагонали, если .

  4. Элементы находятся на побочной диагонали, если .

  5. Элементы находятся выше побочной диагонали, если .

  6. Элементы находятся ниже побочной диагонали, если .

  7. Элементы находятся вне побочной диагонали, если .

39. Подпрограмма – именованный блок операторов, отдельно выделенный в составе программы.

Подпрограммы бывают 2-х видов:

  1. Подпрограмма-функция – подпрограмма для вычисления функции, которая возвращает какое-либо значение.

  1. Подпрограмма-процедура – подпрограмма для выполнения действий, которая не возвращает никаких значений.

Как правило, использование подпрограммы означает:

  1. Описание подпрограммы, включающее:

а)  Заголовок.

б)  Разделы описаний.

в)  Тело подпрограммы (begin…end;).

  1. Вызовы подпрограммы, в которых она применяется для выполнения нужной операции.

Заголовок подпрограммы и её вызов включают:

  1. Имя подпрограммы.

  2. Список параметров.

Параметр подпрограммы  величина, от значения которой зависит результат выполнения подпрограммы.

Формальные параметры – переменные, которые объявляются в заголовке подпрограммы.

Фактические параметры – переменные или значения, которые подставляются вместо формальных параметров в момент конкретного вызова подпрограммы.

Параметры-значения – параметры, значения которых передаются в подпрограмму в момент её вызова и назад не выдаются.

Параметры-переменные – параметры, значения которых передаются в подпрограмму в момент её вызова и могут использоваться после выполнения подпрограммы (перечисляются со словом 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 файлы бывают:

  1. Текстовые (типа Text).

  1. Типизированные (типа File of …).

  2. Нетипизированные (типа File).

Для текстовых файлов обычно применяются следующие стандартные процедуры:

  1. Assign(FP,F) – связь файловой переменной FP с именем файла F.

  1. Reset(FP) – открытие файла, связанного с файловой переменной FP, для чтения.

  2. ReWrite(FP) – открытие файла, связанного с файловой переменной FP, для записи новых данных с удалением старых.

  3. Append(FP) – открытие файла, связанного с файловой переменной FP, для записи новых данных с добавлением к старым.

  4. Close(FP) – закрытие файла, связанного с файловой переменной FP.

  5. Read(FP,P1,…,PN) – ввод значений переменных P1, … , PN из файла, связанного с файловой переменной FP.

  6. ReadLn(FP,P1,…,PN) – ввод значений переменных P1, … , PN из файла, связанного с файловой переменной FP, и перевод указателя в файле на новую строку.

  7. Write(FP,V1,…,VN) – вывод значений выражений V1, … , VN в файл, связанный с файловой переменной FP.

  8. WriteLn(FP,V1,…,VN) – вывод значений выражений V1, … , VN в файл, связанный с файловой переменной FP, и перевод указателя в файле на новую строку.

Условие задачи. Ввести матрицу A размером 33 из файла 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.

К строкам можно применять следующие операции:

+ (сцепление).

= (равно).

<> (не равно).

< (меньше).

> (больше).

<= (меньше или равно).

>= (больше или равно).

К строкам обычно применяют следующие стандартные функции:

  1. Length(St) – длина строки St.

  1. Concat(St1,…,StN) – соединение строк St1, …, StN.

  2. Copy(St,Ind,N) – скопированные N символов из строки St, начиная с позиции Ind .

  3. Pos(PodSt,St) – номер позиции, с которой начинается подстрока PodSt в строке St.

К строкам обычно применяют следующие стандартные процедуры:

  1. Insert(PodSt,St,Ind) – вставка подстроки PodSt в строку St, начиная с позиции Ind .

  2. Delete(St,Ind,N) – удаление N символов из строки St, начиная с позиции Ind .

Условие задачи. Ввести строку с названием купленного товара. Если товар не является вещью, то объединить строку с названием товара и слово «вкусно».

Программа.

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.

Контрольный пример.

Исходные данные:

Фамилия – Иванов

Год рождения – 1989

Средний балл – 5.

Результаты:

Стипендия – 1000 рублей.

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 (принадлежность).

Над множествами обычно применяются следующие стандартные процедуры:

  1. Include(Mn,Elem) – включение элемента Elem во множество Mn .

  1. Exclude(Mn,Elem) – исключение элемента Elem из множества Mn .

Условие задачи. Заданы множество 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.

Контрольный пример.

Исходные данные:

c = 5

Результаты:

Число входит в B

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]