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 |


