запись и Чтение
Пример 25.Прочтём файл целых чисел и выведем их на экран(Ответа везде приводятся для версии Turbo Pascal)
Assign(Fl,’a:int.dat’); {связываем с внешним файлом}
Reset(Fl); {открываем его для чтения}
While Not EOF (Fl) Do {пока не достигнут финиш файла F1}
Begin
Read(Fl,n); {считываем очередное число}
Write(n, ‘ ‘); {выводим его на экран} End;
Close(Fl); {закрываем файл}
Пример 26.Создадим файл целых чисел с именем Dan1.dat, причем ни одно из чисел не равняется 0.
Ответ. Первоначально «свяжем» файловую переменную с конкретным внешним файлом при помощи процедуры Assign. Откроем файл для записи — процедура Rewrite. Финиш ввода чисел — ввод числа ноль.
Program Example_26;
Var F: File Of Integer/
n: Integer;
Begin
Assign(F, ‘a:danl.dat’); {связываем с внешним файлом}
Rewrite(F); {открываем его для записи}
Writeln(‘финиш ввода чисел — О1);
Repeat {пока не будет введен 0}
Writeln(‘введите число’); Readln(n); {ввод числа с клавиатуры}
{в случае если введено число, хорошее от 0,
то дописываем его в данную строчок файла F1}
If n0 Then Write (F, n) ;
Until n=0/ {в случае если ввели 0, то заканчиваем запись данного файла} Close(F); {закрываем файл}
End.
Пример 27.В файле Da1l.dat записаны целые числа (см. прошлую задачу). Вычислить результат и сумму элементов вместе с исходными разрешёнными записать в файл Dan2.dat.
Program Example_27;
Var Fl, F2: File Of Integer; {файловые переменные }
S, N: Integer;
Begin
{с именем файла Fl связывается внешний файл на дискете} Assign(Fl,’Danl.dat’); Reset(Fl)/
{открытие файла Fl для чтения }
{с именем файла F2 связывается внешний файл на дискете} Assign(F2,’Dan2. dat1’);
Rewrite(F2);{открытие файла F2 для записи} S:=0;
While Not EOf(Fl) Do {проверка на конец файла семь дней}
Begin
Read(Fl,N); {чтение элемента из файла Fl}
Write(F2,N); {запись элемента в файл F2}
S:=S+N/ {вычисление суммы} End;{запись суммы элементов в финиш файла F2}
Write(F2,семь дней) ;
Write(‘Итог находится в файле Dan2.dat1)
Close(F1); {закрытие файла F1 для чтения}
Close(F2); {закрытие файла F2 для записи}
Readln;
End.
Текстовые файлы
Пример 28. Дан текстовый файл, содержащий лишь целые числа, в каждой строке возможно пара чисел, каковые разделяются пробелами. Вывести на экран все числа с учетом разбиения на строчки и подсчитать число элементов в каждой строке.
Ответ. Пускай в файле содержится следующая информация:
132 456 87 656 5765
45 12 34 76
524 6253 3 233 323 38764
Данный файл возможно создать в среде Turbo Pascal так:
• создать новый файл (команда New меню File);
• записать все числа в строчках через пробелы;
• сохранить его, к примеру «а: int1.dat».
Сейчас данный файл будем применять в программе.
Program Exarnple_29;
Var F: Text;
x, k: Integer;
Begin
Assign(F, ‘a:intl.dan1); {связываем с внешним файлом}
Reset(F); {открываем для чтения}
While Not Eof(F) Do {пока не финиш файла}
Begin
k:=0; {начальное число элементов строчка}
While Not Eoln(F) Do {пока не финиш строчка} Begin
Read(F, x); {считываем очередное число}
Write(х,’’); {вывод его на экран} Inc(к); {увеличиваем счетчик} End;
Writeln(‘ в строчке’, к,’элементов’);
Readln(F); {переходим к следующей строчку файла}
End;
Close(F); {закрываем файл}
Readln;
End.
Массивы
Пример29. Отыскать сумму пяти целых чисел.
Ответ. Для решения данной задачи нужно обрисовать пять переменных для целых чисел и еще одну — для их суммы. Обозначим первые как al, а2, а3, а4 и a5, а их сумму s. Тогда возможно разработать такую программу, применяя функцию нахождения суммы пяти чисел:
Program Example_29;
Var al,a2,a3,a4,a5,s: Integer;
Function Sum(xl,x2,x3,x4,x5: Integer): Integer;
Begin
Sum:=xl+x2+x3+x4+x5;
End;
Begin
Writeln ( ‘ введите пять целых чисел’);
Readln(al,a2,аЗ,а4,а5); {вводим пять целых чисел}
s:=Sum(al,а2,аЗ,а4,а5); {находим их сумму}
Writeln(‘их сумма равна !,s); {вывод результата на экран}
Readln;
End.
А как отыскать сумму, к примеру, 100 целых чисел? Тут нужно применять массив.
Пример 30.Разработать программу нахождения суммы элементов массива.
Ответ. Обрисуем две вывода (массива и процедуры формирования) и функцию нахождения суммы элементов, каковые будем применять в основной части. Увидим, что вывод и заполнение массива возможно осуществить лишь поэлементно, другими словами возможно сперва присвоить значение первому элементу, после этого второму и без того потом, то же самое и с выводом на экран — выводим первый, второй, третий… и без того до последнего. Будем вводить значения элементов массива с клавиатуры.
Program Exaraple_30;
Const n=30; {n — это число элементов массива}
Type myarray=Array[1..n] Of Integer;
Var A: myarray; s: Integer;{s — значение данной переменной будет равняется сумме всех элементов массива}
ProcedureInitl(Var m: myarray);
Var i: Integer;
{i — это переменная для работы с элементами массива}
Begin
Writeln(‘введите ‘,п, ‘ чисел’);
For i:=l To n Do {ввод массива с клавиатуры}
Readln(m[i]); {чтение i-ro элемента}
End;
Procedure Print(m: myarray);
Var i: Integer;
Begin
For i:=l To n Do {вывод массива}
Write(m[i]: 3); {вывод i-го элемента}
Writeln;
End;
Function Sum(m: myarray): Integer;
Var i, sum: Integer;
Begin
sum:=0; {начальное значение суммы}
For i:=l To n Do
sum:=sum+m[i]; {к уже отысканной сумме
первых (i-1) элементов прибавляем i-й элемент}
End;
Begin
Initl(A); {обращение к процедуре формирования}
Print(А); {вывод массива}
s:=Sum(A); {нахождение суммы элементов}
Writeln(‘их сумма равна ‘,s); {вывод результата на экран}
Readln;
End.
Первый метод задания одномерного массива — это задание с клавиатуры (он был рассмотрен в примере выше — процедура Initl).
Второй метод задания — это задание посредством генератора случайных чисел; данный метод более эргономичен, в то время, когда большое количество элементов в массиве.
Пример 31. Разработаем распечатки и программу заполнения одномерного массива посредством генератора случайных чисел. Процедура вывода уже составлена ранее, а процедуру формирования напишем новую.
Program Example_31;
Const n=30; dd=51;
{n — это число элементов массива, dd — для генератора случайных чисел}
Type myarray = Array [l..n] Of Integer;
Var A: myarray;
Procedure Init2(Var m:myarray);
{процедура заполнения (инициализации) массива случайными числами}
Var i:Integer;
Begin
For i:=l To n Do m[i]:=-25+Random(dd);
{Random выбирает случайное число из отрезка от 0 до dd-1, тогда i-му элементу массива будет присвоена сумма выбранного случайного числа и -25, так, массив будет заполняться случайными числами от -25 до -25+(dd-1), другими словами до -26+dd}
End;
Procedure Print(m:myarray); {процедура вывода (распечатки) массива}
Begin
Randomize; {включение генератора случайных чисел}
Init2(А); {обращение к процедуре заполнения массива}
Print(А); {обращение к процедуре вывода заполненного массива} Readln;
End.
ЧТО В случае если ДАТЬ ПАУКУ АРБУЗ БАБКИ ГРЕННИ В реальности В МАЙНКРАФТЕ НУБИК В MINECRAFT Мультфильм