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

Подписи к слайдам:
  • Строки
  • в Pascal
  • Презентация к уроку информатики
  • Тема: программирование на языке PascalABC
  • Автор: Юдин Андрей Борисович
  • МКОУ Плесская СОШ
  • Часть 2
  • Разрезка строки 1
  • C
  • т
  • р
  • о
  • к
  • а
  • S:String[6];
  • S:array[1..6]of char;
  • S[i]
  • S[i]:='A'; //присваивание
  • If (S[i]='A') then … ;
  • //проверка условий
  • Разрезка строки 2
  • Задача 1. Вводится строка (с клавиатуры или из файла), представляющая Фамилия Имя Отчество (разделены пробелом). Составить программу присваивающую Фамилия, Имя, Отчество трем различным переменным.
  • S – Исходная строка
  • S1- переменная для фамилии
  • S2 – переменная для имени
  • S3 – переменная для отчества
  • Строка S
  • Разрезка строки 3
  • Иванов Иван Иванович
  • S1
  • S2
  • S3
  • Любой символ строки S это S[i]
  • в
  • И
  • а
  • н
  • о
  • в
  • ПРОБЕЛ -НЕТ
  • ПРОБЕЛ -НЕТ
  • ПРОБЕЛ -НЕТ
  • ПРОБЕЛ -НЕТ
  • ПРОБЕЛ -НЕТ
  • ПРОБЕЛ -НЕТ
  • ПРОБЕЛ -ДА
  • Переходим к заполнению второй строки и т.д.
  • Разрезка строки 4
  • i:=1;
  • while (s[i]<>' ') do begin
  • s1:=s1+s[i];
  • i:=i+1;
  • end;
  • Начинаем с первой буквы
  • Пока очередной символ не равен ПРОБЕЛ
  • Запоминаем этот символ в переменной S1 и переходим к другому символу
  • i:=1;
  • while (s[i]<>' ') do begin
  • s1:=s1+s[i];
  • i:=i+1;
  • end;
  • i:=i+1;
  • while (s[i]<>' ') do begin
  • s2:=s2+s[i];
  • i:=i+1;
  • end;
  • i:=i+1;
  • while (i<length(s)+1) do begin
  • s3:=s3+s[i];
  • i:=i+1;
  • end;
  • В конце пробела нет.
  • Сравниваем порядковый номер буквы с длинной строки.
  • Разрезка строки 5
  • s[i]<>' '
  • i =1
  • s1:=s1+s[i]
  • i:=i+1
  • Да
  • Нет
  • s[i]<>' '
  • i =i+1
  • s2:=s2+2[i]
  • i:=i+1
  • Да
  • Нет
  • 1
  • 1
  • 3
  • i<length(s)+1
  • i =i+1
  • s3:=s3+3[i]
  • i:=i+1
  • Да
  • Нет
  • 3
  • Первое слово
  • Второе слово
  • Третье слово
  • Разрезка строки 6
  • i:=1;
  • while (s[i]<>' ') do begin
  • s1:=s1+s[i];
  • i:=i+1;
  • end;
  • i:=i+1;
  • while (s[i]<>' ') do begin
  • s2:=s2+s[i];
  • i:=i+1;
  • end;
  • i:=i+1;
  • s3:=copy(s,i,length(s));
  • S3 присваиваем фрагмент строки S с i-го символа до конца
  • Разрезка строки 7
  • s[i]<>' '
  • i =1
  • s1:=s1+s[i]
  • i:=i+1
  • Да
  • Нет
  • s[i]<>' '
  • i =i+1
  • s2:=s2+2[i]
  • i:=i+1
  • Да
  • Нет
  • 1
  • 1
  • 3
  • Первое слово
  • Второе слово
  • Третье слово
  • 3
  • s3:=copy(s,i,length(s))
  • Разрезка строки 8
  • i:=1;
  • repeat
  • s1:=s1+s[i];
  • i:=i+1;
  • until (s[i]=' ');
  • i:=i+1;
  • repeat
  • s2:=s2+s[i];
  • i:=i+1;
  • until (s[i]=' ');
  • i:=i+1;
  • s3:=copy(s,i,length(s));
  • То же самое с циклом
  • Repeat …
  • Until…
  • Разрезка строки 9
  • k:=1;
  • for i:=1 to length(s)do
  • begin
  • if (k=1) And (s[i]<>' ') then s1:=s1+s[i];
  • if (k=2) And (s[i]<>' ') then s2:=s2+s[i];
  • if (k=3) And (s[i]<>' ') then s3:=s3+s[i];
  • if s[i]=' ' then k:=k+1;
  • end;
  • Номер слова
  • Если номер слова 1 и это не пробел, заполняем переменную S1
  • Если встретился пробел, увеличиваем номер слова.
  • Разрезка строки 10
  • i =1
  • i,1,length(s)
  • s1:=s1+s[i]
  • s2:=s2+s[i]
  • s3:=s3+s[i]
  • s[i]=' '
  • k:=k+1
  • Да
  • Нет
  • Да
  • Нет
  • Да
  • Нет
  • Да
  • Нет
  • (k=1) And (s[i]<>' ')
  • (k=2) And (s[i]<>' ')
  • (k=3) And (s[i]<>' ')
  • Разрезка строки 11
  • Второе слово
  • Первое слово
  • i := Pos(' ', s);
  • s1 := Copy(s,1,i-1);
  • delete(s,1,i);
  • i := Pos(' ', s);
  • s2 := Copy(s,1,i-1);
  • delete(s,1,i);
  • s3:=s;
  • Номер первого пробела
  • Оставшуюся часть присваиваем S3
  • Копируем часть строки до пробела в S1
  • Удаляем из S часть до первого пробела
  • Номер первого пробела (он до удаления был вторым)
  • Копируем часть строки до пробела в S2
  • Удаляем из S часть до второго пробела
  • Разрезка строки 12
  • i := Pos(' ', s)
  • s1 := Copy(s,1,i-1)
  • delete(s,1,i)
  • i := Pos(' ', s)
  • s2 := Copy(s,1,i-1)
  • delete(s,1,i)
  • s3:=s
  • Первое слово
  • Второе слово
  • Третье слово
  • Разрезка строки 13
  • Имитация ввода строки.
  • Каждая переменная вводится по отдельности!
  • ch:char; - опишем переменную для хранения одного символа.
  • repeat
  • read(ch);
  • s1:=s1+ch;
  • until ch=' ';
  • repeat
  • read(ch);
  • s2:=s2+ch;
  • until ch=' ' ;
  • readln(s3);
  • writeln(s1);
  • writeln(s2);
  • writeln(s3);
  • Повторять пока в переменной ch не окажется пробел
  • Вводим очередной символ
  • Добавляем символ к строке S1
  • Таким же образом заполняем S2
  • S3 просто вводим с клавиатуры
  • Разрезка строки 14
  • k:=1;
  • for i:=1 to length(s)do
  • begin
  • if (s[i]<>' ') then a[k]:=a[k]+s[i];
  • if (s[i]=' ') then k:=k+1;
  • end;
  • for i:=1 to k do writeln(a[i]);
  • a:array[1..255] of string; объявим массив слов, из которых состоит строка.
  • Начнем заполнение с первой ячейки массива
  • Перебираем от первой до последней буквы
  • Если символ не пробел, запоминаем его в k-ю ячейку массива
  • Если встретился пробел, переходим к следующей ячейке
  • Выводим массив слов на экран
  • Разрезка строки 15
  • k:=1
  • i,1,length(s)
  • s[i]<>' '
  • a[k]:=a[k]+s[i]
  • s[i]=' '
  • k:=k+1
  • i,1,k
  • Вывод
  • a[i]
  • Да
  • Да
  • Нет
  • Нет
  • Заполнение массива словами
  • Вывод массива слов
  • Разрезка строки 16
  • Разрезка строки 17
  • a:='';
  • s:=s+' ';
  • for i:=1 to length(s)do
  • begin
  • if (s[i]<>' ') then a:=a+s[i];
  • if (s[i]=' ') then
  • begin
  • writeln(a);
  • a:='';
  • end;
  • end;
  • Переменная под первое слово
  • В конце строки добавим пробел
  • Повторяем до конца строки
  • Если символ не пробел, запоминаем его
  • Если символ пробел …
  • Выводим слово на экран
  • Готовим переменную для нового слова
  • a:=''
  • i,1,length(s)
  • s[i]<>' '
  • a:=a+s[i]
  • s[i]=' '
  • a:=''
  • Да
  • Да
  • Нет
  • Нет
  • s:=s+' '
  • Вывод
  • а
  • Вместо вывода может быть процедура обработки переменной А
  • Обработка А
  • Разрезка строки 18
  • Коды символов 19
  • Английские заглавные начинаются с номера 65
  • Английские заглавные заканчиваются номером 90
  • Русские заглавные: 192 ≤ i ≤ 223
  • Русские строчные: 224 ≤ i ≤ 255
  • Английские заглавные: 65 ≤ i ≤ 90
  • Английские строчные: 97 ≤ i ≤ 122
  • Цифры: 48 ≤ i ≤ 57
  • Разница в кодах между заглавной и строчной -32
  • Функции ORD и CHR
  • Функция Ord(S) – определяет порядковый номер символа.
  • Функция Chr(i) – определяет символ с порядковым номером i
  • По номеру 255 выводим символ из кодовой таблицы Я
  • Коды символов 20
  • begin
  • writeln('Русская заглавная А имеет код -',ord('А'));
  • writeln('Русская заглавная Я имеет код -',ord('Я'));
  • writeln('Русская строчная а имеет код -',ord('а'));
  • writeln('Русская строчная я имеет код -',ord('я'));
  • r:=ord('а')-ord('А');
  • writeln('разница между строчной и заглавной = ',r:5);
  • writeln('Английская заглавная А имеет код -',ord('A'));
  • writeln('Английская заглавная Z имеет код -',ord('Z'));
  • writeln('Английская строчная a имеет код -',ord('a'));
  • writeln('Английская строчная z имеет код -',ord('z'));
  • End.
  • Коды символов 21
  • begin
  • for i:=0 to 255 do
  • write(i,' - ',chr(i),';');
  • End.
  • Перебираем коды символов
  • Выводим
  • код символа – символ;
  • Коды символов 22
  • x:=1;y:=1;
  • for i:=30 to 255 do
  • begin
  • gotoxy(x,y);
  • writeln(i,'-',chr(i),'; ');
  • y:=y+1;
  • if (y mod 25 = 0) then begin
  • x:=x+8;
  • y:=1;
  • end;
  • end;
  • Координаты начала первой строки
  • Устанавливаем курсор в позицию X,Y
  • Выводим символ и его код.
  • Переходим к следующей строке
  • Если это 25 строка то…
  • Переходим к следующему столбику и начинаем с первой строки
  • Коды символов 23
  • Коды символов 24
  • Задача 2. Составить программу которая считает сколько русских и сколько английских букв в строке введенной с клавиатуры.
  • write('введи строку');readln(a);
  • s:=0;
  • s1:=0;
  • for i:=1 to length(a) do
  • begin
  • b:=ord(a[i]);
  • if(b>=65)and(b<=90)or
  • (b>=97)and(b<=122)then s:=s+1;
  • if(b>=192)and(b<=255)then s1:=s1+1;
  • end;
  • writeln(s,'-английских букв');
  • writeln(s1,'-русских букв');
  • Пусть количество букв равно нулю
  • Перебираем буквы в строке
  • Определяем код буквы
  • Английские буквы
  • Русские буквы
  • Коды символов 25
  • Задача 2. Составить программу которая считает сколько русских и сколько английских букв в строке введенной с клавиатуры.
  • write('введи строку');readln(a);
  • s:=0;
  • s1:=0;
  • for i:=1 to length(a) do
  • begin
  • b:=ord(a[i]);
  • if(b in [65..90])or
  • (b in [97..122])then s:=s+1;
  • if(a[i] in ['А'..'Я']) or
  • (a[i] in ['а'..'я'])then s1:=s1+1;
  • end;
  • writeln(s,'-английских букв');
  • writeln(s1,'-русских букв');
  • Код символа как элемент множества
  • Символ, как элемент множества
  • Коды символов 26
  • Задача 3. Составить программу заменяющую все заглавные буквы на строчные. В строке вводятся русские и латинские буквы вразнобой.
  • write('введи строку'); readln(a);
  • for i:=1 to length(a) do
  • begin
  • b:=ord(a[i]); if(b<=90)and(b>=65)or(b<=223)and(b>=192) then
  • begin
  • b:=b+32;
  • a[i]:=chr(b);
  • end;
  • end;
  • writeln(a);
  • Перебираем буквы в строке
  • Определяем код буквы
  • Если буква заглавная
  • Увеличиваем код буквы на 32
  • Заменяем букву в строке на новую
  • Коды символов 27
  • Задача 4. С клавиатуры вводится строка из заглавных русских букв. Подсчитать сколько каждых букв по отдельности в этой строке. (Например: А-10, Б-2, В-4 и т.д.)
  • var a:string;
  • s:array[1..33] of integer;
  • b,i:integer;
  • begin
  • clrscr;
  • write('введи строку{русские заглавные}');
  • readln(a);
  • for i:=1 to length(a) do
  • begin
  • b:=ord(a[i]);
  • if(b>=192)and(b<=223)then s[b-191]:=s[b-191]+1;
  • end;
  • for i:=1 to 33 do
  • if (s[i]<>0) then writeln(chr(i+191),' - ', s[i]);
  • end.
  • Массив в котором будем запоминать количество букв
  • Перебираем буквы в строке
  • Определяем код буквы
  • Если буква русская заглавная увеличиваем количество таких букв в массиве
  • Выводим только те буквы, которые встретились в строке
  • Коды символов 28
  • m :=RANDOM (А)
  • случайное число из интервала [0; А)
  • m :=RANDOM(B-A)+A;
  • случайное число из интервала [A ; B)
  • m :=RANDOM(B-A+1)+A;
  • случайное число из интервала [A ; B]
  • Например:
  • Случайное число из интервала [10 ; 30].
  • А = 10, В = 30,
  • подставим в формулу
  • m :=RANDOM(B-A+1)+A;
  • m :=RANDOM(30-10+1)+10;
  • такую запись нужно упростить
  • m :=RANDOM(21)+10;
  • Коды символов 29
  • begin
  • for i:=1 to 10 do begin
  • k:=random(3);
  • if k=0 then n:=random(25)+65;
  • if k=1 then n:=random(25)+97;
  • if k=2 then n:=random(9)+49;
  • s:=s+chr(n);
  • end;
  • writeln(s);
  • End.
  • Задача 5. Составить программу – генератор паролей из английских заглавных, строчных букв и цифр.
  • Количество букв в пароле
  • Определяем тип символа (Заглавный, строчный, цифра)
  • В зависимости от типа случайным образом получаем код символа из интервала
  • Добавляем символ к паролю
  • Коды символов 30
  • Способы решения задач с дополнительной переменной и без 31
  • Задача 6. Составить программу удаляющую «лишние» пробелы между словами, то есть слова должны быть разделены одним пробелом.
  • write('введи строку'); readln(s);
  • i := 1;
  • while i < length(s) do
  • begin
  • if (s[i] = ' ') and (s[i + 1] = ' ')
  • then begin
  • delete(s, i, 1);
  • i:=i-1;
  • end;
  • i:=i+1;
  • end;
  • writeln(s);
  • С первой буквы и пока i меньше длины строки
  • Если на i-ом месте пробел и после него пробел то…
  • Удаляем пробел, и возвращаемся на один символ назад
  • Переходим к следующему символу
  • Задача 6. Составить программу удаляющую «лишние» пробелы между словами, то есть слова должны быть разделены одним пробелом.
  • writeln('Введи строку');readln(s);
  • s1:=s[1];
  • for i:=2 to length(s) do
  • if (s[i]<>' ') or (s[i-1]<>' ')
  • then s1:=s1+s[i];
  • s:=s1;
  • writeln(s);
  • Первая буква новой строки
  • Перебираем от второй буквы до последней
  • Если на i-ом месте не пробел или перед ним не пробел то заносим символ в S1
  • Заменяем S на строку без лишних пробелов
  • Способы решения задач с дополнительной переменной и без 32
  • А
  • Б
  • В
  • Г
  • Д
  • Е
  • А
  • В
  • А Or B
  • 1
  • 1
  • 1
  • 0
  • 1
  • 1
  • 1
  • 0
  • 1
  • 0
  • 0
  • 0
  • (s[i-1]<>' ') or (s[i]<>' ')
  • А
  • В
  • ПОДХОДИТ
  • ПОДХОДИТ
  • ПОДХОДИТ
  • НЕПОДХОДИТ
  • НЕПОДХОДИТ
  • ПОДХОДИТ
  • ПОДХОДИТ
  • ПОДХОДИТ
  • Способы решения задач с дополнительной переменной и без 33
  • Задача 7. Составить программу переворачивающую строку, все символы которой идут в обратном порядке относительно исходной.
  • writeln('Введи строку'); readln(s);
  • for i := 1 to length(s) div 2 do
  • begin
  • tmp := s[i];
  • s[i] := s[length(s) - i + 1];
  • s[length(s) - i + 1] := tmp;
  • end;
  • writeln(s)
  • Перебираем буквы до середины строки
  • Обмениваем местами буквы относительно середины строки
  • Способы решения задач с дополнительной переменной и без 34
  • A
  • Б
  • В
  • Г
  • Д
  • Е
  • Ж
  • З
  • И
  • A
  • Б
  • В
  • Г
  • Д
  • Е
  • Ж
  • З
  • И
  • length(s) - i + 1
  • i
  • 1
  • 9-1+1 = 9
  • 2
  • 3
  • 4
  • И
  • З
  • Ж
  • Е
  • Д
  • Г
  • В
  • Б
  • А
  • 9-2+1 = 8
  • 9-3+1 = 7
  • 9-4+1 = 6
  • Способы решения задач с дополнительной переменной и без 35
  • Задача 7. Составить программу переворачивающую строку, все символы которой идут в обратном порядке относительно исходной.
  • writeln('Введи строку'); readln(s);
  • p := length(s);
  • s1 := '';
  • for i := p downto 1 do s1 := s1 + s[i];
  • s:=s1;
  • writeln(s1)
  • Определяем длину строки
  • Перебираем буквы с последней до первой и переносим их в переменную S1
  • Заменяем содержимое S на перевернутую строку
  • Способы решения задач с дополнительной переменной и без 36
  • 37
  • Список используемой литературы:
  • 1. Основы программирования. И. Г. Семакин, А. П. Шестаков Издательство: Высшая школа, 2001
  • 2. 100 задач по программированию. В. А. Дагене, Г. К. Григас, К. Ф. Аугутис Издательство: Просвещение 1993
  • 3. Паскаль для школьников, Подготовка к ЕГЭ, Кашаев С.М., Шерстнева Л.В., 2011.
  • http://inf.reshuege.ru/ - сайт РЕШУ ЕГЭ Информатика
  • http://progbook.ru/pascal/1365-semakin-shestakov-osnovy-programmirovaniya.html – картинка к книге И. Г. Семакина
  • http://progbook.ru/pascal/1193-dagene-100-zadach-po-programmirovaniyu.html - картинка к книге В.А. Дагене
  • http://nashol.com/2012051065220/paskal-dlya-shkolnikov-podgotovka-k-ege-po-informatike-kashaev-sherstneva-2011.html -картинка к книге С.М. Кашева.
  • Интернет источники: