Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
02.05.2014
Размер:
116.74 Кб
Скачать

31.Линейные массивы

Описание массивов:

Var A: array[ 1. . 30 ] of byte;

S: array[ 1. . 30 ] of string;

SO: array[ 1. . 30 ] of string[12];

Присвоение значений элементам массива:

A[1]:= 5; A[2]:= 4; и т. д.

S[1]:= 'Иванов'; S[2]:= 'Петров'; и т. д.

Присвоение значения элементам массива «y» по зависимости:

y=sin(x), где x= Pi * i/180, 0<= i <=180 .

For i:= 0 to 180 Do y[i]:= sin(Pi * i/180);

Присвоение случайных значений в диапазоне от -30 до +40 ста элементам массива «R»:

Randomize; for i:=1 to 100 Do R[i]:= - 30+Random(71);

Присвоение значений семи элементам массива «A» оператором Readln:

For i:= 1 to 7 Do begin Write(‘Введите A[’,i,’] =’); Readln( A [ i ] ) end;

Вывод “шапки таблицы”

For j:=1 to 66 do Write(‘-‘); Writeln;

For j:=1 to 3 do Write(‘|_ _ Фамилия _ _| _ оценка _|’); Writeln;

For j:=1 to 66 do Write(‘-‘); Writeln;

Вывод значений ста элементов массивов «S» и «A» в три пары колонок:

For i:=1 to 100 do begin Write(‘|’,s[i]:11,’|’,a[i]:8,’|’);

if (i mod 3) = 0 Then Writeln;

if (i mod 60) = 0 then readln end;

Определение суммы элементов массива, наибольшего (наименьшего) элемента и создание новых массивов, удовлетворяющие некоторому условию:

s:=0; for i:=1 to 100 do s:=s+a[i]; {s-сумма элементов массива} a_max:=a[1]; for i:=1 to 100 do {поиск наибольшего элемента a[j]} if a[i]>a_max then begin a_max:=a[i]; j:=i end; j:= 0; k:= 0;

for i:=1 to 100 do {создание новых массивов с элементами: b[j]>=0, c[k]<0}

if a[i]>=0 then begin j:=j+1; b[j]:=a[i] end

else begin k:= k+1; c[k]:=a[i] end;

j:=0; k:=8;

for i:=1 to 100 do {создание массива номеров «M» для элементов: a[i]>a[k]}

if a[i]>a[k] then begin j:=j+1; M[j]:=i end;

Работа с элементами переменной строкового типа

Var S: string; C: char;

begin

S:='Москва', то S[1]='М', S[2]='о' и т. д.

C:= S[1];

Перестановка местами элементов массива:

N:= ord(S[0]); {число символов в переменной «S» хранится в переменной S[0]}

for i:= 1 to N div 2 do {Функция «ord» преобразует символьный тип в целый}

begin C:= S[i];

S[i]:= S[N-i+1];

S[N-i+1]:= C

end;

Writeln(S); { исходное слово выведется справа налево: «авксоМ» }

32.Двумерные массивы

Var A:array[1..30,1..7] of byte;

Случайный ввод с последующим выводом двумерного массива оценок группы студентов по нескольким предметам:

for i:= 1 to N do

for j:= 1 to M do

A[i, j]:= random(4)+2; {ввод эл-в}

Writeln;

Write('Фамилия\\Предметы:|'); {печать шапки таблицы}

For i:=1 to M do write(P[i]:9,’_ |’);

for i:= 1 to N do {вывода элементов массива “A”}

begin

writeln;

write(S[i]:19, ‘_ |’;

for j:= 1 to M do

write(A[i,j]:7, ‘ _ _ |’) end;

Пример расчета для массива «SS» сумм «M» элементов в каждой из «N» строк массива «A» (NxM):

for i:= 1 to N do

begin SS[i]:= 0;

for j:= 1 to M do

SS[i]:= SS[i] + A[i, j]

end;

в паск, при описю многом масс., диап. Изм-я индексов, перечис. ч/з запятую

33.Текстовые файлы

предст. Собой совок. Строк переем-й длины, с послед-м дост-м к дан-м, т.е. зап-ся и счит-ся только посл-но.

Var f: Text; Assign(f, ‘Name_f’); где Name_f - имя файла.

Например, Assign(f, ‘file. dat’); {файл находится в текущем каталоге}

Assign(f,’C:\Pascal\Work\file.dat’) {файл находится}

{ по указанному пути на диске С} Открытие файла для записи данных ReWrite(f);

Запись данных в файл Write(f,»сп»); или Writeln(f,»сп»); {»сп» - список переменных} Открытие файла для считывания данных Reset(f);

Считывание данных Read(f, “сп”); или Readln(f, “сп”);

Закрытие файла Close(f); Запись данных в конец закрытого файла Append(f);

Пример операторов записи и считывания данных Assign(f1,'File1.dan');

{назначить переменой f1, имя файла: File1.dan}

ReWrite(f1); {открыть файл для записи в первой программе }

Writeln(f1,'Значения «X»,»Y»' ); {начать запись }

For i:= 1 to N do begin X:= 0.5*i; Y:= Ln(X); {пример расчета значений переменных }

write(f1, X:6:2, Y:10:4); {записать данные в файл File1. dan }

If i mod 5 = 0 then writeln(f1) { записать символ #13 }

end; Close (f1); {закрыть файл в первой программе }

Assign(f2,'File1.dan'); {назначить переменой f1, имя файла: File1.dan}

Reset(f2); {открыть файл для чтения во второй программе}

Readln(f2); {пропустить первую строчку}

For i:= 1 to N do begin read(f2, a[i], b[i]); {считать данные в массивы «A» и «B» }

If i mod 5 = 0 then readln(f2) { считать символ #13 }

end; Close (f2); {закрыть файл во второй программе }

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

var c: char; j, i: word; s: array[1..10] of string[12]; a: array[1..10, 1..6] of word; f1, f2: text; BEGIN assign(f1, ‘F1.txt’); reset(f1); assign(f2, ‘F2.txt’); rewrite(f2);

for i:= 1 to 10 do begin read(f1, s[i]); { считывание строки } for j:= 1 to 6 do

read(f1, a[i,j]); { считывание шести чисел } eadln(f1) {считывание символа конца строки} end; for c:= 'А' to 'Я' do { цикл по перебору символов}

for i:= 1 to 10 do if s[i,1] = c then begin write(f2, s[i]); {запись строк в алф.порядке первых символов} for j:= 1 to 6 do write(f2, a[i,j]:2); { запись шести чисел } writeln(F2) end; close(f1); close(f2); END.

В файле F1. txt записаны данные, которые в редакторе текста имеют вид:

Леонтьев 5 4 4 5 4 3

Ивлев 4 5 3 4 3 4 и т. д.

EoF(f); {возвращает признак конца файла}

Пример считывания текста из файла FF1. t, кодировки текста и записи в файл FF2. t с сохранением кода #13.

assign(f1, ‘FF1. t’); reset(f1); assign(f2, ‘FF2. t’); rewrite(f2);

while not EoF(f1) do begin read(f1,c); {считываем переменную типа Char } if c <> #13 then c:=pred©; write(f2,c) {кодируем и выводим на экран } end;

5.4.Установка атрибутов файла

Исходный атрибут файла

GetFattr(f, af);

Установка атрибута файла

SetFattr(f, af);

где f - имя файловой переменной, af - имя переменной атрибута (тип Word).

Наименование

Константа «ads»

Двоичное

Шестнадцат-oe

Только для чтения

ReadOnly

0000 0001

$01

Скрытый файл

Hidden

0000 0010

$02

Системный файл

System

0000 0100

$04

Архивный файл

Archiv

0010 0000

$20

В паск имеется возм-ть прогр. Уст-ки атрибутов файла, они уст. Для закрытых файлов, после связ-я файл пер-й на диске.

36 Рекурсивные функции и процедуры

Схема циклического взаимодействия процедур

Функция, возвращающая число осколков, будет иметь вид:

Рекурсия – ф-я или процесс, кот в своём описании сод-т вызов ** себя.

а=а2=1 аn=an-1+an-2

Procedure pr_1; {полное описание процедуры pr_1}

var n, n1: integer; begin

if i=10 then begin Randomize; n1:= Random(900)+100 end;

if (i = 0) then Pr_2 {условие окончания прямой рекурсии}

else begin

repeat writeln('введите трехзначный номер билета');

Readln(n) until (n<1000) and (n>99);

if (n<>n1) then begin writeln('билет без выигрыша');

writeln('осталось ', i-1, 'билетов');

Pr_1(i-1) {прямая рекурсия} end

else begin Writeln('Вы угадали, получите выигрыш в банке!');

Pr_2 {косвенная рекурсия} end end;

{----------------------------------------------------}

BEGIN PR_2 {раздел выполнения основной программы} End.

Соседние файлы в папке Шпоры по информатике1