🗊Презентация InformatikaProgram42012.pptx

Категория: Образование
Нажмите для полного просмотра!
InformatikaProgram42012.pptx, слайд №1InformatikaProgram42012.pptx, слайд №2InformatikaProgram42012.pptx, слайд №3InformatikaProgram42012.pptx, слайд №4InformatikaProgram42012.pptx, слайд №5InformatikaProgram42012.pptx, слайд №6InformatikaProgram42012.pptx, слайд №7InformatikaProgram42012.pptx, слайд №8InformatikaProgram42012.pptx, слайд №9InformatikaProgram42012.pptx, слайд №10InformatikaProgram42012.pptx, слайд №11InformatikaProgram42012.pptx, слайд №12InformatikaProgram42012.pptx, слайд №13InformatikaProgram42012.pptx, слайд №14InformatikaProgram42012.pptx, слайд №15InformatikaProgram42012.pptx, слайд №16InformatikaProgram42012.pptx, слайд №17InformatikaProgram42012.pptx, слайд №18InformatikaProgram42012.pptx, слайд №19InformatikaProgram42012.pptx, слайд №20InformatikaProgram42012.pptx, слайд №21InformatikaProgram42012.pptx, слайд №22InformatikaProgram42012.pptx, слайд №23InformatikaProgram42012.pptx, слайд №24InformatikaProgram42012.pptx, слайд №25InformatikaProgram42012.pptx, слайд №26InformatikaProgram42012.pptx, слайд №27InformatikaProgram42012.pptx, слайд №28InformatikaProgram42012.pptx, слайд №29InformatikaProgram42012.pptx, слайд №30InformatikaProgram42012.pptx, слайд №31InformatikaProgram42012.pptx, слайд №32InformatikaProgram42012.pptx, слайд №33InformatikaProgram42012.pptx, слайд №34InformatikaProgram42012.pptx, слайд №35InformatikaProgram42012.pptx, слайд №36InformatikaProgram42012.pptx, слайд №37InformatikaProgram42012.pptx, слайд №38InformatikaProgram42012.pptx, слайд №39InformatikaProgram42012.pptx, слайд №40InformatikaProgram42012.pptx, слайд №41InformatikaProgram42012.pptx, слайд №42InformatikaProgram42012.pptx, слайд №43InformatikaProgram42012.pptx, слайд №44InformatikaProgram42012.pptx, слайд №45InformatikaProgram42012.pptx, слайд №46InformatikaProgram42012.pptx, слайд №47InformatikaProgram42012.pptx, слайд №48InformatikaProgram42012.pptx, слайд №49InformatikaProgram42012.pptx, слайд №50InformatikaProgram42012.pptx, слайд №51InformatikaProgram42012.pptx, слайд №52InformatikaProgram42012.pptx, слайд №53InformatikaProgram42012.pptx, слайд №54InformatikaProgram42012.pptx, слайд №55InformatikaProgram42012.pptx, слайд №56InformatikaProgram42012.pptx, слайд №57InformatikaProgram42012.pptx, слайд №58InformatikaProgram42012.pptx, слайд №59InformatikaProgram42012.pptx, слайд №60InformatikaProgram42012.pptx, слайд №61InformatikaProgram42012.pptx, слайд №62InformatikaProgram42012.pptx, слайд №63InformatikaProgram42012.pptx, слайд №64InformatikaProgram42012.pptx, слайд №65InformatikaProgram42012.pptx, слайд №66InformatikaProgram42012.pptx, слайд №67

Содержание

Вы можете ознакомиться и скачать презентацию на тему InformatikaProgram42012.pptx. Доклад-сообщение содержит 67 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Информатика
Программирование
Описание слайда:
Информатика Программирование

Слайд 2





Язык программирования Паскаль. Алфавит языка
<алфавит> :: = <буквы> | <цифры> | <ограничители>
<буквы> :: = 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
Пробел является разделителем. 
Комментарий - это текст, заключенный между скобками {  } или (*  *). Может содержать  буквы (в том числе и русские), цифры, специальные знаки. Используется для обозначения участков программ или пояснения команд. Может располагаться в любом месте программы.
разделители>::= := | . | , | : | ; | ^ | $ | #
Описание слайда:
Язык программирования Паскаль. Алфавит языка <алфавит> :: = <буквы> | <цифры> | <ограничители> <буквы> :: = 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





Структура программы на языке Паскаль
Синтаксически программа на языке Паскаль делится на 2 части: заголовок и программный блок.
	Общий вид заголовка:
PROGRAM <имя программы>[(<список файлов>)];
Заголовок программы может отсутствовать. Стандартные файлы INPUT (входной) и OUTPUT (выходной) также могут опускаться, т.к. принимаются по умолчанию.
Блок программы состоит из описательной и исполнительной частей (описательная часть предшествует исполнительной части) и включает следующие разделы:   
	LABEL <описание меток>;	     - раздел описания меток
	CONST <описание констант>;	     - раздел описания констант
	TYPE <описание типов>;	     - раздел описания типов
	VAR <описание переменных>;	     - раздел описания переменных
	PROCEDURE <описание процедуры> ;   - раздел описания
	FUNCTION <описание функции>;      процедур и функций
		BEGIN                 
	<исполнительная часть программы>	 - раздел операторов
		END.
Описание слайда:
Структура программы на языке Паскаль Синтаксически программа на языке Паскаль делится на 2 части: заголовок и программный блок. Общий вид заголовка: PROGRAM <имя программы>[(<список файлов>)]; Заголовок программы может отсутствовать. Стандартные файлы INPUT (входной) и OUTPUT (выходной) также могут опускаться, т.к. принимаются по умолчанию. Блок программы состоит из описательной и исполнительной частей (описательная часть предшествует исполнительной части) и включает следующие разделы: LABEL <описание меток>; - раздел описания меток CONST <описание констант>; - раздел описания констант TYPE <описание типов>; - раздел описания типов VAR <описание переменных>; - раздел описания переменных PROCEDURE <описание процедуры> ; - раздел описания FUNCTION <описание функции>; процедур и функций BEGIN <исполнительная часть программы> - раздел операторов END.

Слайд 4





Элементарные конструкции
Различные объекты программы должны иметь имена. В качестве имен используются идентификаторы.
Идентификатор - последовательность букв и цифр, а также знака подчеркивания, начинающаяся с буквы. Желательно выбирать значащие идентификаторы, например, MAX, MIN, SUMMA и т.д. Зарезервированные слова нельзя использовать в качестве идентификаторов.
Константы – это данные, значения которых не изменяются в процессе работы программы. Константы могут быть поименованными (с типом и без типа) и явно заданными.
Арифметические константы предназначены для представления целых и вещественных числовых данных. 
Для вещественных констант используется форма записи с фиксированной точкой и плавающей точкой (экспоненциальная форма). В форме с фиксированной точкой целая и дробная части разделяются точкой, при экспоненциальной форме число представляется в виде мантиссы и порядка, между которыми стоит буква Е.
                                    
<мантисса>Е{ ±}<порядок>
Описание слайда:
Элементарные конструкции Различные объекты программы должны иметь имена. В качестве имен используются идентификаторы. Идентификатор - последовательность букв и цифр, а также знака подчеркивания, начинающаяся с буквы. Желательно выбирать значащие идентификаторы, например, MAX, MIN, SUMMA и т.д. Зарезервированные слова нельзя использовать в качестве идентификаторов. Константы – это данные, значения которых не изменяются в процессе работы программы. Константы могут быть поименованными (с типом и без типа) и явно заданными. Арифметические константы предназначены для представления целых и вещественных числовых данных. Для вещественных констант используется форма записи с фиксированной точкой и плавающей точкой (экспоненциальная форма). В форме с фиксированной точкой целая и дробная части разделяются точкой, при экспоненциальной форме число представляется в виде мантиссы и порядка, между которыми стоит буква Е. <мантисса>Е{ ±}<порядок>

Слайд 5





Арифметические значения
Описание слайда:
Арифметические значения

Слайд 6





Константы
Логические константы могут принимать одно из двух значений: True(истина) или False(ложь). В языке предусмотрены следующие логические типы констант: Boolean(1 байт), Bytebool(1 байт), Wordbool(2 байта), Longbool(4 байта).
Константы символьного типа Char представляют собой 1 символ кодового набора ASCII (американский стандартный код обмена информацией). Занимает в памяти 1 байт. Символьная константа заключается в апострофы ‘’. Существует упорядоченность символов в соответствии с их кодами. Для цифр и букв латинского алфавита коды символов удовлетворяют соотношению: ‘0’<…<’9’<‘A’<…<’Z’<’a’<…<’z’.
Константы строкового типа String представляют собой последовательность символов, заключенную в апострофы. Длиной строки называется количество символов в ней. Если среди символов константы строкового типа имеется хотя бы один апостроф, он изображается двумя апострофами. Длина строки может быть от 0 до 255 символов.    
Переменная – это наименование, данное некоторому значению. Обозначается с помощью идентификатора переменной. Переменные стандартных типов принимают значения из диапазонов значений, указанных для констант соответствующего вида.
Описание слайда:
Константы Логические константы могут принимать одно из двух значений: True(истина) или False(ложь). В языке предусмотрены следующие логические типы констант: Boolean(1 байт), Bytebool(1 байт), Wordbool(2 байта), Longbool(4 байта). Константы символьного типа Char представляют собой 1 символ кодового набора ASCII (американский стандартный код обмена информацией). Занимает в памяти 1 байт. Символьная константа заключается в апострофы ‘’. Существует упорядоченность символов в соответствии с их кодами. Для цифр и букв латинского алфавита коды символов удовлетворяют соотношению: ‘0’<…<’9’<‘A’<…<’Z’<’a’<…<’z’. Константы строкового типа String представляют собой последовательность символов, заключенную в апострофы. Длиной строки называется количество символов в ней. Если среди символов константы строкового типа имеется хотя бы один апостроф, он изображается двумя апострофами. Длина строки может быть от 0 до 255 символов. Переменная – это наименование, данное некоторому значению. Обозначается с помощью идентификатора переменной. Переменные стандартных типов принимают значения из диапазонов значений, указанных для констант соответствующего вида.

Слайд 7





Типы данных
Каждая переменная и константа в программе на языке Паскаль имеет свой тип данных. Тип определяет набор операций, которые могут быть к ней применимы, а также тип результата выполнения этих операций. Имеются типы стандартные и типы, описанные пользователем.
Все переменные, используемые в программе должны быть описаны в разделе описания переменных VAR.
 
VAR <идентификатор> [,<идентификатор>,…]: <тип>;
  [<идентификатор> [,<идентификатор>,…]: <тип>;…]
 
Например,
	VAR  A : Integer;
       B, C: Real;
Описание слайда:
Типы данных Каждая переменная и константа в программе на языке Паскаль имеет свой тип данных. Тип определяет набор операций, которые могут быть к ней применимы, а также тип результата выполнения этих операций. Имеются типы стандартные и типы, описанные пользователем. Все переменные, используемые в программе должны быть описаны в разделе описания переменных VAR.   VAR <идентификатор> [,<идентификатор>,…]: <тип>; [<идентификатор> [,<идентификатор>,…]: <тип>;…]   Например, VAR A : Integer; B, C: Real;

Слайд 8





Типы данных
Порядковый стандартный тип обозначает конечное линейное множество значений. К нему обычно относят целые типы, байтовые, символьные и логические. 
Раздел описания типов:
TYPE <идентификатор типа> = (<идентификатор> 
              [,<идентификатор>,…]);
Перечисляемый тип – определяет упорядоченное множество значений путем перечисления идентификаторов, выражающих эти значения как постоянные. Для каждого такого элемента выделяется один байт памяти. Используется в качестве индексов массивов и имеет порядковую нумерацию, начиная с нуля.
Интервальный тип определяет некоторое подмножество значений, которые может принимать данная переменная. Задаются наименьшее и наибольшее значения порядкового типа. Для каждого элемента выделяется один байт памяти.
TYPE <идентификатор типа> = <константа>. .<константа>;
Описание слайда:
Типы данных Порядковый стандартный тип обозначает конечное линейное множество значений. К нему обычно относят целые типы, байтовые, символьные и логические. Раздел описания типов: TYPE <идентификатор типа> = (<идентификатор> [,<идентификатор>,…]); Перечисляемый тип – определяет упорядоченное множество значений путем перечисления идентификаторов, выражающих эти значения как постоянные. Для каждого такого элемента выделяется один байт памяти. Используется в качестве индексов массивов и имеет порядковую нумерацию, начиная с нуля. Интервальный тип определяет некоторое подмножество значений, которые может принимать данная переменная. Задаются наименьшее и наибольшее значения порядкового типа. Для каждого элемента выделяется один байт памяти. TYPE <идентификатор типа> = <константа>. .<константа>;

Слайд 9





Типы данных
 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;
Описание слайда:
Типы данных 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





Типы данных
 Массив – это упорядоченная совокупность однотипных переменных, обладающих одинаковыми свойствами. Отношение порядка между  элементами массива задается с помощью индексирования. Каждому элементу массива ставится в соответствие один или несколько индексов. Если каждому элементу ставится в соответствие один индекс, то это - одномерный массив (вектор). При наличии двух индексов - двумерный массив (матрица). Первый индекс обозначает номер строки, а второй – номер столбца, где находится соответствующий элемент.
TYPE <идентификатор типа> = ARRAY [<список типов индексов>]     OF<тип>;
<тип индексов> :: = <простой тип>
<простой тип>:: = <идентификатор типа>|<идентификатор> 
      [,<идентификатор>]| <константа>. .<константа>
Описание слайда:
Типы данных Массив – это упорядоченная совокупность однотипных переменных, обладающих одинаковыми свойствами. Отношение порядка между элементами массива задается с помощью индексирования. Каждому элементу массива ставится в соответствие один или несколько индексов. Если каждому элементу ставится в соответствие один индекс, то это - одномерный массив (вектор). При наличии двух индексов - двумерный массив (матрица). Первый индекс обозначает номер строки, а второй – номер столбца, где находится соответствующий элемент. TYPE <идентификатор типа> = ARRAY [<список типов индексов>] OF<тип>; <тип индексов> :: = <простой тип> <простой тип>:: = <идентификатор типа>|<идентификатор> [,<идентификатор>]| <константа>. .<константа>

Слайд 11





Типы данных
 В качестве типа индекса может быть любой простой тип, кроме вещественных. Чаще всего используется интервальный тип индекса от целых типов.
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] ;
Описание слайда:
Типы данных В качестве типа индекса может быть любой простой тип, кроме вещественных. Чаще всего используется интервальный тип индекса от целых типов. 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





Типы данных
Рассмотрим  различные способы описания массивов.
Пусть требуется описать матрицу 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;
Описание слайда:
Типы данных Рассмотрим различные способы описания массивов. Пусть требуется описать матрицу 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





Операторы языка Паскаль. Оператор присваивания
Наиболее простым и часто используемым оператором языка является оператор присваивания:
                   <переменная> : = <выражение>;
Выражение – это формула для вычисления значения. Она образуется из операндов, соединенных знаками операций и выражений в круглых скобках. В качестве операндов могут выступать переменные, константы, указатели функций.
Тип переменной в левой части оператора присваивания обычно должен совпадать с типом значения выражения в правой части. Возможны случаи несовпадения типов, например, когда слева переменная вещественного типа, а справа выражение целого типа. Выражения являются составной частью операторов.
Описание слайда:
Операторы языка Паскаль. Оператор присваивания Наиболее простым и часто используемым оператором языка является оператор присваивания: <переменная> : = <выражение>; Выражение – это формула для вычисления значения. Она образуется из операндов, соединенных знаками операций и выражений в круглых скобках. В качестве операндов могут выступать переменные, константы, указатели функций. Тип переменной в левой части оператора присваивания обычно должен совпадать с типом значения выражения в правой части. Возможны случаи несовпадения типов, например, когда слева переменная вещественного типа, а справа выражение целого типа. Выражения являются составной частью операторов.

Слайд 14





Операторы языка Паскаль. Оператор присваивания
Приоритеты выполнения операций в порядке убывания:
одноместный минус;
операция NOT;
операции типа умножения ;
операции типа сложения;
операции сравнения (отношения).
Одноместный минус применим к операндам арифметического типа. Операция NOT – к операндам логических и целых типов. Если в одном выражении несколько операций одного приоритета, то они выполняются, начиная слева. Приоритеты можно изменить, поставив скобки. В логических выражениях необходимы скобки во избежание конфликта типа по приоритету.
 Например, если в выражении  … (X > 5)  AND  (Y > 10) … не поставить скобки, то будет синтаксическая ошибка, так как приоритет операции AND выше приоритета операций сравнения  >.
Описание слайда:
Операторы языка Паскаль. Оператор присваивания Приоритеты выполнения операций в порядке убывания: одноместный минус; операция NOT; операции типа умножения ; операции типа сложения; операции сравнения (отношения). Одноместный минус применим к операндам арифметического типа. Операция NOT – к операндам логических и целых типов. Если в одном выражении несколько операций одного приоритета, то они выполняются, начиная слева. Приоритеты можно изменить, поставив скобки. В логических выражениях необходимы скобки во избежание конфликта типа по приоритету. Например, если в выражении … (X > 5) AND (Y > 10) … не поставить скобки, то будет синтаксическая ошибка, так как приоритет операции AND выше приоритета операций сравнения >.

Слайд 15





Операторы языка Паскаль. Выражения
<операции типа умножения> :: = * | / | div | mod | and
 <операции типа сложения> :: = + | - | or | xor
 <операции сравнения> :: = = | <> | < | > | <= | >= | in
 Операции сравнения применимы для всех стандартных простых типов. Результат  сравнения всегда имеет логический тип.
 (5 + 6) < (5 - 6) = TRUE   в результате даст FALSE
NOT(8.5 < 4) будет равно TRUE.
Сравнение строк символов выполняется слева направо посимвольно. Более короткие строки дополняются пробелами справа.
Описание слайда:
Операторы языка Паскаль. Выражения <операции типа умножения> :: = * | / | div | mod | and <операции типа сложения> :: = + | - | or | xor <операции сравнения> :: = = | <> | < | > | <= | >= | in Операции сравнения применимы для всех стандартных простых типов. Результат сравнения всегда имеет логический тип. (5 + 6) < (5 - 6) = TRUE в результате даст FALSE NOT(8.5 < 4) будет равно TRUE. Сравнение строк символов выполняется слева направо посимвольно. Более короткие строки дополняются пробелами справа.

Слайд 16





Процедуры ввода данных

Процедуры READ и READLN используют для ввода символов (тип данных CHAR),  строк (тип данных STRING) или числовых данных (тип данных INTEGER, BYTE, REAL  и др.).
READ (<список ввода>);
READLN (<список переменных>);
При отсутствии <имени файла>  считывание данных производится из стандартного файла INPUT; при этом стандартными устройствами считаются клавиатура.
Каждому оператору ввода соответствует свой поток данных, в котором перечисляются значения констант, присваиваемые переменным, указанным в списке переменных. Присваивание значений из входного потока происходит слева направо в соответствии с порядком следования переменных в списке  переменных. 
Read(A,B);
   . . .             После ввода: 2.5 10 
A=2.5; B=10;
Описание слайда:
Процедуры ввода данных Процедуры READ и READLN используют для ввода символов (тип данных CHAR), строк (тип данных STRING) или числовых данных (тип данных INTEGER, BYTE, REAL и др.). READ (<список ввода>); READLN (<список переменных>); При отсутствии <имени файла> считывание данных производится из стандартного файла INPUT; при этом стандартными устройствами считаются клавиатура. Каждому оператору ввода соответствует свой поток данных, в котором перечисляются значения констант, присваиваемые переменным, указанным в списке переменных. Присваивание значений из входного потока происходит слева направо в соответствии с порядком следования переменных в списке переменных. Read(A,B); . . . После ввода: 2.5 10 A=2.5; B=10;

Слайд 17





Процедуры вывода данных
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- ширина поля.
Если ширина поля избыточна, то слева помещаются пробелы. Если же ширины поля не хватает для вывода, то заданное значение для ширины поля игнорируется и выводится реальное число.
Описание слайда:
Процедуры вывода данных 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





Операторы языка
Пустой оператор не обозначается и не вызывает никаких действий в программе, представляет собой дополнительную точку с запятой.
Составной оператор.
Если необходимо, чтобы группа операторов рассматривалась с синтаксической точки зрения, как один оператор, эту группу операторов заключают в операторные  скобки   BEGIN  и   END.  Такой  оператор  называется   составным оператором. Составной оператор может быть использован в любом месте программы, где разрешен простой оператор, но требуется выполнение нескольких действий.
Описание слайда:
Операторы языка Пустой оператор не обозначается и не вызывает никаких действий в программе, представляет собой дополнительную точку с запятой. Составной оператор. Если необходимо, чтобы группа операторов рассматривалась с синтаксической точки зрения, как один оператор, эту группу операторов заключают в операторные скобки BEGIN и END. Такой оператор называется составным оператором. Составной оператор может быть использован в любом месте программы, где разрешен простой оператор, но требуется выполнение нескольких действий.

Слайд 19





Условный оператор 
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 ;…
Описание слайда:
Условный оператор 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





Оператор выбора
Оператор выбора CASE  может быть использован вместо условного оператора, если требуется сделать выбор более, чем из двух возможностей.
CASE <селекторное выражение> OF
   <метка>,<метка>: <оператор 1> ;
   <метка>,<метка>: <оператор 2> ;    
     . . . . .
  <метка>,<метка>: <оператор n>;
   [ ELSE  <оператор>] 
END;
Селекторное выражение (селектор, переключатель) и метки-константы (метки варианта, метки выбора) должны иметь один и тот же простой тип (кроме вещественного). Метки-константы в отличие от меток программы не требуется описывать  в разделе описания меток. Но на них нельзя ссылаться в операторе GOTO. Метки варианта могут быть перечисляемого и интервального типа. 
<оператор 1>,<оператор 2>,<оператор n> - простой или составной оператор.  
 Оператор выбора выполняется следующим образом. Сначала вычисляется селекторное выражение; затем выполняется оператор, метка варианта которого равна текущему значению селектора; после этого происходит выход из оператора CASE на следующий оператор. Если значение селектора не совпадает ни с одной из меток варианта, будет выполнен оператор после ELSE.  Если ветвь ELSE отсутствует, то управление передается следующему за CASE оператору.
Описание слайда:
Оператор выбора Оператор выбора CASE может быть использован вместо условного оператора, если требуется сделать выбор более, чем из двух возможностей. CASE <селекторное выражение> OF <метка>,<метка>: <оператор 1> ; <метка>,<метка>: <оператор 2> ; . . . . . <метка>,<метка>: <оператор n>; [ ELSE <оператор>] END; Селекторное выражение (селектор, переключатель) и метки-константы (метки варианта, метки выбора) должны иметь один и тот же простой тип (кроме вещественного). Метки-константы в отличие от меток программы не требуется описывать в разделе описания меток. Но на них нельзя ссылаться в операторе GOTO. Метки варианта могут быть перечисляемого и интервального типа. <оператор 1>,<оператор 2>,<оператор n> - простой или составной оператор.  Оператор выбора выполняется следующим образом. Сначала вычисляется селекторное выражение; затем выполняется оператор, метка варианта которого равна текущему значению селектора; после этого происходит выход из оператора CASE на следующий оператор. Если значение селектора не совпадает ни с одной из меток варианта, будет выполнен оператор после ELSE. Если ветвь ELSE отсутствует, то управление передается следующему за CASE оператору.

Слайд 21





Оператор выбора
В следующем примере переменная 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; …
Описание слайда:
Оператор выбора В следующем примере переменная 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





Оператор цикла с параметром
FOR<параметр цикла>:=<выраж.1>           TO            <выраж.2>  					DOWNTO
DO    < оператор > ;
< параметр цикла > - это переменная цикла любого порядкового типа (целого, символьного, перечисляемого, интервального);
TO – выбирается следующее значение параметра цикла в соответствии с его типом при упорядочивании по возрастанию (алфавиту);
DOWNTO -  выбирается следующее значение параметра цикла в соответствии с его типом при упорядочивании по убыванию.
   < выражение 1> - начальное значение параметра цикла, выражение того же типа, что и параметр цикла;
   < выражение 2>  - конечное  значение параметра цикла, выражение того же типа, что и параметр цикла;
   < оператор>-  тело цикла - простой или составной оператор.
Описание слайда:
Оператор цикла с параметром FOR<параметр цикла>:=<выраж.1> TO <выраж.2> DOWNTO DO < оператор > ; < параметр цикла > - это переменная цикла любого порядкового типа (целого, символьного, перечисляемого, интервального); TO – выбирается следующее значение параметра цикла в соответствии с его типом при упорядочивании по возрастанию (алфавиту); DOWNTO - выбирается следующее значение параметра цикла в соответствии с его типом при упорядочивании по убыванию. < выражение 1> - начальное значение параметра цикла, выражение того же типа, что и параметр цикла; < выражение 2> - конечное значение параметра цикла, выражение того же типа, что и параметр цикла; < оператор>- тело цикла - простой или составной оператор.

Слайд 23





Оператор цикла с параметром
При выполнении оператора FOR выполняются следующие действия:
вычисляется  < выражение 1> , которое присваивается  параметру цикла;
проверяется условие окончания цикла: <параметр цикла> больше <выражения 2> при использовании конструкции TO  и <параметр цикла> меньше <выражения 2> при использовании конструкции DOWNTO;
выполняется тело цикла;
выбирается следующее значение параметра  при упорядочивании по возрастанию (TO)  или выбирается следующее значение параметра  при упорядочивании по убыванию (DOWNTO);
все этапы, кроме первого,  циклически повторяются.
При использовании оператора необходимо помнить:
Внутри цикла  FOR нельзя изменять начальное, текущее или конечное  значения параметра цикла.
Описание слайда:
Оператор цикла с параметром При выполнении оператора FOR выполняются следующие действия: вычисляется < выражение 1> , которое присваивается параметру цикла; проверяется условие окончания цикла: <параметр цикла> больше <выражения 2> при использовании конструкции TO и <параметр цикла> меньше <выражения 2> при использовании конструкции DOWNTO; выполняется тело цикла; выбирается следующее значение параметра при упорядочивании по возрастанию (TO) или выбирается следующее значение параметра при упорядочивании по убыванию (DOWNTO); все этапы, кроме первого, циклически повторяются. При использовании оператора необходимо помнить: Внутри цикла FOR нельзя изменять начальное, текущее или конечное значения параметра цикла.

Слайд 24





Оператор цикла с параметром
После завершения цикла значение параметра цикла считается неопределенным, за исключением тех случаев, когда  выход из цикла осуществляется оператором  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; …
Описание слайда:
Оператор цикла с параметром После завершения цикла значение параметра цикла считается неопределенным, за исключением тех случаев, когда выход из цикла осуществляется оператором 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





Оператор цикла
Если телом цикла является другой цикл, то циклы называются вложенными или сложными. 
Цикл, содержащий в себе другой цикл, называют внешним. Цикл, содержащийся внутри другого цикла, называется внутренним. 
Внутренний и внешний циклы могут быть любыми из трех видов: FOR, WHILE или REPEAT. При построении вложенных циклов необходимо, чтобы все операторы внутреннего цикла полностью находились в теле внешнего цикла. Возможная глубина вложенности циклов ограничивается объемом памяти компьютера. Вначале выполняется самый внутренний цикл при фиксированных значениях параметров циклов с меньшим уровнем вложенности, затем изменяется параметр цикла следующего (за внутренним) уровня и снова выполняется самый внутренний цикл и т.д.
Описание слайда:
Оператор цикла Если телом цикла является другой цикл, то циклы называются вложенными или сложными. Цикл, содержащий в себе другой цикл, называют внешним. Цикл, содержащийся внутри другого цикла, называется внутренним. Внутренний и внешний циклы могут быть любыми из трех видов: FOR, WHILE или REPEAT. При построении вложенных циклов необходимо, чтобы все операторы внутреннего цикла полностью находились в теле внешнего цикла. Возможная глубина вложенности циклов ограничивается объемом памяти компьютера. Вначале выполняется самый внутренний цикл при фиксированных значениях параметров циклов с меньшим уровнем вложенности, затем изменяется параметр цикла следующего (за внутренним) уровня и снова выполняется самый внутренний цикл и т.д.

Слайд 26





Оператор цикла

 Пример. Вычислить значение 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.
Описание слайда:
Оператор цикла Пример. Вычислить значение 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





Оператор цикла с предусловием
WHILE   <логическое выражение > DO  <оператор>;
Логическое выражение вычисляется перед каждым выполнением тела цикла. Если логическое выражение  принимает значение TRUE, то тело цикла выполняется, если значение FALSE, происходит выход из цикла. Тело цикла может не выполниться ни разу, если логическое выражение сразу ложно. Телом цикла является простой или составной оператор.
Любой алгоритм, реализуемый с помощью оператора FOR, может быть записан с использованием конструкции WHILE. Например, вычисление значения факториала F=N!:
    … F:=1;
     I:=1;
     WHILE I<=N DO
      BEGIN
      F:=F*I;
      I:=I+1;
      END;   …
Описание слайда:
Оператор цикла с предусловием 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





Оператор цикла с предусловием
В следующем примере требуется подсчитать значение 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.
Описание слайда:
Оператор цикла с предусловием В следующем примере требуется подсчитать значение 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





Оператор цикла с предусловием
Рассмотрим пример вычисления значения квадратного корня из числа Х по итерационной формуле   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.
Описание слайда:
Оператор цикла с предусловием Рассмотрим пример вычисления значения квадратного корня из числа Х по итерационной формуле 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





Оператор цикла с постусловием
REPEAT
< оператор 1 >  [;
< оператор 2 >] [;
…
< оператор n >]
UNTIL   <логическое выражение>;
Данная конструкция оператора цикла используется, если число повторений цикла заранее неизвестно, но известно условие выхода из цикла. Управляющее циклом логическое выражение является условием выхода из цикла. Если оно принимает значение TRUE, то выполнение цикла прекращается. При использовании оператора  REPEAT цикл выполняется хотя бы один раз. В отличие от других операторов цикла  оператор данного вида не требует операторных скобок  BEGIN - END, так как их роль выполняют REPEAT - UNTIL.
Описание слайда:
Оператор цикла с постусловием REPEAT < оператор 1 > [; < оператор 2 >] [; … < оператор n >] UNTIL <логическое выражение>; Данная конструкция оператора цикла используется, если число повторений цикла заранее неизвестно, но известно условие выхода из цикла. Управляющее циклом логическое выражение является условием выхода из цикла. Если оно принимает значение TRUE, то выполнение цикла прекращается. При использовании оператора REPEAT цикл выполняется хотя бы один раз. В отличие от других операторов цикла оператор данного вида не требует операторных скобок BEGIN - END, так как их роль выполняют REPEAT - UNTIL.

Слайд 31





Оператор цикла с постусловием
Вычисление   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 и происходит выход из цикла.
Описание слайда:
Оператор цикла с постусловием Вычисление 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





Пример
В следующем примере требуется поменять местами  максимальный и минимальный элементы, найденные среди элементов четных строк матрицы А(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.
Описание слайда:
Пример В следующем примере требуется поменять местами максимальный и минимальный элементы, найденные среди элементов четных строк матрицы А(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





Операторы языка
В языке имеются процедуры  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.
Описание слайда:
Операторы языка В языке имеются процедуры 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
Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями. Каждое поле имеет свой идентификатор и тип. К компонентам записи возможен прямой доступ и они могут выборочно обновляться. Идентификатор в самой записи должен быть уникальным. Для обращения к отдельным полям записи указываются составные имена: имя записи, после которого ставится точка и записывается идентификатор поля. Запись можно передавать в качестве параметра процедуры или функции, но значением функции запись быть не может.
TYPE <идентификатор типа>= RECORD
    <идентификатор 11>[,< идентификатор 12>,…]: <тип 1>;
    < идентификатор 21>[,< идентификатор 22>,…]: <тип 2>;
           . . .
      END;
Описание слайда:
Данные типа запись RECORD Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями. Каждое поле имеет свой идентификатор и тип. К компонентам записи возможен прямой доступ и они могут выборочно обновляться. Идентификатор в самой записи должен быть уникальным. Для обращения к отдельным полям записи указываются составные имена: имя записи, после которого ставится точка и записывается идентификатор поля. Запись можно передавать в качестве параметра процедуры или функции, но значением функции запись быть не может. TYPE <идентификатор типа>= RECORD <идентификатор 11>[,< идентификатор 12>,…]: <тип 1>; < идентификатор 21>[,< идентификатор 22>,…]: <тип 2>; . . . END;

Слайд 35





Данные типа запись 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;
Описание слайда:
Данные типа запись 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
Дан массив записей со следующей структурой: шифр группы; номер зачетной книжки; код дисциплины; оценка.
Требуется определить средний балл студентов группы АМ-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.
Описание слайда:
Данные типа запись 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
Оператор присоединения.
При обращении к компонентам записи используются составные имена. Для сокращения имен и повышения удобства работы с записями применяется оператор присоединения 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;
Описание слайда:
Данные типа запись 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





Данные типа строка знаков String
Строчный тип используется для описания строк длиной от 0 до 255 символов. Максимальная длина строки указывается в  квадратных скобках. Если она не указана, максимальная длина полагается 255. Строковые переменные, как и строковые константы, занимают количество байтов, равное максимальной длине строки плюс 1 байт (нулевой), предназначенный для хранения текущей длины этой строковой переменной. Важной особенностью Турбо Паскаля является то, что к каждому символу строки возможен доступ по его номеру.
 
TYPE  <идентификатор типа> = String [<максимальная длина>];
 
Например,
TYPE   TString = String[100];
  	                      TS = String;
                    VAR    S,S1 : Tstring; 
                       S2 : String[20];
                       SS : TS;
Описание слайда:
Данные типа строка знаков String Строчный тип используется для описания строк длиной от 0 до 255 символов. Максимальная длина строки указывается в квадратных скобках. Если она не указана, максимальная длина полагается 255. Строковые переменные, как и строковые константы, занимают количество байтов, равное максимальной длине строки плюс 1 байт (нулевой), предназначенный для хранения текущей длины этой строковой переменной. Важной особенностью Турбо Паскаля является то, что к каждому символу строки возможен доступ по его номеру.   TYPE <идентификатор типа> = String [<максимальная длина>];   Например, TYPE TString = String[100]; TS = String; VAR S,S1 : Tstring; S2 : String[20]; SS : TS;

Слайд 39





Строковые   функции
Описание слайда:
Строковые функции

Слайд 40





Строковые процедуры
Описание слайда:
Строковые процедуры

Слайд 41





Пример
Описание слайда:
Пример

Слайд 42





Подпрограммы
Подпрограмма- это поименованное сложное действие, которое представляет собой совокупность операторов,  вычисляющих  некоторое число результатов в зависимости от некоторого числа аргументов.
Процедура или функция (общее название - подпрограмма) определяется в разделе описаний основной программы или другой процедуры(функции). Процедура(функция) имеет ту же структуру, что и основная программа, т.е. состоит из заголовка, описательной части и выполняемой части.
Синтаксис заголовка процедуры:
PROCEDURE < имя процедуры > [( <список формальных 
              параметров >)];
Например: 
Procedure PR1 ( A,B,C : integer; Var  S: real);
здесь PR1 – имя процедуры, а А,В,С,S – имена переменных, являющихся параметрами.
Описание слайда:
Подпрограммы Подпрограмма- это поименованное сложное действие, которое представляет собой совокупность операторов, вычисляющих некоторое число результатов в зависимости от некоторого числа аргументов. Процедура или функция (общее название - подпрограмма) определяется в разделе описаний основной программы или другой процедуры(функции). Процедура(функция) имеет ту же структуру, что и основная программа, т.е. состоит из заголовка, описательной части и выполняемой части. Синтаксис заголовка процедуры: PROCEDURE < имя процедуры > [( <список формальных параметров >)]; Например: Procedure PR1 ( A,B,C : integer; Var S: real); здесь PR1 – имя процедуры, а А,В,С,S – имена переменных, являющихся параметрами.

Слайд 43





Подпрограммы
В отличие от основной программы заголовок в процедуре обязателен, но завершается процедура не точкой, а точкой с запятой. 
Оператор процедуры служит для вызова процедуры из основной программы или из другой процедуры(функции).
Вызов осуществляется в следующей форме:
<имя процедуры > [(<список фактических параметров>)];
Для приведенного заголовка процедуры можно написать такой оператор вызова:     PR1 (A,B,C,S);
Формат списка параметров  в заголовке процедуры  и при вызове процедуры отличаются. При вызове переменные, константы или выражения следуют через запятую, а в заголовке запись переменных напоминает объявление переменных в разделе описания переменных. Для всех элементов списка  должен быть указан тип данных.  Несколько переменных, отнесенных к одному типу , пишутся через запятую, а группы переменных различного типа отделяются точкой с запятой. После обращения к процедуре управление передается на выполнение следующего за вызовом процедуры оператора.
Описание слайда:
Подпрограммы В отличие от основной программы заголовок в процедуре обязателен, но завершается процедура не точкой, а точкой с запятой. Оператор процедуры служит для вызова процедуры из основной программы или из другой процедуры(функции). Вызов осуществляется в следующей форме: <имя процедуры > [(<список фактических параметров>)]; Для приведенного заголовка процедуры можно написать такой оператор вызова: PR1 (A,B,C,S); Формат списка параметров в заголовке процедуры и при вызове процедуры отличаются. При вызове переменные, константы или выражения следуют через запятую, а в заголовке запись переменных напоминает объявление переменных в разделе описания переменных. Для всех элементов списка должен быть указан тип данных. Несколько переменных, отнесенных к одному типу , пишутся через запятую, а группы переменных различного типа отделяются точкой с запятой. После обращения к процедуре управление передается на выполнение следующего за вызовом процедуры оператора.

Слайд 44





Подпрограммы
Функция предназначена для вычисления какого-либо одного значения  и используется в выражениях  аналогично стандартным функциям.
Синтаксис заголовка функции:
FUNCTION < имя функции >[(<список формальных 
         параметров>)]: <тип результата>;
Например:
Function  PRF (A,B,C: integer) : real; 
Отличие описания функции от процедуры:
результатом обращения к функции может быть одно единственное значение;
идентификатор результата не указывается в списке формальных параметров;
в выполняемой части функции, хотя бы один раз, имени функции должно быть присвоено значение результата ( чаще всего перед выходом из функции);
после списка формальных параметров  задается тип результата;
после обращения к функции управление передается на выполнение следующей операции данного выражения (в соответствии с  приоритетом).
Описание слайда:
Подпрограммы Функция предназначена для вычисления какого-либо одного значения и используется в выражениях аналогично стандартным функциям. Синтаксис заголовка функции: FUNCTION < имя функции >[(<список формальных параметров>)]: <тип результата>; Например: Function PRF (A,B,C: integer) : real; Отличие описания функции от процедуры: результатом обращения к функции может быть одно единственное значение; идентификатор результата не указывается в списке формальных параметров; в выполняемой части функции, хотя бы один раз, имени функции должно быть присвоено значение результата ( чаще всего перед выходом из функции); после списка формальных параметров задается тип результата; после обращения к функции управление передается на выполнение следующей операции данного выражения (в соответствии с приоритетом).

Слайд 45





Подпрограммы
Для вызова функции используется указатель функции (имя функции со списком фактических параметров), который обязательно должен быть частью какого-либо выражения (входить в правую часть оператора присваивания, присутствовать в списке данных оператора вывода, в логическом выражении условного оператора и т.д.). Для приведенного заголовка функции вызов функции может быть осуществлен одним из следующих способов:
S:=PRF ( A,B,C);
Writeln ( PRF ( A,B,C));
If  PRF ( A,B,C)>20 then K=K+1;
При описании процедуры (функции) в ее заголовке могут быть указаны параметры следующих видов:- параметры-значения;- параметры-переменные;- параметры-константы;- параметры-процедуры;- параметры-функции.
При записи параметров необходимо помнить:
- число формальных и фактических параметров должно быть одинаково;
- порядок следования и тип фактических параметров должен совпадать с порядком и типом соответствующих формальных параметров;
- идентификаторы формальных и фактических параметров могут совпадать;
- формальные параметры в языке Турбо Паскаль в заголовке находятся вместе с описаниями и объявлять их в разделе описаний процедуры(функции) не требуется;
- формальные параметры должны иметь простые или ранее определенные типы
Описание слайда:
Подпрограммы Для вызова функции используется указатель функции (имя функции со списком фактических параметров), который обязательно должен быть частью какого-либо выражения (входить в правую часть оператора присваивания, присутствовать в списке данных оператора вывода, в логическом выражении условного оператора и т.д.). Для приведенного заголовка функции вызов функции может быть осуществлен одним из следующих способов: S:=PRF ( A,B,C); Writeln ( PRF ( A,B,C)); If PRF ( A,B,C)>20 then K=K+1; При описании процедуры (функции) в ее заголовке могут быть указаны параметры следующих видов:- параметры-значения;- параметры-переменные;- параметры-константы;- параметры-процедуры;- параметры-функции. При записи параметров необходимо помнить: - число формальных и фактических параметров должно быть одинаково; - порядок следования и тип фактических параметров должен совпадать с порядком и типом соответствующих формальных параметров; - идентификаторы формальных и фактических параметров могут совпадать; - формальные параметры в языке Турбо Паскаль в заголовке находятся вместе с описаниями и объявлять их в разделе описаний процедуры(функции) не требуется; - формальные параметры должны иметь простые или ранее определенные типы

Слайд 46





Подпрограммы
Параметры-значения.
При передаче параметров по значению в стеке, в котором осуществляется выделение памяти под внутренние (локальные) переменные подпрограммы, выделяется дополнительная память, в которую копируются значения соответствующих фактических параметров. В вызывающей программе  в качестве аргумента подпрограммы для параметра-значения может использоваться не только переменная, но и выражение. После завершения работы подпрограммы выделенная этим параметрам память становится недоступной, поэтому передача параметров по значению не может использоваться в подпрограммах для получения результатов.
Описание слайда:
Подпрограммы Параметры-значения. При передаче параметров по значению в стеке, в котором осуществляется выделение памяти под внутренние (локальные) переменные подпрограммы, выделяется дополнительная память, в которую копируются значения соответствующих фактических параметров. В вызывающей программе в качестве аргумента подпрограммы для параметра-значения может использоваться не только переменная, но и выражение. После завершения работы подпрограммы выделенная этим параметрам память становится недоступной, поэтому передача параметров по значению не может использоваться в подпрограммах для получения результатов.

Слайд 47





Параметры-переменные
 При вызове по ссылке в подпрограмме память под передаваемые переменные не отводится. В подпрограмму передается не значение переменной, а ссылка на место в памяти соответствующего фактического параметра. Подпрограмма, выполняющая некоторые действия с этой переменной, в действительности  производит действия  с соответствующим фактическим параметром, поэтому после выполнения процедуры , изменения, выполненные над этой переменной, сохраняются.  Перед записью параметров-переменных  в списке формальных параметров указывается ключевое слово  VAR (действует до " ; "). Для вычисляемых результатов  могут быть использованы только параметры-переменные. Формальным параметрам-переменным не могут соответствовать в качестве фактических значений константы или выражения ,так как они не имеют адреса для передачи. 
В качестве параметров-переменных могут быть использованы массивы и строки открытого типа, у которых не задаются размеры. Открытый массив  представляет собой формальный параметр подпрограммы, описывающий базовый тип элементов, но не определяющий его размерность и границы.  Индексация элементов в этом случае начинается с нуля.  Верхняя граница открытого массива возвращается функцией HIGH . Такое описание возможно только для одномерных массивов. Для открытого массива в стеке создается его копия, что может вызвать переполнение стека.
Описание слайда:
Параметры-переменные При вызове по ссылке в подпрограмме память под передаваемые переменные не отводится. В подпрограмму передается не значение переменной, а ссылка на место в памяти соответствующего фактического параметра. Подпрограмма, выполняющая некоторые действия с этой переменной, в действительности производит действия с соответствующим фактическим параметром, поэтому после выполнения процедуры , изменения, выполненные над этой переменной, сохраняются. Перед записью параметров-переменных в списке формальных параметров указывается ключевое слово VAR (действует до " ; "). Для вычисляемых результатов могут быть использованы только параметры-переменные. Формальным параметрам-переменным не могут соответствовать в качестве фактических значений константы или выражения ,так как они не имеют адреса для передачи. В качестве параметров-переменных могут быть использованы массивы и строки открытого типа, у которых не задаются размеры. Открытый массив представляет собой формальный параметр подпрограммы, описывающий базовый тип элементов, но не определяющий его размерность и границы. Индексация элементов в этом случае начинается с нуля. Верхняя граница открытого массива возвращается функцией HIGH . Такое описание возможно только для одномерных массивов. Для открытого массива в стеке создается его копия, что может вызвать переполнение стека.

Слайд 48





Пример
Рассмотрим пример использования открытого массива. Пусть требуется подсчитать сумму элементов одномерного массива.
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.
Описание слайда:
Пример Рассмотрим пример использования открытого массива. Пусть требуется подсчитать сумму элементов одномерного массива. 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





Параметры-константы
Так как аргументы, передаваемые в процедуру или функцию, размещаются в стеке, то в случае передачи значением массива большого размера, может произойти переполнение стека. В языке введен описатель CONST, который может задаваться для формальных параметров подпрограмм. Аргумент, соответствующий такому параметру, передается по ссылке, подобно параметру с описателем  Var, но в самой процедуре(функции) запрещается присваивать этому аргументу новое значение.
PROCEDURE  <имя процедуры> (CONST <имя константы>:  <тип>; ...);
FUNCTION <имя функции> (CONST <имя константы> :
             <тип> ; ...): <тип результата> ;
Параметр-константу нельзя передавать в качестве параметра в другую подпрограмму.
Описание слайда:
Параметры-константы Так как аргументы, передаваемые в процедуру или функцию, размещаются в стеке, то в случае передачи значением массива большого размера, может произойти переполнение стека. В языке введен описатель CONST, который может задаваться для формальных параметров подпрограмм. Аргумент, соответствующий такому параметру, передается по ссылке, подобно параметру с описателем Var, но в самой процедуре(функции) запрещается присваивать этому аргументу новое значение. PROCEDURE <имя процедуры> (CONST <имя константы>: <тип>; ...); FUNCTION <имя функции> (CONST <имя константы> : <тип> ; ...): <тип результата> ; Параметр-константу нельзя передавать в качестве параметра в другую подпрограмму.

Слайд 50





Область действия имен
Любая подпрограмма представляет собой блок со своей областью описаний. Она может содержать внутри этого блока описания других процедур и функций, а также  обращения к ним.  Объекты, описанные внутри какого-либо блока,  являются по отношению к нему локальными  и  не доступны внешним блокам.  На них можно ссылаться  только  внутри блока, в котором они описаны.  Под объектами понимаются имена констант, типов, переменных, процедур, функций. Объекты, описанные во внешних блоках и не описанные во внутренних, являются глобальными по отношению к внутренним и доступны как во внешних блоках, так и во внутренних.
Описание слайда:
Область действия имен Любая подпрограмма представляет собой блок со своей областью описаний. Она может содержать внутри этого блока описания других процедур и функций, а также обращения к ним. Объекты, описанные внутри какого-либо блока, являются по отношению к нему локальными и не доступны внешним блокам. На них можно ссылаться только внутри блока, в котором они описаны. Под объектами понимаются имена констант, типов, переменных, процедур, функций. Объекты, описанные во внешних блоках и не описанные во внутренних, являются глобальными по отношению к внутренним и доступны как во внешних блоках, так и во внутренних.

Слайд 51





Область действия имен
Описание слайда:
Область действия имен

Слайд 52





Рекурсивные процедуры и функции
Рекурсия- это способ организации вычислительного процесса, при котором процедура или функция в процессе выполнения входящих в ее состав операторов обращается сама к себе непосредственно,  либо через другие процедуры и функции. 
Рекурсия может быть прямой или косвенной. При прямой рекурсии оператор вызова подпрограммы содержится непосредственно в  ее исполняемой части. Любую рекурсивную процедуру (функцию) можно сделать не рекурсивной. Рекурсивное описание обычно короче и нагляднее, но требует больших затрат машинного времени (за счет повторных обращений) и памяти машины (за счет дублирования переменных).
Рекурсивная подпрограмма однократно вызывается извне. Условие полного окончания   работы рекурсивной процедуры или функции должно находиться  в ней самой.
Описание слайда:
Рекурсивные процедуры и функции Рекурсия- это способ организации вычислительного процесса, при котором процедура или функция в процессе выполнения входящих в ее состав операторов обращается сама к себе непосредственно, либо через другие процедуры и функции. Рекурсия может быть прямой или косвенной. При прямой рекурсии оператор вызова подпрограммы содержится непосредственно в ее исполняемой части. Любую рекурсивную процедуру (функцию) можно сделать не рекурсивной. Рекурсивное описание обычно короче и нагляднее, но требует больших затрат машинного времени (за счет повторных обращений) и памяти машины (за счет дублирования переменных). Рекурсивная подпрограмма однократно вызывается извне. Условие полного окончания работы рекурсивной процедуры или функции должно находиться в ней самой.

Слайд 53





Рекурсивные процедуры и функции
Рассмотрим пример. Вычислить значение    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.
Описание слайда:
Рекурсивные процедуры и функции Рассмотрим пример. Вычислить значение 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.

Слайд 54





Рекурсивные процедуры и функции
Рекурсивная процедура
      Program Main;
      Var   M: integer;
       F:real;
   Procedure FACT(N:integer; Var F: real);
   Var Q : real;
   Begin
       If  N=1 then Q:=1
          else  FACT(N-1,Q);
       F:=N*Q;
   End;
   Begin
       Readln(M);
       FACT ( M, F );
       Writeln (' M!=', F);   
   End.
Описание слайда:
Рекурсивные процедуры и функции Рекурсивная процедура Program Main; Var M: integer; F:real; Procedure FACT(N:integer; Var F: real); Var Q : real; Begin If N=1 then Q:=1 else FACT(N-1,Q); F:=N*Q; End; Begin Readln(M); FACT ( M, F ); Writeln (' M!=', F); End.

Слайд 55





Рекурсивные процедуры и функции
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.
Описание слайда:
Рекурсивные процедуры и функции 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





Рекурсивные процедуры и функции
Предварительно-определенные процедуры.
При косвенной рекурсии одна подпрограмма вызывает другую, которая либо сама, либо посредством других подпрограмм вызывает исходную. В этом случае используется предварительное описание процедур (функций), так как в языке  Турбо Паскаль все процедуры и функции должны быть описаны до их  вызова. В этом случае отдельно от текста процедуры (функции) записывается ее заголовок и к нему после символа  «;»  добавляется ключевое слово  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.
Описание слайда:
Рекурсивные процедуры и функции Предварительно-определенные процедуры. При косвенной рекурсии одна подпрограмма вызывает другую, которая либо сама, либо посредством других подпрограмм вызывает исходную. В этом случае используется предварительное описание процедур (функций), так как в языке Турбо Паскаль все процедуры и функции должны быть описаны до их вызова. В этом случае отдельно от текста процедуры (функции) записывается ее заголовок и к нему после символа «;» добавляется ключевое слово 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





Файлы
Файл на носителе – это поименованная совокупность логически связанных между собой данных (записей), имеющая определенную организацию и общее назначение.
 Физическая запись – это совокупность данных, передаваемых в том или обратном направлении при одном обращении к внешнему носителю (т.е. минимальная единица обмена данными между внешней и оперативной памятью). Физическая запись состоит из логических записей.
Логическая запись – единица данных, используемая в операторах чтения и записи файлов. Логические записи объединяются в физическую запись для уменьшения числа обращений к внешнему устройству.
Для обращения к записям файла на внешнем носителе используется понятие логического файла. Логический файл или файл в программе – это совокупность данных, состоящая из логических записей, объединенных общим назначением.
Для связи  файла в программе и файла на внешнем носителе используется процедура ASSIGN, где указывается имя файла в программе и имя файла на внешнем носителе.
Число записей файла произвольно, но в каждый момент времени доступна только одна запись. Длиной файла называют количество записанных компонент. Файл, не содержащий записей, называется пустым.
Каждая переменная файлового типа должна быть описана в разделе описания переменных var . Не допускается использование таких переменных в выражениях и операторах присваивания. Тип компонент файла может быть любым кроме файлового.
Описание слайда:
Файлы Файл на носителе – это поименованная совокупность логически связанных между собой данных (записей), имеющая определенную организацию и общее назначение. Физическая запись – это совокупность данных, передаваемых в том или обратном направлении при одном обращении к внешнему носителю (т.е. минимальная единица обмена данными между внешней и оперативной памятью). Физическая запись состоит из логических записей. Логическая запись – единица данных, используемая в операторах чтения и записи файлов. Логические записи объединяются в физическую запись для уменьшения числа обращений к внешнему устройству. Для обращения к записям файла на внешнем носителе используется понятие логического файла. Логический файл или файл в программе – это совокупность данных, состоящая из логических записей, объединенных общим назначением. Для связи файла в программе и файла на внешнем носителе используется процедура ASSIGN, где указывается имя файла в программе и имя файла на внешнем носителе. Число записей файла произвольно, но в каждый момент времени доступна только одна запись. Длиной файла называют количество записанных компонент. Файл, не содержащий записей, называется пустым. Каждая переменная файлового типа должна быть описана в разделе описания переменных var . Не допускается использование таких переменных в выражениях и операторах присваивания. Тип компонент файла может быть любым кроме файлового.

Слайд 58





Файлы
В системе программирования Паскаль различаются 3 вида файлов:
файлы с типом записей (типизированные файлы);
текстовые файлы со строками неопределенной длины;
файлы без типа для передачи данных блоками записей.
При работе с файлами необходимо придерживаться следующих общих правил:
текстовые файлы должны быть описаны с типом TEXT;
каждый файл в программе должен быть закреплен за конкретным файлом на носителе процедурой ASSIGN;
открытие существующего файла для чтения, корректировки  или дозаписи производится процедурой RESET, открытие создаваемого файла для записи – процедурой REWRITE;
по окончании работы с файлом он должен быть закрыт процедурой CLOSE.
Описание слайда:
Файлы В системе программирования Паскаль различаются 3 вида файлов: файлы с типом записей (типизированные файлы); текстовые файлы со строками неопределенной длины; файлы без типа для передачи данных блоками записей. При работе с файлами необходимо придерживаться следующих общих правил: текстовые файлы должны быть описаны с типом TEXT; каждый файл в программе должен быть закреплен за конкретным файлом на носителе процедурой ASSIGN; открытие существующего файла для чтения, корректировки или дозаписи производится процедурой RESET, открытие создаваемого файла для записи – процедурой REWRITE; по окончании работы с файлом он должен быть закрыт процедурой CLOSE.

Слайд 59





Процедуры и функции для работы с файлами
ASSIGN (<имя файла>,<имя файла на носителе>) – процедура устанавливает связь между именем файловой переменной и именем файла на носителе. Здесь <имя файла>  это файловая переменная, т.е. правильный идентификатор, объявленный в программе как переменная файлового типа. <Имя файла на носителе> – текстовое выражение, содержащее имя файла или имя логического устройства.  Перед именем файла на носителе может ставиться путь к файлу – имя диска и(или) имя текущего каталога и имена каталогов вышестоящих уровней. 
RESET(<имя файла>) – процедура открытия существующего файла для чтения при последовательном доступе и для чтения и записи при прямом доступе. Указатель файла при этом устанавливается на первую запись (с 0 номером).
REWRITE(<имя файла>) – процедура открытия создаваемого файла для записи. Если файл с таким именем уже существовал, то он стирается. Указатель файла  устанавливается на первую запись. 
READ(<имя файла>, <переменные>) – процедура чтения очередных компонент файла в переменные, тип которых должен совпадать с типом компонент файла. Указатель файла при этом передвигается на количество прочитанных компонент.
WRITE(<имя файла>, <переменные>) – процедура записи содержимого переменных в файл согласно положению указателя. Указатель автоматически сдвигается на число записанных компонент
Описание слайда:
Процедуры и функции для работы с файлами ASSIGN (<имя файла>,<имя файла на носителе>) – процедура устанавливает связь между именем файловой переменной и именем файла на носителе. Здесь <имя файла> это файловая переменная, т.е. правильный идентификатор, объявленный в программе как переменная файлового типа. <Имя файла на носителе> – текстовое выражение, содержащее имя файла или имя логического устройства. Перед именем файла на носителе может ставиться путь к файлу – имя диска и(или) имя текущего каталога и имена каталогов вышестоящих уровней. RESET(<имя файла>) – процедура открытия существующего файла для чтения при последовательном доступе и для чтения и записи при прямом доступе. Указатель файла при этом устанавливается на первую запись (с 0 номером). REWRITE(<имя файла>) – процедура открытия создаваемого файла для записи. Если файл с таким именем уже существовал, то он стирается. Указатель файла устанавливается на первую запись. READ(<имя файла>, <переменные>) – процедура чтения очередных компонент файла в переменные, тип которых должен совпадать с типом компонент файла. Указатель файла при этом передвигается на количество прочитанных компонент. WRITE(<имя файла>, <переменные>) – процедура записи содержимого переменных в файл согласно положению указателя. Указатель автоматически сдвигается на число записанных компонент

Слайд 60





Процедуры и функции для работы с файлами
SEEK(<имя файла>, <номер компоненты>) – процедура установки текущего указателя для чтения или записи требуемой компоненты файла. Используется для организации прямого доступа к записям файла.
CLOSE(<имя файла>) – процедура закрытия файла. Обязательно должна использоваться после создания файла, иначе может произойти потеря данных.
ERASE(<имя файла>) – процедура уничтожения файла. Открытый файл прежде должен быть закрыт.
RENAME(<старое имя файла>, <новое имя файла>) – процедура для переименования файла. Используется после закрытия файла.
FILEPOS(<имя файла>) – функция определения номера текущей записи файла.
FILESIZE(<имя файла>) – функция определения общего количества записей файла.
EOF(<имя файла>) – функция определения признака конца файла. Получает значение TRUE при чтении последней записи файла.
EOLN(<имя файла>) – функция обнаружения конца строки в текстовом файле. Имеет значение TRUE, если найден конец строки.
Описание слайда:
Процедуры и функции для работы с файлами SEEK(<имя файла>, <номер компоненты>) – процедура установки текущего указателя для чтения или записи требуемой компоненты файла. Используется для организации прямого доступа к записям файла. CLOSE(<имя файла>) – процедура закрытия файла. Обязательно должна использоваться после создания файла, иначе может произойти потеря данных. ERASE(<имя файла>) – процедура уничтожения файла. Открытый файл прежде должен быть закрыт. RENAME(<старое имя файла>, <новое имя файла>) – процедура для переименования файла. Используется после закрытия файла. FILEPOS(<имя файла>) – функция определения номера текущей записи файла. FILESIZE(<имя файла>) – функция определения общего количества записей файла. EOF(<имя файла>) – функция определения признака конца файла. Получает значение TRUE при чтении последней записи файла. EOLN(<имя файла>) – функция обнаружения конца строки в текстовом файле. Имеет значение TRUE, если найден конец строки.

Слайд 61





Особенности обработки типизированных файлов
Файл с типом (типизированный файл) состоит из последовательности записей одинаковой длины и одинакового внутреннего формата. Записи следуют непрерывно друг за другом. 
При последовательном доступе записи располагаются на внешнем носителе последовательно в порядке их поступления, т.е. чтение или запись 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;
Описание слайда:
Особенности обработки типизированных файлов Файл с типом (типизированный файл) состоит из последовательности записей одинаковой длины и одинакового внутреннего формата. Записи следуют непрерывно друг за другом. При последовательном доступе записи располагаются на внешнем носителе последовательно в порядке их поступления, т.е. чтение или запись 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





Особенности обработки текстовых файлов
Текстовые файлы состоят из символов. Каждый текстовый файл разделяется на строки неопределенной длины, которые заканчиваются символом конец строки. Весь файл заканчивается символом конец файла.
К текстовым файлам возможен только последовательный доступ. С текстовыми файлами работают различные редакторы текстов. Текстовые файлы имеют стандартный  тип 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. Скорректированные строки выводятся в новый файл.
Описание слайда:
Особенности обработки текстовых файлов Текстовые файлы состоят из символов. Каждый текстовый файл разделяется на строки неопределенной длины, которые заканчиваются символом конец строки. Весь файл заканчивается символом конец файла. К текстовым файлам возможен только последовательный доступ. С текстовыми файлами работают различные редакторы текстов. Текстовые файлы имеют стандартный тип 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





Особенности обработки текстовых файлов
	 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.
Описание слайда:
Особенности обработки текстовых файлов  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





Модули 
Процедуры и функции могут быть сгруппированы в отдельный модуль. Модуль (unit)- это программная единица, текст которой компилируется автономно (независимо от главной программы). Если модуль откомпилирован для реального режима, то результат имеет расширение TPU; модули, откомпилированные для защищенного режима, имеют расширение TPP. 
Структура модуля отличается от структуры обычной программы на языке Паскаль. Модули имеют четыре основные части: заголовок, который следует за зарезервированным словом UNIT; описательную (интерфейсную) часть, которая начинается за зарезервированным словом INTERFACE (в ней помещаются объявления переменных, процедур, функций, констант и типов данных, которые должны быть доступны для других программных модулей, использующих данный модуль); исполнительную (внутреннюю) часть, которая начинается словом IMPLEMENTATION (в нее входит текст подпрограмм и локальные объекты, доступные только внутри данного модуля) и необязательную часть (секцию инициализации), расположенную после исполнительной части между словами BEGIN и END (при этом, если инициализация модуля не нужна, то в секции помещается лишь слово END).
Описание слайда:
Модули Процедуры и функции могут быть сгруппированы в отдельный модуль. Модуль (unit)- это программная единица, текст которой компилируется автономно (независимо от главной программы). Если модуль откомпилирован для реального режима, то результат имеет расширение TPU; модули, откомпилированные для защищенного режима, имеют расширение TPP. Структура модуля отличается от структуры обычной программы на языке Паскаль. Модули имеют четыре основные части: заголовок, который следует за зарезервированным словом UNIT; описательную (интерфейсную) часть, которая начинается за зарезервированным словом INTERFACE (в ней помещаются объявления переменных, процедур, функций, констант и типов данных, которые должны быть доступны для других программных модулей, использующих данный модуль); исполнительную (внутреннюю) часть, которая начинается словом IMPLEMENTATION (в нее входит текст подпрограмм и локальные объекты, доступные только внутри данного модуля) и необязательную часть (секцию инициализации), расположенную после исполнительной части между словами BEGIN и END (при этом, если инициализация модуля не нужна, то в секции помещается лишь слово END).

Слайд 65





Математические функции
Описание слайда:
Математические функции

Слайд 66





Функции округления и преобразования типов
Описание слайда:
Функции округления и преобразования типов

Слайд 67





Процедуры порядкового типа
Описание слайда:
Процедуры порядкового типа



Похожие презентации
Mypresentation.ru
Загрузить презентацию