1 | Синтаксис и семантика языков программирования. Алфавит языка Delphi Pascal. Описание синтаксиса языка: синтаксические диаграммы. | Синтаксис языка – совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму. Семантика языка – совокупность правил, определяющих смысл синтаксически корректных конструкций языка, его содержание. Алфавит языка программирования Delphi Pascal включает: -
Строчные, прописные буквы латинского алфавита (строчные и прописные буквы не различаются) и знак подчеркивания “_”, который во многих случаях считается буквой. -
Цифры (0 – 9) -
Специальные качестве), например, begin, end, and, or, then, do, if, else, while, repeat, until, var, mod, div и другие. -
Русские символы допускаются только при определении строковых и символьных констант и в комментариях -
Идентификатор – обозначение имен программных объектов (полей данных, процедур, функций и т.п). Представляет собой последовательность букв латинского алфавита (начинается с буквы) и цифр Синтаксические диаграммы отображают правила построения конструкций в более наглядной форме. На такой диаграмме символы алфавита изображают блоками в овальных рамках или кружках, названия конструкций – в прямоугольных рамках, а правила построения конструкций – в виде линий со стрелками на концах. При этом если линия входит в блок, то в описываемую конструкцию должен входить соответствующий символ. Разветвление линии означает, что при построении конструкции возможны варианты. |
2 | Представление данных в Delphi Pascal: константы и переменные. Классификация скалярных типов данных, операции над ними, совместимость типов данных и операции преобразования типов. | Константы – данные, не изменяемые в процессе выполнения программы. Используют следующие типы констант: числовые константы (целые и вещественные десятеричные и целые 16-ичные), логические константы (true, false), символьные константы (в апострофах или в виде числовых кодов символов по ANSI перед '#'), строковые константы (в апострофах), конструкторы множеств, «нулевой» адрес – nil. Константы используются как литералы (значение константы, записанное непосредственно в программе) и как поименованные константы (константы, обращение к которым выполняется по имени, объявляются в разделе описаний const). Переменные – поименованные значения, которые могут изменяться в процессе выполнения программы. Используются для хранения промежуточных и окончательных результатов, а также индексов и других вспомогательных значений. Объявление выполняют в разделе описаний программы var, указывается тип. Скалярные типы описывают единственные значения из заданных наборов. Значение структурного типа образуется из некоторого количества значений скалярных типов. Скалярные типы делятся на порядковые и вещественные. Группа порядковых типов (целый, булевский, символьный тип) объединяет типы переменных, набор значений которых конечен, группа вещественных типов – типы с условно бесконечным набором значений. Арифметические операции – применяют к вещественным и целым константам и переменным: +, -, *, / {вещественное деление}, div {целочисленное деление}, mod {остаток от деления} Операции отношения – применяют к числам, символам, строкам – в результате получают логическое значение: {больше}, ={равно}, <>{не равно}, ={больше или равно} Логические операции – применяют к логическим значениям – результат логическое значение (not, and, or, xor) Поразрядные операции – выполняются поразрядно, применяют к целым, результат – целое число (not, and, or, xor, shr {сдвиг вправо}, shl {сдвиг влево}) Корректное выполнение оператора присваивания предполагает, что результат вычисления и переменная правой части одного типа или совместимы по типу. По правилам совместимы: а) все целые типы между собой; б) все вещественные типы между собой; в) отрезок базового типа и базовый тип; г) два отрезка одного и того же базового типа; д) символ и строка. Если типы результата и переменной не совпадают, но совместимы, то при выполнении присваивания выполняется неявное автоматическое преобразование. -
целого и вещественного типов – к вещественному, -
с разными интервалами представлений – к типу с большим интервалом. Для несовместимых типов результата и переменной, в которую его необходимо занести, при выполнении присваивания необходимо явное преобразование типов, например, посредством специальных функций: trunc() – преобразует вещественное число в целое, отбрасывая дробную часть. round() – округляет вещественное число до целого по правилам арифметики. ord() – преобразует значение в его номер. chr() – преобразует номер символа в символ. |
3 | Основные операторы Delphi Pascal: присваивание, условный оператор, оператор выбора и операторы циклов. Синтаксис операторов, их особенности и примеры использования. | Оператор присваивания используется для изменения значений переменных. При выполнении этого оператора вычисляется выражение, записанное в правой части, и его результат заноситься в переменную, имя которой указано слева. Оператор условной передачи управления используется при обработке вариантов вычислений и реализует конструкцию ветвления. Оператор выбора используется для реализации нескольких альтернативных вариантов действий, каждый из которых соответствует своим значения некоторого параметра. Для реализации циклических процессов используют операторы циклов. Cчетный цикл – цикл, количество повторений которого известно или можно посчитать. Выход из такого цикла программируется по счетчику. Цикл выполняется, пока переменная – параметр цикла принимает значения в заданном диапазоне с единичным шагом. Итерационный цикл – цикл, количество повторений которого неизвестно или считается неизвестным при построении цикла. Выход из цикла программируется по выполнению или нарушению условия. Ц икл-пока. Оператор тела цикла повторяется, пока условие истинно. Проверка осуществляется на входе в цикл и при каждом повторении. Если при входе в цикл условие не выполняется, то оператор тела цикла игнорируется. Ц икл-до. Операторы тела цикла повторяются до выполнения условия, условие проверяется на выходе каждый раз после выполнения тела цикла. Поисковый цикл имеет два выхода – нашли и перебрали все и не нашли. Данные циклы используются для решения задач вычислительной математики: вычисление значений функции, решения алгебраических и трансцендентных уравнений, систем уравнений, интерполяции функций, нахождение суммы ряда и т.д. |
4 | Структурные типы данных Delphi Pascal: массивы, строки. Описание, операции над структурами и их элементами. | Массив – это упорядоченная совокупность однотипных данных. Каждому элементу массива соответствует один или несколько индексов порядкового типа, определяющих положение элемента в массиве. Количество типов индексов задает размерность массива. Тип индекса – порядковый – определяет доступ к элементу. Тип элемента – любой кроме файла, в том числе массивы, строки и т.п. Массив в памяти не может занимать более 2 Гб. Var a:array[1..5] of integer; с:array[’A’..’C’,-5..-3] of byte; b:array[byte] of char; Операции над массивом Операция присваивания (только для массивов одного типа): Доступ к элементу массива. Для обращения к конкретному элементу необходимо указать имя массива и значения индексов элемента через запятую в квадратных скобках. Ввод/вывод массивов осуществляется поэлементно for i:=1 to 5 do Read(a[i]); Вывод матрицы for i:=1 to 5 do begin for j:=1 to 7 do Write(a[i, j]); { ai,1 ai,2 ai,3 ai,4 ai,5 ai,6 ai,7} WriteLn; {переходим на следующую строку} end; ... Строка – последовательность символов. Var S1,S2:string[40]; S3:string; Операции -
Присваивание строк: S1:=′ABCD′; S1:=S2; -
Обращение к элементу: S1[5] - прямое S1[i] – косвенное -
Конкатенация (сцепление) строк: St:=St + ’A’; St:=’A’ + ’B’; -
Операции отношения – выполняется попарным сравнением кодов символов, результат определяется по отношению кодов первых различных символов: b:= S1 > S2; -
Ввод-вывод строк: ReadLn(S1); {Строка вводится до Enter или указанной длины} WriteLn(S1); Процедуры и функции -
Функция Length(st) – возвращает длину строки st: -
Процедура Delete(st, index, count) – удаляет count символов строки st, начиная с символа с номером index -
Процедура Insert(St2,St1,index) – вставляет подстроку символов St2 в строку St1, начиная с символа с номером index -
Процедура Str(x[:w[:d]],St) – преобразует результат выражения x, в строку st, содержащую запись этого числа в виде последовательности символов (как при выводе). -
Процедура Val(St,x,Code) – преобразует строку St с записью числа в виде последовательности символов во внутреннее представление целого или вещественного числа и помещает его в переменную x. В целочисленной переменной Code процедура возвращает код ошибки -
Функция Copy(St,index,count):string – возвращает фрагмент строки St, длиной count символов, начиная с символа с номером index -
Функция Pos(St2,St1):integer – возвращает номер позиции первого вхождения подстроки St2 в строку St1. Если вхождение не найдено, то функция возвращает 0 -
Функция UpCase(ch):char – возвращает символ, соответствующий символу верхнего регистра для ch, если таковой имеется, либо сам символ ch, если для него не определен символ верхнего регистра |
5 | Структурные типы данных Delphi Pascal: множества, записи. Описание, операции над структурами и их элементами. | Множество – неупорядоченная совокупность неповторяющихся элементов. Тип элементов – порядковый, кроме Word, Integer, SmallInt, LongInt. Количество элементов не должно превышать 256. Type Digits = set of 1..100; Setchar = set of char; letter = set of ′a′..′z′; Var mychar: setchar; mydig: Digits; simst: letter; Type setnum = set of byte; Var S:setnum = [1..10]; Операции над множествами 1. Присваивание: A:=B; A:=[]; 2. Объединение, пересечение и дополнение: А+B (AB) – объединение множеств А и B – множество, состоящее из элементов, принадлежащих множествам А и B А*B (AB) – пересечение множеств А и B – множество, состоящее из элементов, принадлежащих одновременно и множеству А и множеству B. А-B (A \ B) – дополнение множества А до B – множество, состоящее из тех элементов множества А, которые не принадлежат множеству B. [1..15]-[3,8,9,15,23,45] = [1,2,4..7,10..14]; 3. Операции отношения: А = B – проверка совпадения множеств А и B (если совпадают – true) А <> B – проверка не совпадения множеств А и B (не совпадают – true). А <= B – проверка нестрогого вхождения A в B (если входит – true). А > B – проверка строгого вхождения B в A (если входит – true). 4. Проверка вхождения элемента во множество if a in [2..6] then … Ввод элементов множества: Var S:set of 1..100; n:word; ... S:=[]; Read(n); while n<>0 do begin S:=S+[n]; Read(n); end; ReadLn;... Вывод элементов множества: Var S:set of ’a’..’z’; ... for i:=’a’ to ’z’ do if i in S then Write(i:3); WriteLn; Запись – это структура данных, образованная фиксированным числом разнотипных компонентов, называемых полями записи. Type Data = record Day:1..31; Month: 1..12; Year: word; end; Var Zap1:Data; Вариативная часть Операции над записями 1. Присваивание записей одного типа: Var A,B: record Day:1..31; Month: 1..12; Year: word; end; … A:=B; 2. Доступ к полям записи: A.Day:=21; {точечная нотация} with A do Day := 21; {оператор доступа} 3. Ввод и вывод записей осуществляется по полям. |
6 | Процедуры и функции Delphi Pascal. Способы передачи данных в подпрограмму. Локальные и глобальные переменные, законы «видимости» идентификаторов. | Процедуры и функции – самостоятельные фрагменты программы, соответствующим образом оформленные и вызываемые по имени (программные блоки). Процедура Procedure RRR(a:integer;b:real); Функция Function F23(a:integer;b:real):boolean; F := … Result := … Вызов функции можно осуществлять в составе выражения везде (оператор присваивания, вывода и т.д.) Процедура же должна вызываться отдельным параметром, состоящим из имени процедуры и списка фактических параметров. В схеме обозначается блоком «предопределенный процесс». Классы переменных | Время жизни | Доступность | Глобальные – объявленные в основной программе | От запуска до завершения программы | Из любого места программы, включая подпрограммы* | Локальные – объявленные в подпрограмме | От вызова подпрограммы до возврата управления | Из подпрограммы и подпрограмм, вызываемых из нее* | Подпрограмма может получать данные из основной программы: |