- •Министерство образования и науки российской федерации
- •Оглавление предисловие
- •Составление структурных схем алгоритмов и программ
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Пример 4
- •Пример 5
- •Задания
- •Алфавит языка pascal. Типы данных. Раздел описаний. Оператор присваивания. Ввод-вывод. Составление простейших программ
- •Стандартные процедуры
- •Стандартные функции
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Задания
- •Использование переменных логического типа. Логический оператор присваивания
- •Логический оператор присваивания
- •R операция_сравнения s
- •Пример 1
- •Задания
- •4. Программирование разветвляющихся структур
- •4.1. Использование в программах условного оператора
- •Пример 1
- •Задания
- •4.2. Использование в программах оператора варианта
- •Case выражение-селектор of метка_случая : оператор;
- •Пример 1
- •Задания
- •5. Использование переменных типа char
- •Задания
- •6. Реализация циклических структур
- •6.1. Применение оператора цикла с параметром
- •Шаг изменения параметра цикла:
- •Пример 1
- •Задания
- •Пример 2
- •Пример 3
- •Задания
- •Пример 4
- •Задания
- •Таким образом изображаются циклы в структурных схемах (в лабораторных работах, курсовых работах и т.Д.). Пример 5
- •Задания
- •Задания
- •Пример 6
- •Задания
- •Не смотря на то, что есть еще другие операторы цикла, обычно вводят и выводят массивы с помощью оператора цикла с параметром.
- •6.2. Применение оператора цикла с постусловием
- •Пример 1
- •Задания
- •6.3. Применение оператора цикла с предусловием
- •Основные различия между операторами циклов с постусловием и предусловием
- •Пример 1
- •Задания
- •6.4. Работа с двухмерными массивами.
- •Задания
- •Пример 1
- •Задания
- •7. Поиск и сортировка числовых данных
- •Пример 1
- •Задания
- •8. Решение задач с применением подпрограмм
- •Procedure имя(список параметров);
- •Var идентификаторы:имя типа;...; var идентификаторы: имя типа
- •Var идентификаторы:имя типа;...;var идентификаторы: имя типа;...; идентификаторы:имя типа;...;идентификаторы:имя типа
- •Идентификаторы:имя типа;идентификаторы:имя типа; ...;идентификаторы:имя типа
- •Локальные переменные доступны только внутри процедур, в которых они определены!
- •Пример 1
- •Задания
- •9. Использование переменных перечисляемого типа
- •Ввод и вывод значений переменных перечисляемого типа запрещен.
- •Задания
- •10. Использование переменных ограниченного типа
- •Задания
- •11. Использование переменных множественного типа
- •Var идентификатор : set of порядковый тип;
- •Запрещен.
- •Правила приоритета для множественных операций:
- •Задания
- •12. Использование записей
- •With префикс[,префикс [...]] do оператор
- •Пример 1
- •Задания
- •13. Работа со строками
- •Каждая переменная типа string вводится отдельной процедурой readln
- •Пример 1
- •Задания
- •14. Работа с файлами
- •Пример 1
- •Пример 2
- •Пример 3
- •Задания
- •Библиографический список
Пример 1
1) Ввести двухмерный массив X(5,3) и записать его в файл Z.TXT.
2) Все элементы массива X увеличить в два раза (массив считать из файла Z.TXT). Если последний элемент массива X53=0, то в конец файла добавить еще один элемент: -1.
Решение
1) Var
X:real;
f:text; {f – файловая переменная}
j,i:integer;
Begin
ASSIGN(f,'z.txt'); {назначение, соответствие}
REWRITE(f); {создаем файл для записи}
for i:=1 to 5 do {Можно сделать так: }
for j:=1 to 3 do { for i:= 1 to 15 do }
begin
read(x);
writeLN(f,x) {Запись в файл}
end;
CLOSE(f) {Закрытие, фиксирование}
End.
2) Var
x: array [1..5,1..3] of real;
f:text;
i,j:integer;
Begin
assign(f,'z.txt');
RESET(f); {открываем файл для чтения}
for i:= 1 to 5 do
for j:= 1 to 3 do
begin
read(f,x[i,j]);
x[i,j]:=2*x[i,j]
end;
{ Мы сейчас находимся в конце файла, значит, можно добавлять в файл записи }
if x[5,3]=0 then writeln(f,-1);
{ Добавим к условию задачи следующее:
’ дописать в файл новую матрицу после старой ’, т.е. в файле наша матрица будет записана два раза подряд }
for i:=1 to 5 do
for j:= 1 to 3 do
writeln(f,x[i,j]);
if x[5,3]=0 then writeln(f,-1);
close(f)
End.
B этом примере первую часть можно было оформить так:
Type
M=array[1..5,1..3] of real;
Var
x:M;
i,j:integer;
f:file of M;
Begin
for i:=1 to 5 do
for j:=1 to 3 do
read(x[i,j]);
ASSIGN(f,'z.txt');
REWRITE(f);
{ Так как f – файловая переменная, т.е. файл записей, в котором каждая запись представляет собой массив, сразу можно записать в файл весь массив }
write(f,x); { массив записывается целиком процедурой WRITE }
CLOSE(f)
End.
Если файловая переменная объявлена как файл (file of) типа массив, то каждая запись файла содержит массив, описанный в типе, т.е. каждая процедура write (read) записывает (считывает) в (из) файл(а) за одно обращение один массив.
Переменные строкового типа хранят в файле, описанном как
f:text;
Пример 2
Считать все данные вещественного типа из файла u.txt типа text и записать их в одномерный массив х.
Решение
Var
f:text;
x:array [1..100] of real;
i:integer;
Begin
ASSIGN(f,'u.txt');
RESET(f);
i:=0;
while not eof(f) do
begin
i:=i+1;
readln(f,x[i]);
writeln(i,' ',x[i])
end;
CLOSE(f)
End.
Пример 3
Считать массив X из файла z.txt, описанный как file of двухмерный массив вещественных чисел. При необходимости заменить некоторые значения элементов массива с экрана и записать измененный массив обратно в файл.
Решение
Type
mas = array [1..5,1..3] of real;
Var
x:mas;
f:file of mas;
i,j,k:integer;
st:string;
Begin
assign(f,'z.txt');
reset(f);
read(f,x); {Считывание массива X из файла z.txt}
writeln('Выведем поэлементно массив Х');
writeln('Замените массив Х');
writeln('Если данные не хотите изменять,',
' нажмите <Enter>');
for i:=1 to 5 do
for j:=1 to 3 do
begin
write('x[',i,',',j,']=',x[i,j],'/');
readln(st);
if st<>'' then val(st,x[i,j],k) {преобразование строки в число}
end;
seek(f,0); {встали в начало файла}
write(f,x); {записали массив X в файл z.txt}
close(f);
End.