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.

11.4. Программирование задач с файлами

Файлы  – упорядоченные наборы данных различного типа, хранящиеся в памяти ЭВМ.

В языке Pascal файлы бывают:

Текстовые (типа  Text). Типизированные (типа  File of …). Нетипизированные (типа  File).

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

Assign(FP, F) – связь файловой переменной  FP  с именем файла  F. Reset(FP) – открытие файла, связанного с файловой переменной  FP, для чтения. ReWrite(FP) – открытие файла, связанного с файловой переменной  FP, для записи новых данных с удалением старых. Append(FP) – открытие файла, связанного с файловой переменной  FP, для записи новых данных с добавлением к старым. Close(FP) – закрытие файла, связанного с файловой переменной  FP. Read(FP, P1,…,PN) – ввод значений переменных  P1,  … ,  PN  из файла, связанного с файловой переменной  FP. ReadLn(FP, P1,…,PN) – ввод значений переменных  P1,  … ,  PN  из файла, связанного с файловой переменной  FP, и перевод указателя в файле на новую строку. Write(FP, V1,…,VN) – вывод значений выражений  V1,  … ,  VN  в файл, связанный с файловой переменной  FP. WriteLn(FP, V1,…,VN) – вывод значений выражений  V1,  … ,  VN  в файл, связанный с файловой переменной  FP, и перевод указателя в файле на новую строку.

Задача 3.

НЕ нашли? Не то? Что вы ищете?

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

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

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

.

Результаты:

.

11.5. Программирование задач с символами и строками

Строка – упорядоченный набор символов в кавычках.

Описание строки в разделе описания переменных (Var) на языке Pascal имеет вид:

St : string [ NMax ] ;

где  string  – строка,  St  – имя строки, NMax  – максимальное количество символов в строке.

Это означает, что переменная St  является строкой, которая может содержать от 0 до NMax  символов.

Описание символьной переменной в разделе описания переменных (Var) на языке Pascal имеет вид:

Ch : char ;

где  char  – символьный тип (character),  Ch  – имя символа.

Это означает, что переменная Ch  является символом.

Пример.

Var god : string[4];

  bukva : char;

Это означает, что переменная god – строка, включающая максимум 4 символа, а переменная bukva – единичный символ.

Доступ к символу в строке имеет вид:

St [ Ind ]

где  St – имя строки, Ind – индекс символа.

Это означает доступ к символу с номером Ind  в строке  St.

Пример.

god[3]

Это означает  3-й символ в строке god.

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

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

= (равно).

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

< (меньше).

> (больше).

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

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

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

Length(St) – длина строки  St. Concat(St1,…,StN) – соединение (сцепление, конкатенация) строк St1, …, StN. Copy(St, Ind, N) – скопированные N символов из строки St, начиная с позиции Ind. Pos(PodSt, St) – номер позиции, с которой начинается подстрока PodSt в строке St.

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

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

Задача 4.

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

Программа.

Program z4;

Var

tovar : string[10];

itog : string[20];

Begin

readln(tovar);

if not(tovar='Вещь')

  then itog:=tovar+' - вкусно';

writeln(itog);

End.

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

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

Товар = ‘Кефир’.

Результаты:

Итог = ‘Кефир – вкусно’.

11.6. Программирование задач с записями

Запись – неупорядоченный набор величин разных типов, называемых полями.

Поле – именованная величина, являющаяся частью записи.

Описание записи в разделе описания переменных (Var) на языке Pascal имеет вид:

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. Ввести поля записи  computer  без использования оператора присоединения.

readln(computer. nazv, computer. god, str);

Пример 2. Ввести поля записи  computer  с использованием оператора присоединения.

with computer do readln(nazv, god, bystr);

Задача 5.

Условие задачи. Задана запись студента с полями: фамилия, год рождения, средний балл за сессию. Начислить студенту стипендию, если известно, что за все отличные оценки начисляется стипендия в 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 рублей.

11.7. Программирование задач со множествами

Множество – неупорядоченный набор данных одинакового типа. Множество может включать непостоянное количество элементов  порядкового типа (не более 256).

Описание множества в разделе описания переменных (Var) на языке Pascal имеет вид:

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

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

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

Задача 6.

Условие задачи. Заданы множество A чётных чисел от 0 до 9 и множество B нечётных чисел от 0 до 9. Определить, в какое множество входит число c.

Программа.

Program z6;

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13