Презентация "Строки в Pascal" 10 класс

Подписи к слайдам:
  • Автор: учитель информатики
  • МКОУ Плесской СОШ
  • Юдин А.Б.
  • 2012 год
  • Строки
  • в Pascal
  • Строка - это массив символов, т.е. элементов типа char. В Паскале строке соответствует тип данных String.
  • var Имя : string [Длина];
  • Если длина не указана, выделяется память под строку до 255 символов.
  • Теория 1
  • var s1:string;
  • строка 255 символов
  • var s2:string[20];
  • строка 20 символов
  • Правила:
  • строки равны только при одинаковом наборе символов и
  • одинаковой длине;
  • Например: 'ABC'='ABC' и 'ABC'≠'abc'
  • иначе происходит поэлементное сравнение символов
  • по их кодам:
  • '0'<'1'<...<'9'<'A'<...<'Z'<'a'<...<'z'<символы кириллицы
  • Например: 'ADS'<'АДС'
  • 65+68+83 < 192+196+209 (По таблице ASCII)
  • Сравнение двух строк
  • Теория 2
  • Сумма кодов строки S1<S2,
  • Сумма кодов строки S1>S2,
  • Теория 3
  • Соединение двух строк.
  • s1:='2011' + ' год';
  • Writeln(s1);
  • s1:='10';
  • s2:='класс';
  • s3:=s1+' '+s2;
  • Writeln(s3);
  • Функция Length
  • Функция Length(S) определяет текущую длину строки S.
  • Результат — значение целого типа.
  • Теория 4
  • PROGRAM Dlina_1;
  • VAR S : STRING;
  • n:INTEGER;
  • BEGIN
  • Writeln(введите слово ') ; Readln(S);
  • n:= Length (S) ;
  • Writeln(‘введите слово ', n:5 ,' букв..');
  • END.
  • Записываем длину строки в переменную целого типа
  • PROGRAM Dlina_2;
  • VAR S : STRING;
  • BEGIN
  • Writeln(’введите слово’) ; Readln(S);
  • Writeln(’слово состоит из ’, Length (S) ,’букв. ’);
  • END.
  • Выводим на экран длину строки, как результат выполнения функции
  • Задача 1. Составить программу подсчитывающую количество букв в слове.
  • Uses crt;
  • var a,b:string;
  • m,n:Integer;
  • Begin
  • Clrscr;
  • Writeln('ВВеди первую строку ');Readln(a);
  • Writeln('ВВеди вторую строку ');Readln(b);
  • m:=Length(a);
  • n:=Length(b);
  • if (m=n) then writeln('Строки равны');
  • if (m>n) then writeln('Первая больше');
  • if (m<n) then writeln('Вторая больше');
  • End.
  • Задача 2. Сравнить длину двух строк введенных с клавиатуры.
  • Вычисляем длину строк
  • Сравниваем длины и выводим соответствующие пояснения
  • Задача на сравнение строк 5
  • Функция Сору
  • Функция Сору(S, P, N) выделяет из строки S подстроку длиной N символов, начиная с позиции P. Здесь N и P – целочисленные выражения.
  • Теория 6
  • В фразе МАМА МЫЛА РАМУ слово РАМУ начинается с 11 буквы и состоит из 4 букв
  • COPY(s1,11,4)
  • Задача 3. Составить программу осуществляющую вырезку из слова ИНФОРМАТИКА букв так, что бы из них получилось слово ТОРТ.
  • Program n3_1;
  • Uses crt;
  • var a,b,c,d:string;
  • Begin
  • Clrscr;
  • a:='информатика';
  • b:='';
  • c:=copy(a,8,1);
  • d:=copy(a,4,2);
  • b:=c+d+c;
  • writeln(b);
  • End.
  • Задача на составление строк 7
  • Используем функцию работы с символьными переменными
  • COPY
  • Второй вариант:
  • Program n3_2;
  • Uses crt;
  • var a,b:string;
  • Begin
  • Clrscr;
  • a:=‘информатика';
  • b:=a[8]+a[4]+a[5]+a[8];
  • writeln(b);
  • End.
  • Используем определение строки как массива символов
  • Преобразование типов 8
  • Функция STR
  • Str(x, S) преобразует число x в строковый формат. Где x – любое числовое выражение, S – строковая переменная.
  • Задача 4 . Составьте программу которая выводит первую и последнюю цифру натурального числа, введенного с клавиатуры.
  • PROGRAM Primer;
  • uses Crt;
  • VAR S: STRING;
  • n:INTEGER;
  • BEGIN
  • Write('Введи число ');readln(n);
  • Str(n,S);
  • Writeln('Первая цифра -',S[1]);
  • Writeln('Последняя цифра - ',S[length(S)]);
  • END.
  • Преобразуем натуральное число в строку
  • Процедура val позволяет преобразовать цифровые символы (изображение числа) в число. В общем виде обращение к процедуре выглядит так:
  • VAL (Строка, Число, Код) ;
  • где Строка – строковая константа или переменная, содержащая изображение числа;
  • Число – переменная целого или дробного типа, которой должно быть присвоено значение
  • Код – возвращаемый процедурой код ошибки (целое число)
  • Преобразование типов 9
  • Процедура VAL
  • Преобразование типов 10
  • BEGIN
  • s1:='123456789';
  • val(s1,n,code);
  • Writeln(n);
  • END.
  • BEGIN
  • s1:='123456789ABCDE';
  • val(s1,n,code);
  • Writeln(n);
  • END.
  • s1:='ABCDE123456789';
  • val(s1,n,code);
  • Writeln(n);
  • В PascalABC есть более развитый арсенал
  • преобразований как в DELPHI:
  • S:=IntToStr(N) - преобразует целое число к строке;
  • n:=StrToInt(S) - преобразует строку в целое число
  • S:=FloatToStr(r) - преобразует вещественное число к строке
  • R:=StrToFloat(s) преобразует строку в вещественное число.
  • Если преобразование невозможно, то возникает ошибка времени выполнения
  • Преобразование типов 11
  • Преобразование типов 12
  • Задача 5. Дано строка символов а1+а2=. Где 1<=а1 и а2<=9. Составить программу, вычисляющую это выражение. Измените программу так, что бы вместо знака «+» можно было писать «-», «*», «/».
  • VAR S: STRING; a,b,c:real;
  • code:INTEGER;
  • BEGIN
  • Write(‘Введи выражение = ');read(s);
  • val(s[1],a,code);
  • val(s[3],b,code);
  • if (s[2]='+') then c:=a+b;
  • if (s[2]='-') then c:=a-b;
  • if (s[2]='*') then c:=a*b;
  • if (s[2]='/') then c:=a/b;
  • clrscr;
  • Writeln(s,c);
  • END.
  • Из строки берем первый и третий символ и преобразуем в число
  • Символы и их коды 13
  • Функции ORD и CHR
  • Функция Ord(S) – определяет порядковый номер символа.
  • Функция Chr(i) – определяет символ с порядковым номером i
  • По номеру 255 выводим символ из кодовой таблицы Я
  • Символы и их коды 14
  • Задача 6. Составьте программу, которая по символу введенному с клавиатуры, выводит его номер в кодовой таблице.
  • PROGRAM Primer;
  • uses Crt;
  • VAR S: char;
  • n,code:INTEGER;
  • BEGIN
  • Write('Введи символ ');readln(s);
  • Writeln('Символ ', s ,' имеет код -',ord(s));
  • END.
  • Функция ORD работает только символьным типом данных
  • Задача 7. Дана строка символов. Определить сколько раз в ней встречается буква А (русская).
  • Program n5;
  • Uses Crt;
  • Var s:string;
  • i,k:integer;
  • begin
  • ClrScr;
  • Write('ВВеди строку '); readln(s);
  • k:=0;
  • for i:=1 to length(s) do if (s[i]='А') then k:=k+1;
  • writeln('Буква А встречается = ', k:8,' раз');
  • end.
  • Перебираем от 1 до последней буквы
  • Если на i-ом месте стоит А увеличиваем К на 1
  • Подсчет символов в строке 15
  • Замечание 16
  • for i:=1 to length(s) do begin
  • if (s[i]=……
  • if (s[i]=……
  • end;
  • Замечание. Если требуется поиск нескольких символов в строке, то условия заключаем в программные скобки BEGIN … END
  • Подсчет символов в строке 17
  • Начало
  • Ввод S
  • i,1,length(s)
  • Si ='A'
  • К=К+1
  • Вывод К
  • Конец
  • Да
  • Нет
  • Блок-схема к задаче подсчета букв А в строке
  • К=0
  • Замена символов в строке 18
  • Задача 8. Дана строка символов. Заменить в ней все буквы А на букву О.
  • Program n6;
  • Uses Crt;
  • Var s:string;
  • i:integer;
  • begin
  • ClrScr;
  • Write('ВВеди строку '); readln(s);
  • for i:=1 to length(s) do if (s[i]='A') then s[i]:='O';
  • writeln(s);
  • end.
  • Перебираем от 1 до последней буквы
  • Если на i-ом месте стоит А ставим на i-е место О.
  • Замена символов в строке 19
  • Начало
  • Ввод S
  • i,1,length(s)
  • Si ='A'
  • Si ='O'
  • Вывод S
  • Конец
  • Да
  • Нет
  • Блок-схема к задаче замен буквы А на О
  • Задача 9 Удалить из строки введенной с клавиатуры все буквы R (латинские, заглавные).
  • Program n7;
  • Uses Crt;
  • var a,b:String;
  • i:integer;
  • begin
  • ClrScr;
  • Write('ВВеди строку = ');readln(a);
  • b:='';
  • for i:=1 to length(a) do if (a[i]<>‘R') then b:=b+a[i];
  • a:=b;
  • writeln(a);
  • end.
  • Перебираем от 1 до последней буквы
  • Подготавливаем дополнительную переменную
  • Если на i-ом месте не стоит R то прибавляем эту букву к тому, что есть в B
  • То, что получилось в В перемещаем обратно в А
  • Удаление символов из строки 20
  • Удаление символов из строки 21
  • Начало
  • Ввод A
  • i,1,length(A)
  • Ai <>'R'
  • B=B+ Ai
  • Вывод А
  • Конец
  • Да
  • Нет
  • Блок-схема к задаче удаления букв R из строки
  • B=''
  • A=B
  • Вложенные условия. 22
  • begin
  • clRscr;
  • Readln(s);
  • for i:=1 to length(s) do
  • if (s[i]='а') or (s[i]='б') then
  • if (s[i]='а') then s[i]:='б' else s[i]:='а';
  • writeln(s);
  • end.
  • Задача 10. В заданном тексте везде букву "а" заменить на букву "б",  а букву "б" - на букву "а".
  • Из всей строки нам нужно выбрать только А и Б
  • И только после осуществлять замену
  • Вложенные условия 23
  • Начало
  • Ввод S
  • i, 1, length(S)
  • Si ='а'
  • Si ='б'
  • Si ='а'
  • Вывод S
  • Конец
  • Si ='а' или Si ='б'
  • Да
  • Нет
  • Да
  • Нет
  • Блок-схема к задаче замены А на Б и наоборот
  • Вложенные циклы 24
  • begin
  • ClrScr;
  • Write('ВВеди строку '); readln(s);
  • s1:=',.;:"!?-';
  • for i:=1 to length(s1) do begin
  • k:=0;
  • for j:=1 to length(s) do if (s[j]=s1[i]) then k:=k+1;
  • if (k<>0) then writeln(s1[i],' - ',k:5,' раз');
  • end;
  • end.
  • Задача 11. Дана строка символов, содержащая знаки препинания. Подсчитать какие и сколько знаков препинания содержит строка.
  • Внешний цикл, осуществляющий перебор знаков записанных в S1
  • Тело внешнего цикла содержит цикл, отвечающий за перебор символов введенной строки
  • Вложенные циклы 25
  • Начало
  • Ввод S
  • i, 1, length(S1)
  • s1=',.;:"!?-'
  • K=0
  • j, 1, length(S)
  • Sj = S1i
  • Да
  • Нет
  • K=K+1
  • K<>0
  • Вывод S1i,K
  • Нет
  • Да
  • Конец
  • Блок-схема к задаче подсчета знаков препинания