Перечислимый тип
Тип, задаваемый перечислением значений, называется перечислимым. Пример 1. type Days = (Mon, Tue, Wen, Thi, Fri, Sat, Sun); Months = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); var d: Days; m: Months; begin d := Tue; m := Months.May; writeln(d,m); end. Переменные перечислимого типа хранятся в памяти, как целые числа. Первому значению соответствует 0, второму — 1, и т.д. Пример 2. for m: Months:=Jan to Dec do case m of Jan: writeln('Январь'); Feb: writeln('Февраль'); else writeln('Забыли'); end; Пример 3. type Days = (Mon, Tue, Wen, Thi, Fri, Sat, Sun); var d: Days; begin d := Tue; {возвращает следующее значение перечислимого типа} writeln(Succ(d)); {Wen} {возвращает предыдущее значение перечислимого типа} writeln(Pred(d)); {Mon} {возвращает порядковый номер текущего значения перечислимого типа} writeln(Ord(d)); {1} end.
Диапазонный тип
Диапазонный тип строится на базе
целого
символьного
или перечислимого типов
type Marks = 2..5; Digits = '0'..'9'; Letters = 'a'..'z'; Summer = Jun..Aug;
Пример 5. Применение диапазонного типа для массива var a:array [1..10, 'a'..'z'] of integer; i,j:integer; begin a[1,'b']:=Random(100); writeln(a[1,'b']); end. var i:'a'..'z'; j:integer; begin var a:array [1..4, 'a'..'d'] of integer; for j:=1 to 4 do for i:='a' to 'd' do begin a[j,i]:=random(10); write(i,' = ',a[j,i]:2,' '); end end. Пример 6.Словесное наименование сезона по номеру месяца
var Month: integer;
Season: string;
begin
write('Введите номер месяца: ');
readln(Month);
case Month of
1,2,12: Season := 'Зима';
3..5: Season := 'Весна';
6..8: Season := 'Лето';
9..11: Season := 'Осень';
else Season := 'Вы ввели неверный номер месяца';
end;
writeln('Это ',Season)
end.
Краткая теория "Символы и строки"
Символы
c : char Пример var c: char; a:byte; begin readln(c); writeln(ord(c)); {возвращает код символа} a:=120; writeln(chr(a)); {возвращает символ по коду} writeln(UpperCase(c)); {преобразует символ в заглавную букву} writeln(LowerCase(c)); {преобразует символ в прописную букву} if (char.IsDigit(c)) then writeln('цифра'); {проверка, что символ - это цифра} if (char.IsLetter(c)) then writeln('буква'); {проверка, что символ - это буква} if (char.IsLetterOrDigit(c)) then writeln('буква или цифра'); {проверка, что символ - это буква или цифра} end.
Строки
st : string Строка - это одномерный массив типа char. Пример var c: char; st:string; begin readln(st); {ввод строки} c:=st[3]; {переменной c присваивается третья буквы строки st} writeln(c); end. Пример var st, st1, st2:string; begin readln(st); readln(st1); st2:=st+' '+st1; {конкатенация строк} writeln(st2); {сравнение строк} if st>st1 then writeln('st>st1') else writeln('st<st1'); end. Подпрограммы работы со строками
Length(s) - функция, возвращающая длину строки s
SetLength(s,n) - процедура, устанавливающая длину строки s равной n
Copy(s,from,len) - функция, возвращающая подстроку s с позиции from длины len
Insert(subs,s,form) - процедура, вставляющая подстроку subs в строку s с позиции from
Delete(s,from,len) - процедура, удаляющая из строки s len символов с позиции from
Pos(subs,s) - функция, возвращающая позицию первого вхождения подстроки subs в строку s или 0, если подстрока не найдена
PoGender(subs,s,from=1) - функция, возвращающая позицию первого вхождения подстроки subs в строку s, начиная с позиции from, или 0, если подстрока не найдена
TrimLeft(s) - функция, возвращающая строку s, в которой удалены все начальные пробелы
TrimRight(s) - функция, возвращающая строку s, в которой удалены все заключительные пробелы
Trim(s) - функция, возвращающая строку s, в которой удалены все удаляет все начальные и заключительные пробелы
