Презентация по теме строки в Турбо Паскале
1. Задан массив из N элементов (целые числа). Заменить все элементы, кратные 3 и 5 на ноль. Использовать функцию.Система тестов: Искомый массив: 0 17 0 -142 68 55 -81 -97 -580 Mассив: -15 17 270 -142 68 55 -81 -97 -580 Выход Вход 2. Задан массив из N элементов (действительные числа). Поменять местами наибольший и наименьший элементы массива. Использовать процедуру.Система тестов: Искомый массив: 0.2 34.005 17.6 -1.58 -22.3 Mассив: 0.2 -22.3 17.6 -1.58 34.005 Выход Вход 3. Задан массив из N элементов (целые числа). Определить есть ли в нем простые числа, если есть, то вывести их номера и значения на экран. Использовать функцию.Система тестов: 1-й элемент массива - простое число = 139 4-й элемент массива - простое число = 17 5-й элемент массива - простое число = 5037-й элемент массива - простое число = 2 Mассив: 139 55 1000 17 503 48 2 Выход Вход ЦИКЛ С УСЛОВИЕМЦИКЛ С ПОСТУСЛОВИЕМОПЕРАТОР ВЫБОРАОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХУСЛОВНЫЙ ОПЕРАТОРЦИКЛ С ПАРАМЕТРОМОБЪЯВЛЕНИЕ ФУНКЦИИОБЪЯВЛЕНИЕ ТИПОВСОСТАВНОЙ ОПЕРАТОРОБЪЯВЛЕНИЕ ПРОЦЕДУРЫ ЦИКЛ С УСЛОВИЕМWhile логическое выражение Do оператор;ЦИКЛ С ПОСТУСЛОВИЕМRepeat тело цикла Until логическое выражение;ОПЕРАТОР ВЫБОРАCase Выражение-селектор of СписокКонстант1:оператор;…СписокКонстантN:оператор;[else оператор]end;ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХVar имяПеремен1,…,имяПеременN:ТипПеременной;УСЛОВНЫЙ ОПЕРАТОРIf логическое выражение Then оператор1 [Else оператор2]; ЦИКЛ С ПАРАМЕТРОМFor счетчик:=НачальнЗнач To КонечнЗнач do оператор;For счетчик:=КонечнЗнач Downto НачальнЗнач do оператор;ОБЪЯВЛЕНИЕ ФУНКЦИИFunction ИмяФункции ([ФормальныеПарам]):ТипРезультата;ОБЪЯВЛЕНИЕ ТИПОВType ИмяТипа=ОписаниеТипа;СОСТАВНОЙ ОПЕРАТОРBegin Оператор1;… ОператорN; end;ОБЪЯВЛЕНИЕ ПРОЦЕДУРЫProcedure ИмяПроцедуры ([ФормальныеПарам]); Операции с элементами этого типа данных приближенные, точность результата определяется путем округления. Диапазон возможных значений целого типа данных зависит от внутреннего представления числа. В каких единицах измеряется внутреннее представление числа? Как называется операция упорядочивания элементов массива? Как называется функция, которая увеличивает значение элемента на 1 или на i (записывается inc(x,[i]))? Этот тип данных может принимать одно из двух истинностных значений: true или false. Значениями этого типа являются элементы конечного и упорядоченного множества символов, значение представляет из себя символ, заключенный в кавычки. В Pascal определены два типа данных для работы с текстом: Char – литерный или символьный; String – строковый илистрока. Для данных символьного типа определеныстандартные функции Pred(ch) - предыдущий символ; Pred(‘Б’)=‘А’Succ(ch) – следующий символ; Succ(‘Г’)=‘Д’Ord(ch) – код заданного символа ch в таблице символов ; Ord(‘А’)=65Chr(x) – значение символа по его коду; Chr(128)=‘Б’Upcase(ch) – преобразование строчной буквы в заглавную, только для латинского алфавита Upcase(‘v’)=‘V’ Над данными символьного типа определены операции отношения = <> ≥ ≤ > < ‘A’=‘a’ ‘n’<>’N’ ‘%’>‘L’ ‘л’>=‘b’ ‘v’<’1’ ‘b’<=‘1’ False True False False True False Строка символов имеет две разновидности длины:-общая длина строки, которая определяет величину памяти, выделяемую строке при описании;-текущая длина строки (всегда общей длины) количество смысловых символов строки в данный момент времени.max длина строки = 255 символов Для строки из n символов в памяти отводится n+1 байт:n байт – для хранения символов строки1 байт (нулевой) - для значения текущей длины строки 9 0 а м м а р г о р П Его значение 12 11 10 9 8 7 6 5 4 3 2 1 №№ байта В программе st – переменная строкового типа длиной 12 Переменная st=‘Программа’ хранится в памяти следующим образом Строка – последовательность символов, представляющая собой особую форму одномерного массива данных символьного типа Переменная строкового типа String может быть определена type
ctroka =string [26];
var st1,st2: ctroka; Varst1,st2: string [26];илиvar st: string; Через описание типаtypeИмяТипа =string [max длина строки];var Идент1,…: ИмяТипа; Через объявление переменныхvar Идент1,…: string [max длина строки];илиvar Идент1,…: string; 2) Строка- это совокупность символов (элементов типа Char), которые при обработке доступны каждый в отдельности. Доступ к отдельному элементу строки аналогичен доступу к отдельному элементу массива.Slovo[1]:=‘A’- первому символу переменной Slovo присвоить значение – А.С отдельным элементом строки возможно проделывать все те операции, что и с переменными типа Char. 2 способа обработки строк: 1) Как единый объект slovo:=‘информатика’;slovo:=‘школа’+’_’+’№178’stroka:= slovo1 + slovo2; Операция сцепления (+)A:=’Учимся’; B:=‘УКСИВТ’; С:=A+’ в ’+B+’е’; 2. Операции отношения (сравнения двух строк - лексикографичекое) =,<, >,<>,<=,>= Сравнение строк производится слева направо посимвольно до первого несовпадающего символа, большей считается та строка, в которой первый несовпадающий символ имеет больший код в таблице кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше.Строки равны, если они имеют равную длину и соответствующие символы совпадают. Сравнение строк применяется для: сортировки массивов в алфавитном порядке; быстрого поиска данных в отсортированном массиве; слияния двух отсортированных массивов. ‘Иванов’ ‘Иванова’ ‘Моряк’ ‘Море’ ‘ОНА’ ‘она’ < > < Операции над строками Pos(st1, st) - обнаруживает первую позицию подстроки st1 в строке st Сopy(st, poz, n) – выделяет из строки st, начиная с позиции poz, подстроку длиной n символов st= ‘Программисты–народ удивительный,современный и умный народ’ poz= 20 n=12 st1=‘народ’, st= ‘Программисты–народ удивительный,современный и умный народ’ Pos(st1,st)= 14 Сopy(st, poz, n) = ‘удивительный’ Функции для работы со строками Length(st) – вычисляет текущую длину строки stlength(st)=ord(st[0]) Concat (st1,st2,…,stn) – сцепление строкst1, st2,…,stn st= ‘Народ чудесный–программисты’ st1=‘Народ чудесный’; st2=‘ программисты’ Length(st) = 27 Concat (st1,st2)= ‘Народ чудесный программисты’ Пример использования функции lengthProgram p2;var N: integer; wor: string;beginwor:=‘информатика’;n:=length(wor);write (N);end. Пример использования функции posprogram p1;var wor, w: string; N: integer;beginwor:=‘электрификация’;writeln (‘введите фрагмент для поиска’);readln (w);N:= pos (w, wor);if N < > 0 then writeln (‘позиция =’,N);else writeln (‘такого фрагмента нет’);end. Пример использования функции copyprogram p3;var wor; w1, w2, w3: string;beginword:=‘картографирование’;w1:=copy (wor, 6,4);writeln (w1); w2:=copy (wor, 2,3);writeln (w2); w3:=copy (wor, 11, 3);writeln (w3);end. графартров Insert (st1, st, poz) – вставляет строку st1 встроку st, начиная с позиции poz. st=‘Программиста не корми’; st1=‘хлебом ’; poz=14 st=‘Он компьютер ваш спасёт от вируса’; poz=14;n=4 Delete (st, poz, n) – удаляет n символов из строки st, начиная с позиции poz. st=‘Программиста хлебомне корми’ st=‘Он компьютер спасёт от вируса’ Процедуры для работы со строками Пример использования insert и deleteProgram P4;var st, st1: string;beginst:=‘компьютеризация’;writeln (st);delete (st,1,7);writeln (st);delete (st,3,2);writeln (st);word1:=‘г’;insert (st1, st, 1);writeln (st);word1:=‘не’;insert (st1, st, 3);writeln (st);end. еризацияерациягерациягенерация str(number,st) – преобразует числовое значение величины number в строку st val (st,number,code) – преобразует значение st в величину целого или вещественного типа и помещает результат в number.code =0 –если нет ошибки преобразования, code=№ позиции первого ошибочного символа num=5.28 5.3e+00 Str(num:6,st) 5.3 Str(num:3:1,st) 5.2800000000e+00 Str(num,st) st 2 0 Val(s1,num,code) 0 code 5.28 num Val(s2,num,code) s1=5$28
s2=5.28 Пример использования Val и Strprogram p5;var chislo,kod: integer; stroka: string;beginwriteln ('Задайте число ');readln(chislo);str (chislo,Stroka);writeln ('Строковое представление числа- ', stroka);writeln ('stroka+stroka= ', stroka+stroka);readln ;val( stroka, chislo, kod);if kod <> 0 thenwriteln ('Ошибка ввода ')else writeln ('Числовое значение ',chislo, ' chislo+chislo= ', chislo+chislo);readln;end. Строка – это . . . Чтобы обратиться к определенной буквев строке, надо . . . Для добавления и удаления подстрокииспользуются процедуры . . . Как преобразовать число в строку?А наоборот? Как скопировать фрагмент строки? Результатом вычисления функцииCopy('программирование',4,5) будет слово Результат работы программы: Var x : string[6];Begin x := ‘мим’+’озадаченный’; writeln(x);End. будет слово: мим озадаченный мимозадаченный мимоза озадаченный мим озадаченныймим миров грамм программ программа грамми Program DemoUpcase;Var Word : string; i : Byte;Begin Word := 'фирма Microsoft'; for i := 1 to Length (Word) do Word[i] := UpCase (Word[i]); writeln(Word); End. Результат работы программы: 'Фирма MICROSOFT' 'ФИРМА MICROSOFT' 'фирма Microsoft 'фирма MICROSOFT' 'фирма microsoft Вызывая функцию Copy не нужно указывать: учитываются все входящие в нее символы; учитываются все входящие в нее символы, кроме пробелов;учитываются не все входящие в нее символы; учитываются все входящие в нее символы, исключая служебные символы; учитываются все входящие в нее символы, имеющиеся на клавиатуре. имя строки, из которой должен извлекаться копируемый фрагмент;позицию в строке, начиная с которой будет копироваться фрагмент;число копируемых символов; имя строки, в которую копируется данный фрагмент;имя функции. При подсчете фактической длины строки: C помощью функции Pos можно осуществить поиск некоторого фрагмента в строке. Если заданный фрагмент в строке присутствует, то функция : возвращает количество фрагментов в строке;возвращает нуль;вырезает найденный фрагмент из строки;заменяет найденный фрагмент на введенный ранее;возвращает номер позиции, с которой начинается фрагмент. Получить из слова "математика" слово "тематика". Получить из слова "Позитроника" слово "трон". Получить из слова "абракадабра" - "академик". st= ‘Программисты народ удивительный, современный и умный народ’ Дан текст. Слова в тексте разделены пробелом.Посчитать количество слов в тексте. Составить блок-схему, написать программуДана строка символов до точки. Слова отделяются друг друг от друга пробелом. Определить, сколько слов содержат ровно 3 буквы "е".Дан текст. Найти самое короткое и самое длинное слова.Дан текст. Посчитать количество слов, заканчивающихся на заданную букву.В тексте содержащем несколько предложений найти все вхождения заданного слова и распечатать все включающие его предложения. Принять, что каждое предложение заканчивается точкой.* Рапаков Г.Г., Ржеуцкая С.Ю. «Программирование на языке Pascal», стр. 257-274