- •Вопросы к экзамену по оАиП
- •1. Словарь языка Pascal.
- •2. Типы данных и переменные.
- •3. Операции.
- •4. Операции сдвига.
- •5. Побитовые операции «и», «или», «исключающее или».
- •6. Простые операторы языка Pascal.
- •7. Операторы для реализации перехода по условию.
- •8. Операторы для реализации повторяющихся действий.
- •9. Ввод-вывод в Pascal.
- •10. Одномерные массивы: описание, определение.
- •11. Действия по добавлению, удалению, перестановке элементов.
- •12. Двумерные массивы: описание, определение.
- •13. Действия по добавлению, удалению, перестановке строк и столбцов.
- •14. Множества.
- •15. Строки в Pascal: описание, определение.
- •16. Действия над строками.
- •17. Подпрограммы.
- •18. Функции: описание в программе, вызов.
- •19. Процедуры: описание в программе, вызов.
- •20. Формальные и фактические параметры подпрограмм.
- •21. Функции, возвращающие более одного значения.
- •22. Записи: описание, определение, действия.
- •23. Рекурсивное описание записи.
- •24. Массивы записей: описание, определение, действия.
- •28. Файл: описание, определение, виды.
- •29. Функции для работы с файлом.
- •30. Функции чтения/записи данных в/из файл(-а).
14. Множества.
В Паскале множества – это набоpы однотипных объектов, каким-либо обpазом связанных дpуг с дpугом. Хаpактеp связей между объектами подpазумевается пpогpаммистом и никак не контpолиpуется Паскалем. Максимальное количество объектов в множестве – 256.
Множество отличается от массива пеpеменностью количества своих элементов и произвольным порядком следования элементов. Последнее означает, что за каждым элементом множества не закреплено строго определенное место, как это происходит с элементами массива.
Примеры описания, инициализации и операций с множествами в следующем фрагменте программы:
type
digch='0'..'9';
digitch = set of digch;
dig= 0..9;
digit = set of dig;
sport=(football,hockey,tennis,rugby);
hobby=set of sport;
var s1,s2,s3:digitch;
s4,s5,s6:digit;
hobby1:hobby;
begin
s1:=['1','2','3'];
s2:=['3','2','1'];
s3:=['2','3'];
s4:=[0..3,6];
s5:=[4,4];
s6:=[3..9];
hobby1:=[football,hockey,tennis,rugby];
if tennis in hobby1 then writeln('Теннис!');
end.
Над множествами можно выполнять следующие опеpации [2]:
* пеpесечение множеств; pезультат содеpжит элементы,общие для обоих множеств (например, s4*s6 дает [3], s4*s5 - пустое множество);
+ объединение множеств; pезультат содеpжит элементы пеpвого множества, дополненное недостающими элементами втоpого множества (например, s4+s5 - [0,1,2,3,4,5,6]);
- pазность множеств; pезультат содеpжит элементы из пеpвого множества, котоpые не пpинадлежат втоpому; (например, s6-s5 - [3,6,7,8,9]);
= пpовеpка эквивалентности; true, если два множества эквивалентны;
<> пpовеpка неэквивалентности; true, если два множества неэквивалентны;
<= пpовеpка вхождения; true, если пеpвое множество включено во втоpое;
>= пpовеpка вхождения; true, если втоpое множество включено в пеpвое;
in пpовеpка пpинадлежности; true , если выpажение имеет значение, пpинадлежащее множеству. 3 in s6 – true.
Если необходимо пpовеpить, является ли буква гласной, то это можно сделать с помощью следующей конструкции:
if ch in ['a','o','e','у','я','ю','э','и'] then
15. Строки в Pascal: описание, определение.
Строка – массив символов. Для определения строкового типа в Паскале используется ключевое слово string, вслед за которым в квадратных скобках указывается максимальная длина строки, например:
type
line = string[80];
var
line1,line2: line;
16. Действия над строками.
Для строк символов определена операция конкатенация, обозначаемая символом '+', смысл которой заключается в формировании новой символьной строки, значением которой будут строки-операнды, расположенные последовательно друг за другом. Например:
line1:=line1+'-экзамен';
Кроме операции конкатенации, над значениями строкового типа определены операции сравнения с обычным смыслом:
< <= > >= = <>
при выполнении которых действуют следующие правила: более короткая строка всегда меньше длинной; а если длины сравниваемых строк равны, то происходит поэлементное сравнение символов этих строк с учетом лексикографической упорядоченности значений стандартного символьного типа char.
В Паскале имеются встроенные функции и процедуры для обработки строк:
concat(str1[,str2, ... ,strn]) - функция, возвращающая строку, представляющую собой сцепление строк параметров str1,str2, ... ,strn;
copy(str,i,c)- функция, возвращающая строку, которая копируется из строки str, начиная с символа i длиной с символов;
delete(str,i,c)- процедура, удаляющая из строки str с символов, начиная с символа с номером i;
insert(subsrt,str,i) - процедура, вставляющая подстроку substr в строку str, начиная с символа с номером i;
pos(substr,str) - функция, возвращающая номер позиции в строке str, начиная с которой подстрока substr входит в строку str.
length(st) – вычисляет текущую длину в символах строки st. Результат имеет целочисленный тип.
str(number,st) – преобразование числового значения величины number в строку st.
val(st,number,code) – преобразует значение st в величину целочисленного или вешественного типа и помещает результат в number. Code – целочисленная переменная.
uses crt; var s1, s2, s3: string; m, n: byte; begin s3:='[deleted]'; writeln('Введите словосочетание'); readln(s1); writeln('Введите слово, которое хотите удалить'); readln(s2); n:=pos(s2,s1); m:=length(s2); delete(s1,n,m); insert(s3,s1,n); writeln(s1) end. |
uses crt; var s1, s2:string; i, n, p:integer; begin writeln('Введите слово'); readln(s1); n:=length(s1); for i:=1 to n do begin s2[i]:=s1[n]; dec(n); end; for i:=1 to length(s1) do if s2[i]=s1[i] then p:=p+1; if p=length(s1) then write('Палиндром') else write('Не палиндром') end. |
uses crt; var a:string; i, s, sum, u:integer; y:array[1..255] of integer; begin readln(a); s:=length(a); for i:=1 to s do val(a[i], y[i], u); for i:=1 to s do sum:=sum+y[i]; writeln(sum); end. |