Презентация InformatikaProgram42012. pptx онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему InformatikaProgram42012. pptx абсолютно бесплатно. Урок-презентация на эту тему содержит всего 67 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Образование » InformatikaProgram42012. pptx
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:67 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:288.84 kB
- Просмотров:72
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№2 слайд
![Язык программирования](/documents_5/6075a57e9040e8024957dd0b725f841a/img1.jpg)
Содержание слайда: Язык программирования Паскаль. Алфавит языка
<алфавит> :: = <буквы> | <цифры> | <ограничители>
<буквы> :: = A | B | …| Z | a | b | …| z | _
<цифры> :: = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<ограничители>::=<знаки операций>|<скобки> |
<зарезервированные слова>| <разделители>
<знаки операций>::= <арифметические>|<отношения>|
<логические>|<над строками>|<над множествами>
<зарезервированные слова>::= and | asm | array | begin |
case | const| constructor | destructor | div |
do | downto | else | end | exports | file | for |
function | goto | if | implementation | in |
inherited | inline | interface | label | library |
mod | nil | not | object | of | or | packed |
procedure | program | record | repeat | set |
shl | shr | string | then | to | type | unit | until |
uses | var | while | with | xor
Пробел является разделителем.
Комментарий - это текст, заключенный между скобками { } или (* *). Может содержать буквы (в том числе и русские), цифры, специальные знаки. Используется для обозначения участков программ или пояснения команд. Может располагаться в любом месте программы.
разделители>::= := | . | , | : | ; | ^ | $ | #
№3 слайд
![Структура программы на языке](/documents_5/6075a57e9040e8024957dd0b725f841a/img2.jpg)
Содержание слайда: Структура программы на языке Паскаль
Синтаксически программа на языке Паскаль делится на 2 части: заголовок и программный блок.
Общий вид заголовка:
PROGRAM <имя программы>[(<список файлов>)];
Заголовок программы может отсутствовать. Стандартные файлы INPUT (входной) и OUTPUT (выходной) также могут опускаться, т.к. принимаются по умолчанию.
Блок программы состоит из описательной и исполнительной частей (описательная часть предшествует исполнительной части) и включает следующие разделы:
LABEL <описание меток>; - раздел описания меток
CONST <описание констант>; - раздел описания констант
TYPE <описание типов>; - раздел описания типов
VAR <описание переменных>; - раздел описания переменных
PROCEDURE <описание процедуры> ; - раздел описания
FUNCTION <описание функции>; процедур и функций
BEGIN
<исполнительная часть программы> - раздел операторов
END.
№4 слайд
![Элементарные конструкции](/documents_5/6075a57e9040e8024957dd0b725f841a/img3.jpg)
Содержание слайда: Элементарные конструкции
Различные объекты программы должны иметь имена. В качестве имен используются идентификаторы.
Идентификатор - последовательность букв и цифр, а также знака подчеркивания, начинающаяся с буквы. Желательно выбирать значащие идентификаторы, например, MAX, MIN, SUMMA и т.д. Зарезервированные слова нельзя использовать в качестве идентификаторов.
Константы – это данные, значения которых не изменяются в процессе работы программы. Константы могут быть поименованными (с типом и без типа) и явно заданными.
Арифметические константы предназначены для представления целых и вещественных числовых данных.
Для вещественных констант используется форма записи с фиксированной точкой и плавающей точкой (экспоненциальная форма). В форме с фиксированной точкой целая и дробная части разделяются точкой, при экспоненциальной форме число представляется в виде мантиссы и порядка, между которыми стоит буква Е.
<мантисса>Е{ ±}<порядок>
№6 слайд
![Константы Логические](/documents_5/6075a57e9040e8024957dd0b725f841a/img5.jpg)
Содержание слайда: Константы
Логические константы могут принимать одно из двух значений: True(истина) или False(ложь). В языке предусмотрены следующие логические типы констант: Boolean(1 байт), Bytebool(1 байт), Wordbool(2 байта), Longbool(4 байта).
Константы символьного типа Char представляют собой 1 символ кодового набора ASCII (американский стандартный код обмена информацией). Занимает в памяти 1 байт. Символьная константа заключается в апострофы ‘’. Существует упорядоченность символов в соответствии с их кодами. Для цифр и букв латинского алфавита коды символов удовлетворяют соотношению: ‘0’<…<’9’<‘A’<…<’Z’<’a’<…<’z’.
Константы строкового типа String представляют собой последовательность символов, заключенную в апострофы. Длиной строки называется количество символов в ней. Если среди символов константы строкового типа имеется хотя бы один апостроф, он изображается двумя апострофами. Длина строки может быть от 0 до 255 символов.
Переменная – это наименование, данное некоторому значению. Обозначается с помощью идентификатора переменной. Переменные стандартных типов принимают значения из диапазонов значений, указанных для констант соответствующего вида.
№7 слайд
![Типы данных Каждая переменная](/documents_5/6075a57e9040e8024957dd0b725f841a/img6.jpg)
Содержание слайда: Типы данных
Каждая переменная и константа в программе на языке Паскаль имеет свой тип данных. Тип определяет набор операций, которые могут быть к ней применимы, а также тип результата выполнения этих операций. Имеются типы стандартные и типы, описанные пользователем.
Все переменные, используемые в программе должны быть описаны в разделе описания переменных VAR.
VAR <идентификатор> [,<идентификатор>,…]: <тип>;
[<идентификатор> [,<идентификатор>,…]: <тип>;…]
Например,
VAR A : Integer;
B, C: Real;
№8 слайд
![Типы данных Порядковый](/documents_5/6075a57e9040e8024957dd0b725f841a/img7.jpg)
Содержание слайда: Типы данных
Порядковый стандартный тип обозначает конечное линейное множество значений. К нему обычно относят целые типы, байтовые, символьные и логические.
Раздел описания типов:
TYPE <идентификатор типа> = (<идентификатор>
[,<идентификатор>,…]);
Перечисляемый тип – определяет упорядоченное множество значений путем перечисления идентификаторов, выражающих эти значения как постоянные. Для каждого такого элемента выделяется один байт памяти. Используется в качестве индексов массивов и имеет порядковую нумерацию, начиная с нуля.
Интервальный тип определяет некоторое подмножество значений, которые может принимать данная переменная. Задаются наименьшее и наибольшее значения порядкового типа. Для каждого элемента выделяется один байт памяти.
TYPE <идентификатор типа> = <константа>. .<константа>;
№9 слайд
![Типы данных TYPE GR DS , DS ,](/documents_5/6075a57e9040e8024957dd0b725f841a/img8.jpg)
Содержание слайда: Типы данных
TYPE GR = (DS101, DS102, DS201, DS202, DS301, DS302);
SPEC = DS101. . DS302;
DIGIT = 0. .9;
VAR A : DIGIT;
B : SPEC;
D : 100. .200;
Строчный тип используется для описания строк длиной от 0 до 255 символов. Максимальная длина строки указывается в квадратных скобках. Если она не указана, максимальная длина полагается 255. Важной особенностью является то, что к каждому символу строки возможен доступ по его номеру.
TYPE <идентификатор типа> = String [<максимальная длина>];
Например,
TYPE TString = String[100];
TS = String;
VAR S,S1 : Tstring;
S2 : String[20];
SS : TS;
№10 слайд
![Типы данных Массив это](/documents_5/6075a57e9040e8024957dd0b725f841a/img9.jpg)
Содержание слайда: Типы данных
Массив – это упорядоченная совокупность однотипных переменных, обладающих одинаковыми свойствами. Отношение порядка между элементами массива задается с помощью индексирования. Каждому элементу массива ставится в соответствие один или несколько индексов. Если каждому элементу ставится в соответствие один индекс, то это - одномерный массив (вектор). При наличии двух индексов - двумерный массив (матрица). Первый индекс обозначает номер строки, а второй – номер столбца, где находится соответствующий элемент.
TYPE <идентификатор типа> = ARRAY [<список типов индексов>] OF<тип>;
<тип индексов> :: = <простой тип>
<простой тип>:: = <идентификатор типа>|<идентификатор>
[,<идентификатор>]| <константа>. .<константа>
№11 слайд
![Типы данных В качестве типа](/documents_5/6075a57e9040e8024957dd0b725f841a/img10.jpg)
Содержание слайда: Типы данных
В качестве типа индекса может быть любой простой тип, кроме вещественных. Чаще всего используется интервальный тип индекса от целых типов.
TYPE T1 = ARRAY [-10 .. 20,1..30] OF BYTE;
T2 = ARRAY [0..50] OF BOOLEAN;
T3 = ARRAY [BYTE] OF INTEGER;
VAR A, B: T1; C: T2; Z: ARRAY[1..100] OF REAL; MAS: T3; Обращение к элементам массивов осуществляется с помощью переменных с индексами. Число индексов в переменной с индексами равно числу измерений массива. Индексы могут задаваться целыми числами, простыми переменными, арифметическими выражениями. Если массивы имеют одинаковое описание, их можно копировать В:= А.
S := S + Z [I] ;
P := P * A [I,J] ;
C[6] := TRUE ;
P := P * A[I,J] ;
R := B [I+5,J] ;
MAS [I] := MAS [I-1] * MAS [I] ;
№12 слайд
![Типы данных Рассмотрим](/documents_5/6075a57e9040e8024957dd0b725f841a/img11.jpg)
Содержание слайда: Типы данных
Рассмотрим различные способы описания массивов.
Пусть требуется описать матрицу A, содержащую 10 строк и 50 столбцов, с элементами целого типа.
TYPE TMATR = ARRAY [1..10, 1..15] OF INTEGER;
VAR A : TMATR;
TYPE TSTR = ARRAY [1..50] OF INTEGER;
TMATR = ARRAY [1..10] OF TSTR;
VAR A : TMATR;
VAR A : ARRAY[1..10,1..50] OF INTEGER;
VAR A : ARRAY[1..10] OF ARRAY[1..50] OF INTEGER;
№13 слайд
![Операторы языка Паскаль.](/documents_5/6075a57e9040e8024957dd0b725f841a/img12.jpg)
Содержание слайда: Операторы языка Паскаль. Оператор присваивания
Наиболее простым и часто используемым оператором языка является оператор присваивания:
<переменная> : = <выражение>;
Выражение – это формула для вычисления значения. Она образуется из операндов, соединенных знаками операций и выражений в круглых скобках. В качестве операндов могут выступать переменные, константы, указатели функций.
Тип переменной в левой части оператора присваивания обычно должен совпадать с типом значения выражения в правой части. Возможны случаи несовпадения типов, например, когда слева переменная вещественного типа, а справа выражение целого типа. Выражения являются составной частью операторов.
№14 слайд
![Операторы языка Паскаль.](/documents_5/6075a57e9040e8024957dd0b725f841a/img13.jpg)
Содержание слайда: Операторы языка Паскаль. Оператор присваивания
Приоритеты выполнения операций в порядке убывания:
одноместный минус;
операция NOT;
операции типа умножения ;
операции типа сложения;
операции сравнения (отношения).
Одноместный минус применим к операндам арифметического типа. Операция NOT – к операндам логических и целых типов. Если в одном выражении несколько операций одного приоритета, то они выполняются, начиная слева. Приоритеты можно изменить, поставив скобки. В логических выражениях необходимы скобки во избежание конфликта типа по приоритету.
Например, если в выражении … (X > 5) AND (Y > 10) … не поставить скобки, то будет синтаксическая ошибка, так как приоритет операции AND выше приоритета операций сравнения >.
№15 слайд
![Операторы языка Паскаль.](/documents_5/6075a57e9040e8024957dd0b725f841a/img14.jpg)
Содержание слайда: Операторы языка Паскаль. Выражения
<операции типа умножения> :: = * | / | div | mod | and
<операции типа сложения> :: = + | - | or | xor
<операции сравнения> :: = = | <> | < | > | <= | >= | in
Операции сравнения применимы для всех стандартных простых типов. Результат сравнения всегда имеет логический тип.
(5 + 6) < (5 - 6) = TRUE в результате даст FALSE
NOT(8.5 < 4) будет равно TRUE.
Сравнение строк символов выполняется слева направо посимвольно. Более короткие строки дополняются пробелами справа.
№16 слайд
![Процедуры ввода данных](/documents_5/6075a57e9040e8024957dd0b725f841a/img15.jpg)
Содержание слайда: Процедуры ввода данных
Процедуры READ и READLN используют для ввода символов (тип данных CHAR), строк (тип данных STRING) или числовых данных (тип данных INTEGER, BYTE, REAL и др.).
READ (<список ввода>);
READLN (<список переменных>);
При отсутствии <имени файла> считывание данных производится из стандартного файла INPUT; при этом стандартными устройствами считаются клавиатура.
Каждому оператору ввода соответствует свой поток данных, в котором перечисляются значения констант, присваиваемые переменным, указанным в списке переменных. Присваивание значений из входного потока происходит слева направо в соответствии с порядком следования переменных в списке переменных.
Read(A,B);
. . . После ввода: 2.5 10
A=2.5; B=10;
№17 слайд
![Процедуры вывода данных WRITE](/documents_5/6075a57e9040e8024957dd0b725f841a/img16.jpg)
Содержание слайда: Процедуры вывода данных
WRITE (<список выражений>);
Если <имя файла> отсутствует, то вывод осуществляется в стандартный файл OUTPUT (на экран дисплея). Если указано < имя файла >, этот файл должен быть описан или подготовлен заранее.
Оператор WRITE выводит значения выражений из списка на текущую строку до ее заполнения. Если за ним следует оператор вывода, а текущая строка еще не заполнена, то вывод осуществляется на ту же строку.
X:=5; Y:=10;
Write (‘X=’, X);
Write (‘ Y=’,Y); На печать:X=5 Y=10
Существует возможность задавать ширину поля (число позиций) для выводимой величины.
Оператор вывода с форматом:
WRITE ([< имя файла или устройства >,]R1:N1,R2:N2,…, Rm:Nm);
Здесь - R1,R2,…,R m- выводимые переменные;
N1,N2,…,N m- ширина поля.
Если ширина поля избыточна, то слева помещаются пробелы. Если же ширины поля не хватает для вывода, то заданное значение для ширины поля игнорируется и выводится реальное число.
№18 слайд
![Операторы языка Пустой](/documents_5/6075a57e9040e8024957dd0b725f841a/img17.jpg)
Содержание слайда: Операторы языка
Пустой оператор не обозначается и не вызывает никаких действий в программе, представляет собой дополнительную точку с запятой.
Составной оператор.
Если необходимо, чтобы группа операторов рассматривалась с синтаксической точки зрения, как один оператор, эту группу операторов заключают в операторные скобки BEGIN и END. Такой оператор называется составным оператором. Составной оператор может быть использован в любом месте программы, где разрешен простой оператор, но требуется выполнение нескольких действий.
№19 слайд
![Условный оператор IF lt](/documents_5/6075a57e9040e8024957dd0b725f841a/img18.jpg)
Содержание слайда: Условный оператор
IF <логическое выражение> THEN<оператор 1> [ ELSE <оператор 2>] ;
Оператор выполняется таким образом: если результат вычисления логического выражения TRUE, то выполняется <оператор 1>, затем <следующий оператор >; если – FALSE, то выполняется <оператор 2>, затем <следующий оператор>. Операторы 1 и 2 могут быть простым или составным оператором. Если часть оператора, начинающаяся ELSE, отсутствует, то при логическом выражении равным FALSE, будет выполняться <следующий оператор>. При вложенности условных операторов ELSE всегда относится к ближайшему предшествующему IF. Следует избегать большой глубины вложенности условных операторов, так как при этом теряется наглядность и возможно появление ошибок.
… IF A > 0 THEN P := P + 1 ELSE IF A < 0 THEN O := O + 1
ELSE N := N + 1 ; …
…IF A > 0 THEN BEGIN S := S+ A ; K := K + 1 END ;…
№20 слайд
![Оператор выбора Оператор](/documents_5/6075a57e9040e8024957dd0b725f841a/img19.jpg)
Содержание слайда: Оператор выбора
Оператор выбора CASE может быть использован вместо условного оператора, если требуется сделать выбор более, чем из двух возможностей.
CASE <селекторное выражение> OF
<метка>,<метка>: <оператор 1> ;
<метка>,<метка>: <оператор 2> ;
. . . . .
<метка>,<метка>: <оператор n>;
[ ELSE <оператор>]
END;
Селекторное выражение (селектор, переключатель) и метки-константы (метки варианта, метки выбора) должны иметь один и тот же простой тип (кроме вещественного). Метки-константы в отличие от меток программы не требуется описывать в разделе описания меток. Но на них нельзя ссылаться в операторе GOTO. Метки варианта могут быть перечисляемого и интервального типа.
<оператор 1>,<оператор 2>,<оператор n> - простой или составной оператор.
Оператор выбора выполняется следующим образом. Сначала вычисляется селекторное выражение; затем выполняется оператор, метка варианта которого равна текущему значению селектора; после этого происходит выход из оператора CASE на следующий оператор. Если значение селектора не совпадает ни с одной из меток варианта, будет выполнен оператор после ELSE. Если ветвь ELSE отсутствует, то управление передается следующему за CASE оператору.
№21 слайд
![Оператор выбора В следующем](/documents_5/6075a57e9040e8024957dd0b725f841a/img20.jpg)
Содержание слайда: Оператор выбора
В следующем примере переменная OTVET получает значение YES или NO в зависимости от введенного значения символьной переменной V. Здесь метки варианта задаются перечислением.
VAR V : CHAR; OTVET : STRING;
Begin … CASE V OF
‘D’, ‘d’, ‘Д’, ‘д’ : OTVET := ‘YES’;
‘N’, ‘n’, ‘Н’, ‘н’ : OTVET := ‘NO’
ELSE OTVET := ‘ ‘
END; …
В следующем примере метки выбора заданы интервалом.
… VAR V : CHAR; OTVET : STRING;
Begin … CASE V OF
‘A’ . . ‘Z’,’a’ . . ‘z’ : OTVET := ‘буква’;
‘0’ . . ‘9’ : OTVET := ‘цифра’
ELSE
OTVET := ‘специальный символ‘ END; …
№22 слайд
![Оператор цикла с параметром](/documents_5/6075a57e9040e8024957dd0b725f841a/img21.jpg)
Содержание слайда: Оператор цикла с параметром
FOR<параметр цикла>:=<выраж.1> TO <выраж.2> DOWNTO
DO < оператор > ;
< параметр цикла > - это переменная цикла любого порядкового типа (целого, символьного, перечисляемого, интервального);
TO – выбирается следующее значение параметра цикла в соответствии с его типом при упорядочивании по возрастанию (алфавиту);
DOWNTO - выбирается следующее значение параметра цикла в соответствии с его типом при упорядочивании по убыванию.
< выражение 1> - начальное значение параметра цикла, выражение того же типа, что и параметр цикла;
< выражение 2> - конечное значение параметра цикла, выражение того же типа, что и параметр цикла;
< оператор>- тело цикла - простой или составной оператор.
№23 слайд
![Оператор цикла с параметром](/documents_5/6075a57e9040e8024957dd0b725f841a/img22.jpg)
Содержание слайда: Оператор цикла с параметром
При выполнении оператора FOR выполняются следующие действия:
вычисляется < выражение 1> , которое присваивается параметру цикла;
проверяется условие окончания цикла: <параметр цикла> больше <выражения 2> при использовании конструкции TO и <параметр цикла> меньше <выражения 2> при использовании конструкции DOWNTO;
выполняется тело цикла;
выбирается следующее значение параметра при упорядочивании по возрастанию (TO) или выбирается следующее значение параметра при упорядочивании по убыванию (DOWNTO);
все этапы, кроме первого, циклически повторяются.
При использовании оператора необходимо помнить:
Внутри цикла FOR нельзя изменять начальное, текущее или конечное значения параметра цикла.
№24 слайд
![Оператор цикла с параметром](/documents_5/6075a57e9040e8024957dd0b725f841a/img23.jpg)
Содержание слайда: Оператор цикла с параметром
После завершения цикла значение параметра цикла считается неопределенным, за исключением тех случаев, когда выход из цикла осуществляется оператором GOTO или с помощью процедуры BREAK.
Телом цикла может быть другой оператор цикла.
Например, для того, чтобы вычислить значение факториала F=N! можно воспользоваться следующими операторами:
a) … F:=1; b) … F:=1;
FOR I:=1 TO N DO FOR I:=N DOWNTO 1 DO
F:=F*I; … F:=F*I; …
№25 слайд
![Оператор цикла Если телом](/documents_5/6075a57e9040e8024957dd0b725f841a/img24.jpg)
Содержание слайда: Оператор цикла
Если телом цикла является другой цикл, то циклы называются вложенными или сложными.
Цикл, содержащий в себе другой цикл, называют внешним. Цикл, содержащийся внутри другого цикла, называется внутренним.
Внутренний и внешний циклы могут быть любыми из трех видов: FOR, WHILE или REPEAT. При построении вложенных циклов необходимо, чтобы все операторы внутреннего цикла полностью находились в теле внешнего цикла. Возможная глубина вложенности циклов ограничивается объемом памяти компьютера. Вначале выполняется самый внутренний цикл при фиксированных значениях параметров циклов с меньшим уровнем вложенности, затем изменяется параметр цикла следующего (за внутренним) уровня и снова выполняется самый внутренний цикл и т.д.
№26 слайд
![Оператор цикла Пример.](/documents_5/6075a57e9040e8024957dd0b725f841a/img25.jpg)
Содержание слайда: Оператор цикла
Пример. Вычислить значение Y , определяемое по формуле
PROGRAM SP;
CONST N=10; M=15;
VAR A: ARRAY [1..N,1..M] OF REAL;
I,J: INTEGER;
P,Y: REAL;
BEGIN
FOR I:=1 TO N DO FOR J:=1 TO M DO READ (A[I,J]);
Y:=0;
FOR I:=1 TO N DO
BEGIN P:=1;
FOR J:=1 TO M DO P:=P*A[I,J];
Y:=Y+P END;
WRITELN(‘Y=’,Y)
END.
№27 слайд
![Оператор цикла с предусловием](/documents_5/6075a57e9040e8024957dd0b725f841a/img26.jpg)
Содержание слайда: Оператор цикла с предусловием
WHILE <логическое выражение > DO <оператор>;
Логическое выражение вычисляется перед каждым выполнением тела цикла. Если логическое выражение принимает значение TRUE, то тело цикла выполняется, если значение FALSE, происходит выход из цикла. Тело цикла может не выполниться ни разу, если логическое выражение сразу ложно. Телом цикла является простой или составной оператор.
Любой алгоритм, реализуемый с помощью оператора FOR, может быть записан с использованием конструкции WHILE. Например, вычисление значения факториала F=N!:
… F:=1;
I:=1;
WHILE I<=N DO
BEGIN
F:=F*I;
I:=I+1;
END; …
№28 слайд
![Оператор цикла с предусловием](/documents_5/6075a57e9040e8024957dd0b725f841a/img27.jpg)
Содержание слайда: Оператор цикла с предусловием
В следующем примере требуется подсчитать значение Sin (x) с использованием разложения функции в ряд:
В сумму включить только те члены ряда, для которых выполняется условие:
т.е. очередной член ряда должен быть больше заданной точности вычислений .
Program SINX;
Var X,Y,E,U,Z : real; K: integer;
Begin Read (X,E);
K:=0; Y:=0; U:=X; Z:=sqr(X);
While abs(U)>E do
Begin
Y:=Y+U;
K:=K+2;
U:= -U* Z/ (K*(K+1));
End;
Writeln( ‘ SIN(X)=’, SIN(X), ‘ Y=’,Y);
End.
№29 слайд
![Оператор цикла с предусловием](/documents_5/6075a57e9040e8024957dd0b725f841a/img28.jpg)
Содержание слайда: Оператор цикла с предусловием
Рассмотрим пример вычисления значения квадратного корня из числа Х по итерационной формуле Yi+1 =(Yi + X/ Y i ) /2 с точностью Yi+1 - Yi <=
Program SQRTX;
Var X: real; {аргумент }
EPS: real; {точность вычисления }
Y0: real; {предыдущее приближение}
Y1: real; {очередное приближение }
A: real; {начальное приближение }
Begin Read( A,EPS,X);
If X>0 then
Begin Y0:=A; Y1:=(Y0+X/Y0)/2;
While abs(Y1-Y0)>EPS do
Begin Y0:=Y1; Y1:=(Y0+X/Y0)/2 End;
Writeln(‘Y1=’,Y1,’ при X=’,X)
End
Else Writeln(‘Число ’, X, ' меньше нуля');
End.
№30 слайд
![Оператор цикла с постусловием](/documents_5/6075a57e9040e8024957dd0b725f841a/img29.jpg)
Содержание слайда: Оператор цикла с постусловием
REPEAT
< оператор 1 > [;
< оператор 2 >] [;
…
< оператор n >]
UNTIL <логическое выражение>;
Данная конструкция оператора цикла используется, если число повторений цикла заранее неизвестно, но известно условие выхода из цикла. Управляющее циклом логическое выражение является условием выхода из цикла. Если оно принимает значение TRUE, то выполнение цикла прекращается. При использовании оператора REPEAT цикл выполняется хотя бы один раз. В отличие от других операторов цикла оператор данного вида не требует операторных скобок BEGIN - END, так как их роль выполняют REPEAT - UNTIL.
№31 слайд
![Оператор цикла с постусловием](/documents_5/6075a57e9040e8024957dd0b725f841a/img30.jpg)
Содержание слайда: Оператор цикла с постусловием
Вычисление F=N! с использованием конструкции REPEAT – UNTIL
F:=1; I:=1;
Repeat
F:=F*I; I:=I+1;
Until I>N;
Вводится последовательность чисел. Определить количество элементов кратных 7.
Program rep;
Var A,K: integer; C : char;
Begin
K:=0;
Repeat
Write(‘ Введите очередное число ‘); Read( A);
If A mod 7=0 then K:=K+1;
Writeln(‘Хотите выйти из цикла? д/y’ );
Readln( C ) ;
Until ( C=’д‘ ) or ( C=’y’) ;
Writeln(‘kol=’,K);
End.
Здесь условием выхода из цикла является ввод символов Д или Y при ответе на вопрос о выходе из цикла. Если вводится одна из этих букв, логическое выражение, записанное после UNTIL, становится TRUE и происходит выход из цикла.
№32 слайд
![Пример В следующем примере](/documents_5/6075a57e9040e8024957dd0b725f841a/img31.jpg)
Содержание слайда: Пример
В следующем примере требуется поменять местами максимальный и минимальный элементы, найденные среди элементов четных строк матрицы А(M,N).
Program Obmen;
Var A: array[1..30,1..30] of integer; I,J : integer; K1,L1,K2,L2 : integer; T,M,N: integer;
Begin Read(M,N);
For I:=1 to M do For J:=1 to N do Read( A[I,J]);
K1:=2;L1:=1; {координаты максимального элемента}
K2:=2;L2:=1; {координаты минимального элемента}
I:=2; While I<=M do
Begin
For J:=1 to N do
If A[K1, L1]< A[I,J] then Begin K1:=I;L1:=J; End
еlse
If A[K2, L2]> A[I,J] then Begin K2:=I;L2:=J; End;
I:=I+2; End;
T:= A[K1, L1]; A[K1, L1]:= A[K2, L2]; A[K2, L2]:=T;
For I:=1 to M do
Begin For J:=1 to N do
Write ( A[I,J] :6);
Writeln ;
End; End.
№33 слайд
![Операторы языка В языке](/documents_5/6075a57e9040e8024957dd0b725f841a/img32.jpg)
Содержание слайда: Операторы языка
В языке имеются процедуры BREAK и CONTINUE . Эти процедуры могут использоваться только внутри циклов FOR, WHILE или REPEAT.
Процедура BREAK прерывает выполнение цикла и вызывает переход к оператору, следующему за циклом (может использоваться вместо оператора GOTO).
Процедура CONTINUE осуществляет переход к следующему повторению цикла с пропуском последующих операторов тела цикла.
Например, необходимо определить номер первого элемента одномерного массива, оканчивающегося на 3.
Program Kon;
Var A:array [1.. 30] of integer; FL: Boolean; I,N: Integer;
Begin
Read(N); For I:=1 to N do Read( A[I] );
FL:=false;
For I:=1 to N do
Begin If A[I] mod 10 <> 3 then Continue;
Writeln(‘Номер первого числа на 3 ’,I);
FL:=true; Break; End;
If not FL then Writeln(‘ нет чисел на 3‘);
End.
№34 слайд
![Данные типа запись RECORD](/documents_5/6075a57e9040e8024957dd0b725f841a/img33.jpg)
Содержание слайда: Данные типа запись RECORD
Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями. Каждое поле имеет свой идентификатор и тип. К компонентам записи возможен прямой доступ и они могут выборочно обновляться. Идентификатор в самой записи должен быть уникальным. Для обращения к отдельным полям записи указываются составные имена: имя записи, после которого ставится точка и записывается идентификатор поля. Запись можно передавать в качестве параметра процедуры или функции, но значением функции запись быть не может.
TYPE <идентификатор типа>= RECORD
<идентификатор 11>[,< идентификатор 12>,…]: <тип 1>;
< идентификатор 21>[,< идентификатор 22>,…]: <тип 2>;
. . .
END;
№35 слайд
![Данные типа запись RECORD](/documents_5/6075a57e9040e8024957dd0b725f841a/img34.jpg)
Содержание слайда: Данные типа запись RECORD
TYPE TA= RECORD
P1 : REAL;
P2 : CHAR;
P3 : BYTE
END;
VAR A: ARRAY[1..10] OF TA;
Здесь описан одномерный массив, каждый элемент которого представляет собой запись, имеющую структуру типа TA.
Запись может объявляться и непосредственно в разделе описания переменных.
VAR C : RECORD
P1 : REAL;
P2 : CHAR;
P3 : BYTE
END;
№36 слайд
![Данные типа запись RECORD Дан](/documents_5/6075a57e9040e8024957dd0b725f841a/img35.jpg)
Содержание слайда: Данные типа запись RECORD
Дан массив записей со следующей структурой: шифр группы; номер зачетной книжки; код дисциплины; оценка.
Требуется определить средний балл студентов группы АМ-18. При вводе массива последняя запись имеет шифр группы «99999».
Program srball;
type zap=record
shg:string[5]; nzk:integer; kd:1..100; oc:2..5 end;
var mas:array[1..100] of zap; k,n,i:byte; sum:real;
begin
i:=0; repeat inc(i);
readln (mas[i].shg, mas[i].nzk, mas[i].kd, mas[i].oc)
until mas[i].shg='99999';
n:=i; sum:=0; k:=0;
for i:=1 to n do
if mas[i].shg='АМ-18' then
begin
sum:=sum+mas[i].oc;
inc(k) end;
if k<>0 then sum:=sum/k;
writeln ('Средний балл в группе =',sum)
end.
№37 слайд
![Данные типа запись RECORD](/documents_5/6075a57e9040e8024957dd0b725f841a/img36.jpg)
Содержание слайда: Данные типа запись RECORD
Оператор присоединения.
При обращении к компонентам записи используются составные имена. Для сокращения имен и повышения удобства работы с записями применяется оператор присоединения WITH.
WITH <идентификатор переменной типа RECORD> DO < оператор >;
Тогда в операторе при ссылке на компоненты записи имя переменной можно опускать.
При использовании оператора присоединения фрагмент рассмотренной ранее программы будет выглядеть:
i:=0;
repeat
inc(i);
WITH MAS[I] DO
readln(shg,nzk,kd,oc)
until mas[i].shg='99999';
n:=i; sum:=0; k:=0;
for i:=1 to n do
WITH MAS[I] DO
if shg='АМ-18' then
begin
sum:=sum+oc;
inc(k)
end;
№38 слайд
![Данные типа строка знаков](/documents_5/6075a57e9040e8024957dd0b725f841a/img37.jpg)
Содержание слайда: Данные типа строка знаков String
Строчный тип используется для описания строк длиной от 0 до 255 символов. Максимальная длина строки указывается в квадратных скобках. Если она не указана, максимальная длина полагается 255. Строковые переменные, как и строковые константы, занимают количество байтов, равное максимальной длине строки плюс 1 байт (нулевой), предназначенный для хранения текущей длины этой строковой переменной. Важной особенностью Турбо Паскаля является то, что к каждому символу строки возможен доступ по его номеру.
TYPE <идентификатор типа> = String [<максимальная длина>];
Например,
TYPE TString = String[100];
TS = String;
VAR S,S1 : Tstring;
S2 : String[20];
SS : TS;
№42 слайд
![Подпрограммы Подпрограмма-](/documents_5/6075a57e9040e8024957dd0b725f841a/img41.jpg)
Содержание слайда: Подпрограммы
Подпрограмма- это поименованное сложное действие, которое представляет собой совокупность операторов, вычисляющих некоторое число результатов в зависимости от некоторого числа аргументов.
Процедура или функция (общее название - подпрограмма) определяется в разделе описаний основной программы или другой процедуры(функции). Процедура(функция) имеет ту же структуру, что и основная программа, т.е. состоит из заголовка, описательной части и выполняемой части.
Синтаксис заголовка процедуры:
PROCEDURE < имя процедуры > [( <список формальных
параметров >)];
Например:
Procedure PR1 ( A,B,C : integer; Var S: real);
здесь PR1 – имя процедуры, а А,В,С,S – имена переменных, являющихся параметрами.
№43 слайд
![Подпрограммы В отличие от](/documents_5/6075a57e9040e8024957dd0b725f841a/img42.jpg)
Содержание слайда: Подпрограммы
В отличие от основной программы заголовок в процедуре обязателен, но завершается процедура не точкой, а точкой с запятой.
Оператор процедуры служит для вызова процедуры из основной программы или из другой процедуры(функции).
Вызов осуществляется в следующей форме:
<имя процедуры > [(<список фактических параметров>)];
Для приведенного заголовка процедуры можно написать такой оператор вызова: PR1 (A,B,C,S);
Формат списка параметров в заголовке процедуры и при вызове процедуры отличаются. При вызове переменные, константы или выражения следуют через запятую, а в заголовке запись переменных напоминает объявление переменных в разделе описания переменных. Для всех элементов списка должен быть указан тип данных. Несколько переменных, отнесенных к одному типу , пишутся через запятую, а группы переменных различного типа отделяются точкой с запятой. После обращения к процедуре управление передается на выполнение следующего за вызовом процедуры оператора.
№44 слайд
![Подпрограммы Функция](/documents_5/6075a57e9040e8024957dd0b725f841a/img43.jpg)
Содержание слайда: Подпрограммы
Функция предназначена для вычисления какого-либо одного значения и используется в выражениях аналогично стандартным функциям.
Синтаксис заголовка функции:
FUNCTION < имя функции >[(<список формальных
параметров>)]: <тип результата>;
Например:
Function PRF (A,B,C: integer) : real;
Отличие описания функции от процедуры:
результатом обращения к функции может быть одно единственное значение;
идентификатор результата не указывается в списке формальных параметров;
в выполняемой части функции, хотя бы один раз, имени функции должно быть присвоено значение результата ( чаще всего перед выходом из функции);
после списка формальных параметров задается тип результата;
после обращения к функции управление передается на выполнение следующей операции данного выражения (в соответствии с приоритетом).
№45 слайд
![Подпрограммы Для вызова](/documents_5/6075a57e9040e8024957dd0b725f841a/img44.jpg)
Содержание слайда: Подпрограммы
Для вызова функции используется указатель функции (имя функции со списком фактических параметров), который обязательно должен быть частью какого-либо выражения (входить в правую часть оператора присваивания, присутствовать в списке данных оператора вывода, в логическом выражении условного оператора и т.д.). Для приведенного заголовка функции вызов функции может быть осуществлен одним из следующих способов:
S:=PRF ( A,B,C);
Writeln ( PRF ( A,B,C));
If PRF ( A,B,C)>20 then K=K+1;
При описании процедуры (функции) в ее заголовке могут быть указаны параметры следующих видов:- параметры-значения;- параметры-переменные;- параметры-константы;- параметры-процедуры;- параметры-функции.
При записи параметров необходимо помнить:
- число формальных и фактических параметров должно быть одинаково;
- порядок следования и тип фактических параметров должен совпадать с порядком и типом соответствующих формальных параметров;
- идентификаторы формальных и фактических параметров могут совпадать;
- формальные параметры в языке Турбо Паскаль в заголовке находятся вместе с описаниями и объявлять их в разделе описаний процедуры(функции) не требуется;
- формальные параметры должны иметь простые или ранее определенные типы
№46 слайд
![Подпрограммы](/documents_5/6075a57e9040e8024957dd0b725f841a/img45.jpg)
Содержание слайда: Подпрограммы
Параметры-значения.
При передаче параметров по значению в стеке, в котором осуществляется выделение памяти под внутренние (локальные) переменные подпрограммы, выделяется дополнительная память, в которую копируются значения соответствующих фактических параметров. В вызывающей программе в качестве аргумента подпрограммы для параметра-значения может использоваться не только переменная, но и выражение. После завершения работы подпрограммы выделенная этим параметрам память становится недоступной, поэтому передача параметров по значению не может использоваться в подпрограммах для получения результатов.
№47 слайд
![Параметры-переменные При](/documents_5/6075a57e9040e8024957dd0b725f841a/img46.jpg)
Содержание слайда: Параметры-переменные
При вызове по ссылке в подпрограмме память под передаваемые переменные не отводится. В подпрограмму передается не значение переменной, а ссылка на место в памяти соответствующего фактического параметра. Подпрограмма, выполняющая некоторые действия с этой переменной, в действительности производит действия с соответствующим фактическим параметром, поэтому после выполнения процедуры , изменения, выполненные над этой переменной, сохраняются. Перед записью параметров-переменных в списке формальных параметров указывается ключевое слово VAR (действует до " ; "). Для вычисляемых результатов могут быть использованы только параметры-переменные. Формальным параметрам-переменным не могут соответствовать в качестве фактических значений константы или выражения ,так как они не имеют адреса для передачи.
В качестве параметров-переменных могут быть использованы массивы и строки открытого типа, у которых не задаются размеры. Открытый массив представляет собой формальный параметр подпрограммы, описывающий базовый тип элементов, но не определяющий его размерность и границы. Индексация элементов в этом случае начинается с нуля. Верхняя граница открытого массива возвращается функцией HIGH . Такое описание возможно только для одномерных массивов. Для открытого массива в стеке создается его копия, что может вызвать переполнение стека.
№48 слайд
![Пример Рассмотрим пример](/documents_5/6075a57e9040e8024957dd0b725f841a/img47.jpg)
Содержание слайда: Пример
Рассмотрим пример использования открытого массива. Пусть требуется подсчитать сумму элементов одномерного массива.
Function SUM (Var A: array of integer):integer;
Var S,I : integer;
Begin
S:=0;
For I:=0 to HIGH(A) do
S:=S+A[I];
Sum:=S;
End;
В основной программе такой массив может быть описан даже как
Var A: array [ -2 .. 3] of integer; Фактические границы массива здесь значения не имеют. Важно только то, что количество элементов массива в данном случае равно 6.
№49 слайд
![Параметры-константы Так как](/documents_5/6075a57e9040e8024957dd0b725f841a/img48.jpg)
Содержание слайда: Параметры-константы
Так как аргументы, передаваемые в процедуру или функцию, размещаются в стеке, то в случае передачи значением массива большого размера, может произойти переполнение стека. В языке введен описатель CONST, который может задаваться для формальных параметров подпрограмм. Аргумент, соответствующий такому параметру, передается по ссылке, подобно параметру с описателем Var, но в самой процедуре(функции) запрещается присваивать этому аргументу новое значение.
PROCEDURE <имя процедуры> (CONST <имя константы>: <тип>; ...);
FUNCTION <имя функции> (CONST <имя константы> :
<тип> ; ...): <тип результата> ;
Параметр-константу нельзя передавать в качестве параметра в другую подпрограмму.
№50 слайд
![Область действия имен Любая](/documents_5/6075a57e9040e8024957dd0b725f841a/img49.jpg)
Содержание слайда: Область действия имен
Любая подпрограмма представляет собой блок со своей областью описаний. Она может содержать внутри этого блока описания других процедур и функций, а также обращения к ним. Объекты, описанные внутри какого-либо блока, являются по отношению к нему локальными и не доступны внешним блокам. На них можно ссылаться только внутри блока, в котором они описаны. Под объектами понимаются имена констант, типов, переменных, процедур, функций. Объекты, описанные во внешних блоках и не описанные во внутренних, являются глобальными по отношению к внутренним и доступны как во внешних блоках, так и во внутренних.
№52 слайд
![Рекурсивные процедуры и](/documents_5/6075a57e9040e8024957dd0b725f841a/img51.jpg)
Содержание слайда: Рекурсивные процедуры и функции
Рекурсия- это способ организации вычислительного процесса, при котором процедура или функция в процессе выполнения входящих в ее состав операторов обращается сама к себе непосредственно, либо через другие процедуры и функции.
Рекурсия может быть прямой или косвенной. При прямой рекурсии оператор вызова подпрограммы содержится непосредственно в ее исполняемой части. Любую рекурсивную процедуру (функцию) можно сделать не рекурсивной. Рекурсивное описание обычно короче и нагляднее, но требует больших затрат машинного времени (за счет повторных обращений) и памяти машины (за счет дублирования переменных).
Рекурсивная подпрограмма однократно вызывается извне. Условие полного окончания работы рекурсивной процедуры или функции должно находиться в ней самой.
№53 слайд
![Рекурсивные процедуры и](/documents_5/6075a57e9040e8024957dd0b725f841a/img52.jpg)
Содержание слайда: Рекурсивные процедуры и функции
Рассмотрим пример. Вычислить значение F=M! Рекурсивное определение значение факториала можно записать следующим образом:
при М=1 F=1
при М> 1 F= M!= M*(M-1)!, т.е. М! определяется через (М-1)!
Рекурсивная функция
Program Main;
Var M: integer;
F:real;
Function FACT (N:integer): real;
Begin
If N=1 then
FACT:=1
Else
FACT:= N* FACT(N-1);
End;
Begin
Readln(M);
F:= FACT ( M );
Writeln (' M!=', F);
End.
№55 слайд
![Рекурсивные процедуры и](/documents_5/6075a57e9040e8024957dd0b725f841a/img54.jpg)
Содержание слайда: Рекурсивные процедуры и функции
B варианте а) при м=4 выполняются следующие действия:
FACT:=4*FACT(3); FACT:=3*FACT(2); FACT:=2*FACT(1); FACT(1):=1.
При входе в функцию в первый раз отводится память под локальную переменную, соответствующую параметру-значению; ей присваивается значение фактического параметра (М). При каждом новом обращении строятся новые локальные переменные. Так как FACT(1)=1, то выполнение функции заканчивается. После этого выполняются действия:
FACT(1):=1; FACT:=2*FACT(1);
FACT(2):=2; FACT:=3*FACT(2);
FACT(3):=3*2=6; FACT:=4*FACT(3); т.е. FACT=24.
№56 слайд
![Рекурсивные процедуры и](/documents_5/6075a57e9040e8024957dd0b725f841a/img55.jpg)
Содержание слайда: Рекурсивные процедуры и функции
Предварительно-определенные процедуры.
При косвенной рекурсии одна подпрограмма вызывает другую, которая либо сама, либо посредством других подпрограмм вызывает исходную. В этом случае используется предварительное описание процедур (функций), так как в языке Турбо Паскаль все процедуры и функции должны быть описаны до их вызова. В этом случае отдельно от текста процедуры (функции) записывается ее заголовок и к нему после символа «;» добавляется ключевое слово FORWARD. Сам текст подпрограммы начинается урезанным заголовком, в котором задается только ее имя, а список параметров (и тип результата для функции ) отсутствует.
Program KOSV_R;
Var X,Y: integer;
Procedure LR ( A : integer); FORWARD;
Procedure TT (B: integer);
Begin … LR (...); ... End;
Procedure LR ;
Begin ... TT(...) ; … End;
Begin ...
TT(X) ; LR(Y) ; ...
End.
№57 слайд
![Файлы Файл на носителе это](/documents_5/6075a57e9040e8024957dd0b725f841a/img56.jpg)
Содержание слайда: Файлы
Файл на носителе – это поименованная совокупность логически связанных между собой данных (записей), имеющая определенную организацию и общее назначение.
Физическая запись – это совокупность данных, передаваемых в том или обратном направлении при одном обращении к внешнему носителю (т.е. минимальная единица обмена данными между внешней и оперативной памятью). Физическая запись состоит из логических записей.
Логическая запись – единица данных, используемая в операторах чтения и записи файлов. Логические записи объединяются в физическую запись для уменьшения числа обращений к внешнему устройству.
Для обращения к записям файла на внешнем носителе используется понятие логического файла. Логический файл или файл в программе – это совокупность данных, состоящая из логических записей, объединенных общим назначением.
Для связи файла в программе и файла на внешнем носителе используется процедура ASSIGN, где указывается имя файла в программе и имя файла на внешнем носителе.
Число записей файла произвольно, но в каждый момент времени доступна только одна запись. Длиной файла называют количество записанных компонент. Файл, не содержащий записей, называется пустым.
Каждая переменная файлового типа должна быть описана в разделе описания переменных var . Не допускается использование таких переменных в выражениях и операторах присваивания. Тип компонент файла может быть любым кроме файлового.
№58 слайд
![Файлы В системе](/documents_5/6075a57e9040e8024957dd0b725f841a/img57.jpg)
Содержание слайда: Файлы
В системе программирования Паскаль различаются 3 вида файлов:
файлы с типом записей (типизированные файлы);
текстовые файлы со строками неопределенной длины;
файлы без типа для передачи данных блоками записей.
При работе с файлами необходимо придерживаться следующих общих правил:
текстовые файлы должны быть описаны с типом TEXT;
каждый файл в программе должен быть закреплен за конкретным файлом на носителе процедурой ASSIGN;
открытие существующего файла для чтения, корректировки или дозаписи производится процедурой RESET, открытие создаваемого файла для записи – процедурой REWRITE;
по окончании работы с файлом он должен быть закрыт процедурой CLOSE.
№59 слайд
![Процедуры и функции для](/documents_5/6075a57e9040e8024957dd0b725f841a/img58.jpg)
Содержание слайда: Процедуры и функции для работы с файлами
ASSIGN (<имя файла>,<имя файла на носителе>) – процедура устанавливает связь между именем файловой переменной и именем файла на носителе. Здесь <имя файла> это файловая переменная, т.е. правильный идентификатор, объявленный в программе как переменная файлового типа. <Имя файла на носителе> – текстовое выражение, содержащее имя файла или имя логического устройства. Перед именем файла на носителе может ставиться путь к файлу – имя диска и(или) имя текущего каталога и имена каталогов вышестоящих уровней.
RESET(<имя файла>) – процедура открытия существующего файла для чтения при последовательном доступе и для чтения и записи при прямом доступе. Указатель файла при этом устанавливается на первую запись (с 0 номером).
REWRITE(<имя файла>) – процедура открытия создаваемого файла для записи. Если файл с таким именем уже существовал, то он стирается. Указатель файла устанавливается на первую запись.
READ(<имя файла>, <переменные>) – процедура чтения очередных компонент файла в переменные, тип которых должен совпадать с типом компонент файла. Указатель файла при этом передвигается на количество прочитанных компонент.
WRITE(<имя файла>, <переменные>) – процедура записи содержимого переменных в файл согласно положению указателя. Указатель автоматически сдвигается на число записанных компонент
№60 слайд
![Процедуры и функции для](/documents_5/6075a57e9040e8024957dd0b725f841a/img59.jpg)
Содержание слайда: Процедуры и функции для работы с файлами
SEEK(<имя файла>, <номер компоненты>) – процедура установки текущего указателя для чтения или записи требуемой компоненты файла. Используется для организации прямого доступа к записям файла.
CLOSE(<имя файла>) – процедура закрытия файла. Обязательно должна использоваться после создания файла, иначе может произойти потеря данных.
ERASE(<имя файла>) – процедура уничтожения файла. Открытый файл прежде должен быть закрыт.
RENAME(<старое имя файла>, <новое имя файла>) – процедура для переименования файла. Используется после закрытия файла.
FILEPOS(<имя файла>) – функция определения номера текущей записи файла.
FILESIZE(<имя файла>) – функция определения общего количества записей файла.
EOF(<имя файла>) – функция определения признака конца файла. Получает значение TRUE при чтении последней записи файла.
EOLN(<имя файла>) – функция обнаружения конца строки в текстовом файле. Имеет значение TRUE, если найден конец строки.
№61 слайд
![Особенности обработки](/documents_5/6075a57e9040e8024957dd0b725f841a/img60.jpg)
Содержание слайда: Особенности обработки типизированных файлов
Файл с типом (типизированный файл) состоит из последовательности записей одинаковой длины и одинакового внутреннего формата. Записи следуют непрерывно друг за другом.
При последовательном доступе записи располагаются на внешнем носителе последовательно в порядке их поступления, т.е. чтение или запись I+1 компоненты возможно только после I –ой компоненты.
При прямом доступе предполагается, что данные располагаются в определенных областях, имеющих последовательные номера, начиная с нуля. Вычисляя значение указателя, фиксирующего номер записи, можно обеспечить прямой доступ к нужной записи, используя процедуру позиционирования SEEK.
Общий вид описания типизированного файла:
TYPE < идентификатор типа >= FILE OF < тип компонент >;
TYPE T = FILE OF REAL; VAR F: T;
VAR F: FILE OF REAL;
TYPE ST= RECORD A: STRING[10]; B: INTEGER; C: REAL; D: BYTE END;
VAR DAN: FILE OF ST;
№62 слайд
![Особенности обработки](/documents_5/6075a57e9040e8024957dd0b725f841a/img61.jpg)
Содержание слайда: Особенности обработки текстовых файлов
Текстовые файлы состоят из символов. Каждый текстовый файл разделяется на строки неопределенной длины, которые заканчиваются символом конец строки. Весь файл заканчивается символом конец файла.
К текстовым файлам возможен только последовательный доступ. С текстовыми файлами работают различные редакторы текстов. Текстовые файлы имеют стандартный тип TEXT.
VAR < имя файла>: TEXT;
Посимвольные операции ввода-вывода выполняются для текстовых файлов процедурами read и write. Строки обрабатываются специальными процедурами для текстовых файлов readln и writeln. Кроме того, для текстовых файлов применяются процедуры ASSIGN, RESET, REWRITE, CLOSE, EOF, eoln. Процедура append открывает существующий текстовый файл для добавления записей. Для текстовых файлов нельзя использовать процедуры и функции SEEK, FILEPOS, FILESIZE, т.к. элементы имеют разную длину.
input и output стандартные текстовые файлы для ввода с клавиатуры и вывода на экран.
Рассмотрим программу, реализующую следующую задачу. Дан текстовый файл F1.Необходимо заменить во всех записях этого файла код группы ДС-101 на ДС-201. Скорректированные записи поместить в файл F2.
Здесь читаются последовательно строки из входного файла и в каждой строке в номере группы заменяется символ 1 на 2. Скорректированные строки выводятся в новый файл.
№63 слайд
![Особенности обработки](/documents_5/6075a57e9040e8024957dd0b725f841a/img62.jpg)
Содержание слайда: Особенности обработки текстовых файлов
var f1,f2: text;
pole:string;
name:string[12];
pz: integer;
begin write(‘ввод имени входного файла:’);
readln(name);
assign(f1,name);
write(‘ввод имени выходного файла:’);
readln(name);
assign(f2,name);
reset(f1); rewrite(f2);
while not eof(f1) do
begin
readln(f1,pole);
while pos(‘дс-101’, pole) <> 0 do
begin
pz:= pos(‘дс-101’, pole);
delete(pole,pz+3,1);
insert(‘2’,pole,pz+3);
end;
writeln(f2,pole)
end;
close(f1);
close(f2);
end.
№64 слайд
![Модули Процедуры и функции](/documents_5/6075a57e9040e8024957dd0b725f841a/img63.jpg)
Содержание слайда: Модули
Процедуры и функции могут быть сгруппированы в отдельный модуль. Модуль (unit)- это программная единица, текст которой компилируется автономно (независимо от главной программы). Если модуль откомпилирован для реального режима, то результат имеет расширение TPU; модули, откомпилированные для защищенного режима, имеют расширение TPP.
Структура модуля отличается от структуры обычной программы на языке Паскаль. Модули имеют четыре основные части: заголовок, который следует за зарезервированным словом UNIT; описательную (интерфейсную) часть, которая начинается за зарезервированным словом INTERFACE (в ней помещаются объявления переменных, процедур, функций, констант и типов данных, которые должны быть доступны для других программных модулей, использующих данный модуль); исполнительную (внутреннюю) часть, которая начинается словом IMPLEMENTATION (в нее входит текст подпрограмм и локальные объекты, доступные только внутри данного модуля) и необязательную часть (секцию инициализации), расположенную после исполнительной части между словами BEGIN и END (при этом, если инициализация модуля не нужна, то в секции помещается лишь слово END).
Скачать все slide презентации InformatikaProgram42012. pptx одним архивом:
Похожие презентации