Автор работы: Пользователь скрыл имя, 26 Октября 2011 в 23:09, реферат
Прежде всего, следует напомнить, что изучение языка программирования представляет собой знакомство с формальными правилами записи алгоритмов для их последующего выполнения компьютером. Формальность сия проистекает из самих принципов, заложенных в архитектуру вычислительных устройств, и жесткости математической логики. Поэтому, постарайтесь воспринять все довольно строгие правила как неизбежность, настроитьсебя на серьезную, скрупулезную, порой сложную работу. Однако не стоит бояться, расстраиваться и сетовать на судьбу: немного аккуратности, внимания, знания предыдущего материала - и вы уже программист.
End;
Begin
Writeln('Введите
три числа');
Readln(A,B,C);
Writeln('Максимальным из всех является ',
Max(Max(A,B),C))
End.
Обратите внимание на краткость тела основной программы и на прозрачность действий внутри функции. Формальные параметры A и B, используемые в подпрограмме, не имеют никакого отношения переменным A и B, описанным в основной программе.
Существует два способа передачи фактических параметров в подпрограмму: по значению и по ссылке. В первом случае значение переменной-фактического параметра при вызове подпрограммы присваивается локальной переменной, являющейся формальным параметром подпрограммы. Что бы потом ни происходило с локальной переменной, это никак не отразится на соответствующей глобальной. Для одних задач это благо, но иногда требуется произвести в подпрограмме действия над самими переменными, указанными в качестве фактических параметров. На помощь приходит второй способ. Происходит следующее: при обращении к подпрограмме не происходит формирования локальной переменной-формального параметра. Просто на время выполнения подпрограммы имя этой локальной переменной будет указывать на ту же область памяти, что и имя соответствующей глобальной переменной. Если в этом случае изменить локальную переменную, изменятся данные и в глобальной.
Передача параметров
по ссылке отличается тем, что при
описании подпрограммы перед именем
переменной-формального
Еще один классический пример. Задача: "Расположить в порядке неубывания три целых числа".
Program Pr;
Var
S1,S2,S3 :Integer;
Procedure Swap(Var A,B: Integer);{Процедура Swap с
параметрами-переменными}
Var C : Integer; {C - независимая локальная
переменная}
Begin
C:=A; A:=B; B:=C {Меняем местами содержимое A
и B}
End;
Begin
Writeln('Введите три
числа');
Readln(S1,S2,S3);
If S1>S2 Then Swap(S1,S2);
If S2>S3 Then Swap(S2,S3);
If S1>S2 Then Swap(S1,S2);
Writeln('Числа в порядке неубывания:V',S1,S2,S3)
End.
Тип-файл представляет собой последовательность компонент одного типа, расположенных на внешнем устройстве (например, на диске). Элементы могут быть любого типа, за исключением самого типа-файла. Число элементов в файле при описании не объявляется. Работа с физическими файлами происходит через так называемые файловые переменные.
Для задания
типа-файла следует
Пример:
Type
N = File Of Integer; {Тип-файл
целых чисел}
C = File Of Char; {Тип-файл символов}
Есть заранее определенный в Паскале тип файла с именем Text. Файлы этого типа называют текстовыми.
Введя файловый
тип, можно определить и переменные
файлового типа:
Var
F1 : N;
F2 : C;
F3 : Text;
Тип-файл можно
описать и непосредственно при
введении файловых переменных:
Var
Z : File Of Word;
Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивать значение, сравнивать и т.д.). Их можно использовать лишь для выполнения операций с файлами (чтение, запись и т.д.).
Элементы файла считаются расположенными последовательно, то есть так же, как элементы линейного массива. Отличие же состоит в том, что, во-первых, размеры файла могут меняться, во-вторых, способ обращения к элементам совсем другой: невозможно обратиться к произвольному элементу файла; элементы его просматриваются только подряд от начала к концу, при этом в каждый момент времени доступен только один элемент. Можно представить себе, что для каждого файла существует указатель, показывающий в данный момент на определенный компонент файла. После проведения операции чтения или записи указатель автоматически передвигается на следующий компонент.
Перед тем, как осуществлять ввод-вывод, файловая переменная должна быть связана с конкретным внешним файлом при помощи процедуры Assign.
Формат:
Assign(<Имя файловой переменной>,<Имя
файла>);
Имя файла задается либо строковой константой, либо через переменную типа Sting. Имя файла должно соответствовать правилам работающей в данный момент операционной системы. Если строка имени пустая, то связь файловой переменной осуществляется со стандартным устройством ввода-вывода (как правило - с консолью).
После этого
файл должен быть открыт одной из процедур:
Reset(<Имя файловой переменной>);
Открывается существующий файл для чтения,
указатель текущей компоненты файла настраивается
на начало файла. Если физического файла,
соответствующего файловой переменной
не существует, то возникает ситуация
ошибки ввода-вывода.
Rewrite(<Имя файловой
переменной>);
Открывается новый пустой файл для записи,
ему присваивается имя, заданное процедурой
Assign. Если файл с таким именем уже существует,
то он уничтожается.
После работы с
файлом он, как правило, должен быть
закрыт процедурой Close.
Close(<Имя файловой переменной>);
Это требование обязательно должно соблюдаться для файла, в который производилась запись.
Теперь рассмотрим непосредственную организацию чтения и записи.
Для ввода информации
из файла, открытого для чтения, используется
уже знакомый вам оператор Read. Правда,
в его формате и использовании
вы заметите некоторые изменения:
Read(<Имя файловой переменной>, <Список
ввода>);
Происходит считывание данных из файла
в переменные, имена которых указаны в
списке ввода. Переменные должны быть
того же типа, что и компоненты файла.
Вывод информации производит, как можно догадаться оператор Write(<Имя файловой переменной>, <Список вывода>);
Данные из списка
вывода заносятся в файл, открытый
для записи.
Для текстовых файлов используются также
операторы Readln и Writeln с соответствующими
дополнениями, относящимися к файловому
вводу-выводу. Любопытно, что вывод данных
на монитор и ввод с клавиатуры в языке
Паскаль тоже являются действиями с файлами.
Они даже имеют свои предопределенные
файловые переменные текстового типа:
Output и Input соответственно. Переменная Output
всегда открыта для записи, Input - для чтения.
Если не указывать файловые переменные
в операторах ввода-вывода (придем к формату,
рассмотренному в теме "Операторы ввода-вывода"),
то в случае записи по умолчанию выбирается
файл Output, в случае чтения - Input.
Как вы знаете, любой файл конечен и продолжать
чтение из него информации можно лишь
до определенного предела. Как этот предел
установить? Проверить, окончен ли файл,
можно вызовом стандартной логической
функции Eof(<Имя файловой переменной>)
Она вырабатывает значение True, если
файл окончен, и False - в противном случае.
Решим следующую задачу: "Написать программу, которая вводит с клавиатуры список фамилий учащихся, а затем распечатывает его, кроме тех учащихся, у которых фамилия начинается с буквы 'Ш'".
Так как заранее количество данных не известно, то для их хранения используем файл. Тип элементов - строковый.
Program L;
Var
I,N : Integer;
F : File Of String;
S : String;
Begin
Assign(F,'Spis.lst'); {Связываем
переменную F с файлом Spis.lst}
Writeln('Введите количество учащихся');
Readln(N); {Вводим количество учащихся}
Rewrite(F); {Создаем файл для записи в него
данных}
For I:=1 To N Do {Для всех учащихся}
Begin
Writeln('Введите фамилию');
Readln(S);
Write(F,S)
End;
Close(F);
Reset(F);
Writeln; Writeln('Список учащихся:');
While Not(Eof(F)) Do
Begin
Read(F,S);
If S[1]<>'Ш' Then
Writeln(S)
End;
Close(F)
End.
13
Окт
Опубликовал admin Рубрика Лабораторная работа №1
Тема: «Составление и отладка программ линейной структуры».
Цель работы: Научиться составлять и редактировать программы линейной структуры на языке Turbo Pascal в режиме диалога, записывать алгоритм решения задач своего варианта. Познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ.
Вопросы к защите:
Составить
блок-схему и программу по
Нет комментариев
13
Окт
Опубликовал admin Рубрика Лабораторная работа №1
Лабораторная работа №1
Тема: «Составление и отладка программ линейной структуры».
Цель работы: Научиться составлять и редактировать программы линейной структуры на языке Turbo Pascal в режиме диалога, записывать алгоритм решения задач своего варианта. Познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ.
Задача: Вычислить длину окружности и площадь круга по заданному радиусу.
Блок-схема:
Нет комментариев
13
Окт
Опубликовал admin Рубрика Лабораторная работа №1
Листинг программы:
program lab1;
var r:integer; s,l:real;
Begin
Writeln(‘Введите радиус круга’);
readln(r);
S:=pi*sqr(r);
l:=2*pi*r;
Writeln(‘Площадь круга = ‘,s:2:1,’; Длина круга = ‘,l:2:1);
readln
end.
Результат работы:
Введите радиус круга
4
Площадь круга =
50.3; Длина круга = 25.1
Информация о работе Экономикалық мамандықтарының студенттеріне арналған