- •Министерство образования и науки российской федерации
- •Оглавление предисловие
- •Составление структурных схем алгоритмов и программ
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Пример 4
- •Пример 5
- •Задания
- •Алфавит языка pascal. Типы данных. Раздел описаний. Оператор присваивания. Ввод-вывод. Составление простейших программ
- •Стандартные процедуры
- •Стандартные функции
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Задания
- •Использование переменных логического типа. Логический оператор присваивания
- •Логический оператор присваивания
- •R операция_сравнения s
- •Пример 1
- •Задания
- •4. Программирование разветвляющихся структур
- •4.1. Использование в программах условного оператора
- •Пример 1
- •Задания
- •4.2. Использование в программах оператора варианта
- •Case выражение-селектор of метка_случая : оператор;
- •Пример 1
- •Задания
- •5. Использование переменных типа char
- •Задания
- •6. Реализация циклических структур
- •6.1. Применение оператора цикла с параметром
- •Шаг изменения параметра цикла:
- •Пример 1
- •Задания
- •Пример 2
- •Пример 3
- •Задания
- •Пример 4
- •Задания
- •Таким образом изображаются циклы в структурных схемах (в лабораторных работах, курсовых работах и т.Д.). Пример 5
- •Задания
- •Задания
- •Пример 6
- •Задания
- •Не смотря на то, что есть еще другие операторы цикла, обычно вводят и выводят массивы с помощью оператора цикла с параметром.
- •6.2. Применение оператора цикла с постусловием
- •Пример 1
- •Задания
- •6.3. Применение оператора цикла с предусловием
- •Основные различия между операторами циклов с постусловием и предусловием
- •Пример 1
- •Задания
- •6.4. Работа с двухмерными массивами.
- •Задания
- •Пример 1
- •Задания
- •7. Поиск и сортировка числовых данных
- •Пример 1
- •Задания
- •8. Решение задач с применением подпрограмм
- •Procedure имя(список параметров);
- •Var идентификаторы:имя типа;...; var идентификаторы: имя типа
- •Var идентификаторы:имя типа;...;var идентификаторы: имя типа;...; идентификаторы:имя типа;...;идентификаторы:имя типа
- •Идентификаторы:имя типа;идентификаторы:имя типа; ...;идентификаторы:имя типа
- •Локальные переменные доступны только внутри процедур, в которых они определены!
- •Пример 1
- •Задания
- •9. Использование переменных перечисляемого типа
- •Ввод и вывод значений переменных перечисляемого типа запрещен.
- •Задания
- •10. Использование переменных ограниченного типа
- •Задания
- •11. Использование переменных множественного типа
- •Var идентификатор : set of порядковый тип;
- •Запрещен.
- •Правила приоритета для множественных операций:
- •Задания
- •12. Использование записей
- •With префикс[,префикс [...]] do оператор
- •Пример 1
- •Задания
- •13. Работа со строками
- •Каждая переменная типа string вводится отдельной процедурой readln
- •Пример 1
- •Задания
- •14. Работа с файлами
- •Пример 1
- •Пример 2
- •Пример 3
- •Задания
- •Библиографический список
Задания
№1. Описать следующие понятия в виде записи:
а) цена в рублях и копейках;
б) время в часах, минутах и секундах;
в) адрес (город, улица, дом, квартира);
г) бланк требования на книгу (сведения о книге: шифр, автор, название; сведения о читателе: номер читательского билета, фамилия; дата заказа);
д) экзаменационная ведомость (предмет, номер группы, дата экзамена, 25 строчек с полями: фамилия студента, номер его зачетной книжки, оценка за экзамен).
№2. В программе имеются описания:
Type mast = (piki,trefy,bubny,chervy); {?????}
dostoinstvo = (shest,sem,vosem,devyt,desyt,valet,
dama,korol,tuz); { ???????????}
karta = Record
M:mast;
D:dostoinstvo
End;
Описать логическую функцию F(K1,K2,KM), проверяющую, «бьет» ли карта К1 карту К2, с учетом того, что масть KM является козырной.
№3. В программе имеются описания:
Type
kryg=Record radius: real;
centr : Record
x,y:real
End
End;
Var
K:krug;
Требуется переменной К присвоить значение, соответствующее кругу радиуса 2.5 с центром в точке (0,1.8). В каких из следующих операторов присоединения правильно решается эта задача, а в каких нет и почему?
а) with K do begin
radius:=2.5;
x:=0;
y:=1.8
end;
б) with K do begin
radius:=2.5;
with centr do begin
x:=0;
y:=1.8
end
end;
в) with K do begin
radius:=2.5;
centr.x:=0;
centr.y:=1.8
end;
г) with K, centr do begin
radius:=2.5;
x:=0;
y:=1.8
end;
д) with centr, K do begin
radius:=2.5;
x:=0;
y:=1.8
end;
№4. В программе имеется следующее описание:
Type
vremy=Record
chas:0..23;
min, sec:0..59
End;
Описать процедуру F(t,t1), присваивающую параметру t1 время, на секунду больше времени t (учесть смену суток).
№5. В программе имеются описания:
Typy
kost = Record
lev,prav:0..6
End;
ryd = array [1..28] of kost;
Описать логическую функцию L(r), которая проверяет, правильно ли выставлены кости домино в ряду r (равна ли правая цифра очередной кости левой цифре следующей кости).
13. Работа со строками
Строки представляют собой последовательность символов. Количество символов в строке может изменяться. При определении строкового типа данных должно быть указано максимальное количество символов в строке:
string[n];
Максимальная длина строки – целочисленная константа от 1 до 255.
Если максимальная длина строки не указана, то она равна 255.
Пример описания переменных типа STRING:
VAR
a,b,c : STRING [ N ];
или
VAR
b : STRING;
Все символы строки пронумерованы, т.е. имеют индекс, значение которого изменяется от 1 до числа n. К любому символу в строке можно обратиться точно так же, как к элементу одномерного массива: ARRAY [0..N ] OF CHAR.
Самый первый байт в строке имеет индекс 0 и содержит текущую длину строки, т.е., чтобы узнать текущую длину строки, например b, достаточно обратиться к функции ORD следующим образом:
N:=ORD(b[0])
ОПЕРАЦИИ НАД СТРОКАМИ
К строкам можно применить операцию “+” - сцепление строк.
Например:
'Turbo/' + 'Pascal' 'Turbo/Pascal';
'24' + '.' + '36' '24.36' .
Если длина сцепленной строки превышает максимально допустимую, то строка обрезается.
Операции отношения выполняются после операции '+'.
Сравнение двух строк выполняется посимвольно слева направо с учетом кодов символов. Если строки имеют различную длину, но совпадают друг с другом, включая последний символ более короткой строки, то считается, что более короткая строка меньше длинной. Строки считаются равными только тогда, когда они содержат одинаковые символы и имеют одинаковую длину.
В языке PASCAL все латинские и русские символы упорядочены в порядке соответственно латинского и русского алфавитов, например:
'r' < 's' ;
'ф' > 'д' .
Напомним, что соответствующие большие и маленькие буквы каждого алфавита имеют разные коды, например:
'F'≠'f'.
Примеры присваивания строковых данных:
AGE:='fiftinth';
U:='Yes '+ AGE;
Если переменная U описана как string[9], то, поскольку превышать максимальную длину строки нельзя, переменная U после выполнения описанных операций будет равна
U='Yes fifti' .
функции для обработки строковых переменных
1. CONCAT( ST1 , ST2 ,..., STN:String ):STRING - возвращает строку, представляющую собой сцепление строк-параметров ST1,ST2,...,STN.
Количество сцепляемых строк - произвольное.
Примеры:
1) T:=CONCAT('Зима,', ' Весна,', ' Лето,', ' Осень');
В результате Т будет равно:
Т='Зима, Весна, Лето, Осень'.
2) ST:=concat('Turbo/' , 'Pascal');
В результате ST будет равно:
ST='Turbo/Pascal'.
2. LENGTH(ST:String):INTEGER - возвращает длину строки ST (количество символов в строке).
Пример:
ST:='ЮРГТУ(НПИ)';
i:=length(st); i=10.
3. COPY(ST:String;I,K:Integer):STRING - копирует из строки ST K символов, начиная с символа с номером I.
Если I>length(ST) , то в результате получится пустая строка.
Если I+K>length(ST), то берутся только символы, которые содержатся в строке.
Пример: R:='1 января 2009 года';
S:=copy(R,10,6); S='2009 г'
4. POS(SUBST,ST:String) : INTEGER - просматривает строку ST и отыскивает первое появление в ней подстроки SUBST. Результатом является целое число - номер той позиции строки, в которой находится первый символ подстроки SUBST. Если заданная подстрока не найдена, то результат равен нулю.
Пример: ST:='студенты';
I :=pos('ден',ST); I=4
ПРОЦЕДУРЫ ДЛЯ ОБРАБОТКИ СТРОКОВЫХ ПЕРЕМЕННЫХ
1. DELETE(var ST:String;I,K:Integer) - удаляет из строки ST участок, содержащий K символов, начиная с I-го символа (т.е. начиная с позиции I); результат заносится в ту же строку ST.
Если I>length(ST), то никакие символы не удаляются.
Если I+K>length(ST), то удаляются только те символы, которые присутствуют в строке.
Пример:
Var
st:string;
Begin
st:='ABCDEF';
delete(st,2,4);
……................ st='AF'
2. INSERT(SUBST:String;var ST:String;I:integer) - вставляет подстроку SUBST в строку ST, начиная с позиции c номером I.
Если I>length(ST), то строка SUBST присоединяется к строке ST. Лишние символы отсекаются.
Пример:
ST:=' январь 2004 г.';
insert('Месяц',st,1); ST='Месяц январь 2004 г.'
3. STR(X [ :WIDTH [ :DECIMALS ] ] : Integer (или Real); var ST : String) - преобразует число X вещественного или целого типа в строковое представление (строку ST). WIDTH определяет общую длину поля, выделенного под соответствующее символьное числа X представление вещественного или целого числа X; DECIMALS определяет количество символов в дробной части.
Примеры:
1) i:=5237;
Str(i,st); st='5237'
Str(i:4,st); st='5237'
Str(i:6,st); st=' 5237
Str(i:2,st); st='5237'
2) a:=28.36;
STR(a,st); st=' 2.8360000000E-01'
STR(a:9,st); st=' 2.84E-01'
STR(a:5,st); st=' 2.8E-01'
STR(a:5:2,st); st='28.36'
STR(a:8:3,st); st=' 28.360'
STR(a:3:1,st); st='28.4'
4. VAL(ST:String;var X:Integer(или Real);var CODE:byte) - преобразует строковую величину ST в числовое представление целой или вещественной переменной X (тип определяется типом переменной X).
ST не должно содержать незначащих пробелов в начале или в конце строки.
Параметр CODE содержит ноль, если преобразование прошло успешно, и тогда в X помещается результат преобразования. Иначе CODE равен номеру первого ошибочного символа в строке ST, и в этом случае содержимое X не меняется (перевод не осуществится).
Пример: ST:='234';
val(ST,i,r); i=234; r=0.