Презентация "Строки в 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
- А
- Б
- В
- Г
- Д
- Е
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- (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 -картинка к книге С.М. Кашева.
- Интернет источники: