Скачать 90.04 Kb.
|
Конспект по теме: ‘Строковый тип данных в паскале’ Учитель информатики Батракова Л.В. _____________________________________________________________________________________ Строковый тип данных в ПаскалеСтрока (строковый тип данных) – это последовательность символов длиной N, где 1<=N<=255. Для определения данных строкового типа используется идентификатор string. Если за идентификатором string следует значение максимальной длины строки данного типа (заключенное в квадратные скобки), то такой тип компилятором рассматривается как произвольный, если же длина строки не указана (в этом случае она равна максимальной величине – 255), то тип считается стандартным.
Type TS=string[80]; Var s,st:TS; Str:string[80];
Var s,s1:string; Структура строки: 0 1 2 3 4 n номер байта
В нулевом байте находится текущая длина строки Элементы строки определяются именем строки с индексом, заключенным в квадратные скобки. Например, S[3]. Первый символ строки имеет номер 1 и т.д. Можно сказать, что строка представляет собой одномерный массив, элементами которого являются символы. Тип string и тип char совместимы, они могут употребляться в одних и тех же выражениях. Строковые данные могут использоваться в качестве констант. Строковая константа – последовательность символов, заключенная в апострофы. Например, ‘237’, ‘это строковая константа’. Строку можно обрабатывать двумя способами:
Операции, определенные над строковыми переменными
s:=’Turbo Pascal’; s1:=s; если длина s>s1, то лишние символы будут отброшены str:=’x’;
Правила сравнения строк: 1)Сравнение строк производится посимвольно в соответствии с их кодами слева направо до первого несовпадающего символа. Строка считается больше, если в ней первый несовпадающий символ имеет больший номер в таблице кодов. Например, ‘MS-DOS’<’MS-Dos’. 2)Если строки имеют различную длину, но в общей части символы совпадают, то более короткая строка меньше. Например, ‘Компьютер’<’Компьютер ’. 3)Строки равны, если они полностью совпадают, т.е. совпадают длины и содержание. Например, ‘Маска’ = ’Маска’.
Операция сцепления (+) применяется для соединения нескольких строк в одну строку. Сцеплять можно и константы, и переменные. Длина результирующей строки не должна превышать 255 символов.
Строки можно вводить и выводить как одномерный массив в цикле. Пример ввода: Writeln(‘input n’); Readln(n); For i:=1 to n do read(s[i]); readln; Пример вывода: For i:=1 to n do write(s[i]); writeln; Как единый объект. Ввод строки: readln(s); Если будет введено меньше символов, чем задано при описании строки, то в нулевом байте установится текущая длина строки. Вывод строки: writeln(s); 5. Стандартные процедуры и функции. Для обработки строковых данных можно использовать специальные процедуры и функции. При их использовании динамически меняется текущая длина строки. 1) Процедура Delete(var St:string; poz, n:byte) – удаление n символов строки St, начиная с позиции Poz. Пример
2) Процедура Insert (S1 :string; var S2 :string; Poz:byte) – вставка строки S1 в строку S2, начиная с позиции Poz. Пример
3) Процедура Str(N:{integer/real}; var St:string) – преобразование числового значения N в строковый и помещение результата в строку St. Пример
4) Процедура Val(St:string; var N:{integer/real}; var Code:byte) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в N. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно 0, если же обнаружена ошибка, то Code будет содержать номер позиции первого ошибочного символа, а значение N не определено. Пример
5) Функция Copy(S:string; Poz, N:byte):string; – выделяет из строки S подстроку длиной N символов, начиная с позиции Poz. Пример
6) Функция Concat(S1,S2,…,Sn:string):string; – выполняет сцепление строк S1,S2,…,Sn в одну строку. Пример
7) Функция Length(S:string):byte; – определяет текущую длину строки S. Пример
8) Функция Pos(S1,S2:string):byte;– определяет первое появление в строке S2 подстроки S1. Пример
Замечание: В PascalABC добавлены следующие процедуры и функции:
Пример. Из данной символьной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность. Program Stroki; Var S1, S2:string; Begin Write(‘Введите строку’); Readln(S1); S2:= ‘ ‘; For i:=1 to length(S1) do If (S1[i]>=’0’) and (S1[i]<=’9’) Then S2:=S2+S1[i]; Writeln(‘Результат’, S2) End. Пример. Дана строка символов, удалить все лишние пробелы.
Var st:string; i,j:byte; begin writeln(‘input st’); readln(st); j:=1; for i:=2 to length(st) do if (st[i]<>st[j]) or (st[j]<>’ ‘) then begin j:=j+1; st[j]:=st[i]; end; for i:=1 to j do write(st[i]); writeln; end.
Var st:string; Begin writeln(‘input st’); readln(st); while pos(‘ ‘,st)>0 do delete(st,pos(‘ ‘,st),1); writeln(st); end. Как преобразовать эту программу, чтобы не было пробелов в начале и в конце строки? Var st:string; Begin writeln(‘input st’); readln(st); while pos(‘ ‘,st)>0 do delete(st,pos(‘ ‘,st),1); if st[1]=' ' then delete(st,1,1); if st[length(st)]=’ ‘ then delete(st,length(st),1); writeln(st); end. В PascalABC эта задача упрощается: Var st:string; Begin writeln(‘input st’); readln(st); while pos(‘ ‘,st)>0 do delete(st,pos(‘ ‘,st),1); writeln(Trim(st)); end. Замечание: Если это решение задачи оформить в виде процедуры, то любую строку можно привести к правильному виду, т.е. к строке, у которой все слова разделены одним пробелом и нет лишних пробелов в начале и в конце строки. Это позволит решение большинства задач на строки привести к одному алгоритму: Var s,s1:string; Begin writeln(‘input s’); Readln(s); S:=s+’ ‘; While pos(‘ ‘,s)>0 do Begin s1:=copy(s,1,pos(‘ ‘,s)-1); {выделяем слово} {обрабатываем слово в соответствии с условием задачи} Delete(s,1,pos(‘ ‘,s)); {удаляем обработанное слово} {в цикле переходим к обработке следующего слова} End; {вывод результата} End. Задача 2. Найти в строке слово максимальной длины. Var s:string; Function maxsl(s:string):string; Var max:string; Begin s:=s+’ ‘; Max:=length(copy(s,1,pos(‘ ‘,s)-1)); {в max помещаем первое слово в строке} Delete(s,1,pos(‘ ‘,s); {удаляем его} While pos(‘ ‘,s)>0 do Begin if length(copy(s,1,pos(‘ ‘,s)-1))> max then max:= length(copy(s,1,pos(‘ ‘,s)-1)); {обрабатываем слово в соответствии с условием задачи} Delete(s,1,pos(‘ ‘,s)); {удаляем обработанное слово} {в цикле переходим к обработке следующего слова} End; Maxsl:=max; End; Begin writeln(‘input s’); Readln(s); Writeln(maxsl(s)) End. Замечание: В задаче использовалась правильная строка. В противном случае надо ее привести к этому виду, удалив лишние пробелы (решение см. выше) и оформив это в виде процедуры. Лучше эту процедуру включить в свой модуль. Список задач на строковый тип. 1. Дана строка символов. Подсчитать количество слов в строке. Оформить в виде процедуры или функции. 2. Дана строка символов. Найти слово максимальной длины. Оформить в виде процедуры или функции. 3. Дана строка символов. Найти слово минимальной длины. Оформить в виде процедуры или функции. 4. Дана строка символов. Удалить из строки все слова, начинающиеся на "pro". Оформить в виде процедуры или функции. 5. Дана строка символов. Удалить из строки все символы цифр. Оформить в виде процедуры или функции. 6. Дана строка символов. Удалить из нее текст, заключенный в {}. Считать, что такое сочетание встречается в строке только один раз. 7. Дана строка символов. Определить, есть ли в ней слова, начинающиеся и оканчивающиеся на одну и ту же букву. Оформить в виде процедуры или функции. 8. Дана строка символов. Определить есть ли в ней слова-палиндромы. Оформить в виде процедуры или функции. 9. Дана строка символов. Заменить символы "I", "2", "3" словами "один", "два", "три". Оформить в виде процедуры или функции. 10. Написать процедуру, которая вставляет указанный символ после указанной позиции. 11. Написать функцию, определяющую вхождение данного элемента в строку. 12. Определить сколько раз GOTO встречается в строке. Оформить в виде процедуры или функции. 13. Строка символов состоит из латинских букв. Расположить их по алфавиту. Оформить в виде процедуры или функции. 14. Найти в строке все слова-палиндромы. Оформить в виде процедуры или функции. 15. Определить есть ли в строке одинаковые слова. Оформить в виде процедуры или функции. 16. Удалить из строки все четные слова. Оформить в виде процедуры. 17. Дана строка символов. Удалить из строки все нецифровые символы. Оформить в виде процедуры или функции. 18. Дана строка символов. Определить, сколько различных символов в строке. |
Конспект урока по информатике Тема урока: «Язык програмирования Паскаль.... Развивать навыки программирования на алгоритмическом языке высокого уровня на примере языка Паскаль | Урока информатики по теме «Табличные базы данных». (Открытый урок.) Данный урок «База данных. Системы управления базами данных» является первым уроком по теме «Технологии хранения, поиска и сортировки... | ||
Конспект по теме: «Записи в Паскале» Цель урока: сформировать представление у учащихся о способе обозначения геометрических фигур буквами латинского алфавита | Конспект по теме: "Графика в Турбо Паскале" Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов специальности 030501. 65 «Юриспруденция»... | ||
Конспект по теме: «Вещественный тип данных» А. Бурмистрова «Программы общеобразовательных учреждений: Алгебра, 7-9 классы». М. Просвещение, 2011. Планирование ориентировано... | Урок по информатике по теме "Системы управления базами данных. Создание... Повторить понятие “База данных”, “поле базы данных”, “запись базы данных”, “субд” | ||
Тема: Создание таблиц базы данных Microsoft Office Access. Тип урока Оборудование: компьютеры, интерактивная доска, карточка участника конкурса, тест «База данных», задание к практической работе | План конспект урока английского языка в 6-ом классе по теме «Seasons»... Тип урока: урок закрепления изученного лексико-грамматического материала по теме | ||
Конспект урока-закрепления по теме «Животные» Тип урока закрепляющий урок по теме «How people live in the city» (глава 3 «Being happy in the country and in the city» ) к умк биболетовой... | Конспект открытого урока по теме: "I love food" Тип урока закрепляющий урок по теме «How people live in the city» (глава 3 «Being happy in the country and in the city» ) к умк биболетовой... | ||
Конспект урока русского языка. Тема: «Сложные предложения. Работа... Цель: обучающая: закрепить пройденный материал; тренировать навык определения предложений в тексте, данных конструкций в речи | Урок по теме «Тип Хордовые» Тема урока по учебно тематическому плану: Контрольно- обобщающий урок по теме «Тип Хордовые» | ||
Конспект урока биологии в 7-м классе по теме: "Класс млекопитающие" Оборудование: Таблицы “Тип хордовые. Класс Млекопитающие. Скелет собаки”, “Тип хордовые. Класс Пресмыкающиеся”, “Внутреннее строение... | Конспект интегрированного занятия в старшей группе детского сада Тип урока: урок закрепления изученного лексико-грамматического материала по теме | ||
Конспект урока Тип урока Закрепление знаний по теме «Спорт» и их использование в устной и письменной речи | Конспект образовательной деятельности Тип урока: Совершенствование знаний по теме «Снятие измерений, анализ измерений» |