Символьный и строковый тип данных ТИП ДАННЫХ 1. Целый: Integer (-32 768…32 768), LongInt (-2 147 483 648… 2 147 48648), Word (0…65535) 2. Логический: Boolean ( False (ложь) или True (ист ина) ) 3. Вещест венный ( Real (2.9E-39…1.7E38), Comp (-9.2E18…9.2E18) ) 4. Символьный (Char) Значения Char - символы Каждому символу соответствует свой код Функция Ord(w) дает порядковый номер символа w Функция Chr(i) определяет символ с порядковым номером i Ord(Chr(i)) = i Chr(Ord(w) = w Функция Upcase(ch) преобразует значение переменной ch символьного т ипа , если оно соот вет ст вует ст рочной лат инской букве в код прописной буквы, иначе значение ch ост ает ся неизменным Задание 1. Сост авит ь программу, кот орая определяет код одного введенного символа Program kod; Uses Crt; Var d:Char; x:Integer; Begin ClrScr; WriteLn('введи символ'); ReadLn(d); x:=ord(d); WriteLn('код символа ',d,' равен ',x); ReadLn; End. Задание 2. Составить програму, которая определяет код любого количества введенных символов, пока небудет введен символ ‘.’ (точка) Услоовие d = '.' Program kod; Uses Crt; Var d:Char; x:Integer; Begin ClrScr; Repeat WriteLn('введи символ и нажми Enter'); ReadLn(d); x:=ord(d); WriteLn('код символа ',d,' равен ',x); ReadLn; Until d='.'; End. Задание 2. Составить програму, которая преобразует введенную строчную латинскую букву в прописную Задание 3. Составить програму, которая преобразует введенную строчную латинскую или русскую букву в прописную Задание 2. Составить програму, которая преобразует любое количество введенных строчных латинских букв в прописные 4. Ст ороковый (String) Значения переменной типа String – последовательность символов определенной длины Значения строковой константы - последовательность символов , заключенных в апострофы (‘школа №6’) Форма записи String [k] ,k – длина ст роки (мах размер) Если [k] отсутствует, то длина строки =255 символов Операция сравнения над ст роками Сравнение строк происходит посимвольно слева направо: сравниваются коды соответствующих символов до тех пор, пока не нарушится равенство, при этом делается вывод о знаке неравества Примеры ‘Balkon’<‘balkon’ (Ord(‘B’)<Ord(‘b’)); ‘balkon’ > ‘balk’ (Длина первой строки больше) ‘кошка ‘ > ’кошка’ (Длина первой строки больше) ‘Кот’ =‘Кот’ (Равны по длине и совпадают посимвольно) Функции и процедуры над строками 1. Функция Concat(s1,s2,…,sm) или s1+s2+…+sm выполняет сцепление ст рок s1,s2,…,sm в одну ст року значение функции т ипа String Выражение Результат Concat(‘контра ‘,’бас’) ‘контрабас’ 2. Функция Copy(s,p,n) выделяет из ст роки s подст року длиной n символов, начиная с позиции p Значение s выражение результат ‘контрабас у вас и нас’ Copy(s,7,9) ‘бас у вас’ 3. Функция Length(s) определяет длину ст роки s Результ ат – значение целого т ипа Значение s выражение ‘контрабас у нас’ Length(s) результат 15 4. Функция Pos(s1,s2) обнаруживает в ст роке s2 первое вхождение ст роки s1 (номер позиции). Если вхождения нет , т о выдает ся 0 Значение s2 выражение ‘контрабас у нас’ Pos(ас,s2) результат 8 5. Функция StrToInt(s) преобразует символьную ст року s в числовое значение k:= StrToInt(s) Значение s ‘125’ выражение StrToInt(s) Результат (k) 125 Или процедура Val(s,k,r) 5. Процедура Delete(s,p,n) удаляет n символов из ст роки s, начиная с позиции p Значение s оператор ‘контрабас у нас’ Delete(s,1,6) результат ‘бас у нас’ 6. Процедура Insert(s1,s2,p) - вcт авка ст роки s1 в ст року s2, начиная с позиции p. Значение s2 ‘контрабас у нас’ оператор результат Insert(‘есть’,s2,11) ‘контрабас есть у нас’ Задание 1 Сост авит ь программу, кот орая определяет длину введенной ст роки Обозначим вводимую строку переменной s, ее тип строковый т.е.- String d:integer; Длину этой строки переменной d, ее тип целый т.е.- integer; начало Ввод s WriteLn('введи строку '); ReadLn(s); d:=Length(s) Вывод d конец WriteLn('в строке ',d,' символов '); ReadLn; Program dlina; {длина строки} Uses Crt; Var s:String; {вводимая строка} d:integer; Begin ClrScr; WriteLn('введи строку и нажми Enter'); ReadLn(s); d:=Length(s); WriteLn('во введенной строке ',d,' символов '); ReadLn; end. Задание 2 Составить программу, которая определяет количество слов начало Кот и кит Ввест и s d:=length(s) i=1,d нет да Copy(s,i,1)=‘ ‘ Вывест и k k:= k+1 конец Кот и кит № шага i Copy(s,i,1)=‘ ‘ k:=k+1 1 1 нет к≠’ ‘ 0 2 2 нет о≠’ ‘ 0 3 3 нет т≠’ ‘ 0 4 4 да ‘ ‘=’ ‘ 1 5 5 нет и≠’ ‘ 1 6 6 да ‘ ‘=’ ‘ 2 нет т≠’ ‘ 2 9 9 Program kod;{длина строки} Uses Crt; Var s:String;{вводимая строка} d,i,k:integer; Begin ClrScr; WriteLn('введи строку и нажми Enter'); ReadLn(s); d:=Length(s); for i:=1 to d do if s[i]=' ' then k:=k+1; WriteLn('во введенной строке ',k+1,' слов '); ReadLn; end. Задание 3 Составить программу, которая выводит введенное слово назад (ввод – кот вывод – т ок) Обозначим S- вводимое слово S1 – выводимое слово (слово s назад) d- длина слова i - счетчик начало Ввест и s d:=length(s) i=d,1 1 s1:= copy(s,i,1) Вывест и s1 конец Кот № шага i s1:=copy(s,i,1) 1 3 т 2 2 о 3 1 к Program slovo; Uses Crt; Var s,s1:String; d,i,:integer; Begin ClrScr; WriteLn(‘введи слово'); ReadLn(s); d:=Length(s); for i:=d downto 1 do Begin s1:=copy(s,i,1); Write(s1); ReadLn; end; end. Задание 4 Составить программу, которая определяет одинаково ли количество открывающихся и закрывающихся скобок во вводимой строке Обозначим S- вводимая строка k1- количество открывающихся скобок k2- количество закрывающихся скобок i - счетчик Program z_4; Uses Crt; Var s:String; d,i,k1,k2:integer; Begin ClrScr; WriteLn(‘введи строку'); ReadLn(s); d:=Length(s); for i:=1 to d do if copy(s,i,1)=')' then k1:=k1+1; for i:=1 to d do if copy(s,i,1)='(' then k2:=k2+1; if k1=k2 then WriteLn(‘количество скобок равно') else WriteLn(‘количество скобок неравно'); ReadLn; end. Дополнительные процедуры Процедура str(x,s) преобразует числовое значение x (т ип real) в ст року s (т ип String) Процедура var(s,x,err) -превращает ст роковое значение s (т ип String) в числовую переменную x (т ип real) , err (т ип-integer) возвращает номер позиции, в кот орой произошла ошибка преобразования, или 0 , если ошибки не было