Строки в Pascal

Презентация:



Advertisements
Похожие презентации
Строки в Pascal
Advertisements

Автор: учитель информатики МКОУ Плесской средней общеобразовательной школы Юдин Андрей Борисович Часть 1.
Презентация по программированию Автор: учитель информатики МОУ Плесской СОШ Юдин А.Б год.
Массивы Материалы к урокам по программированию. МАССИВ это УПОРЯДОЧЕННАЯ последовательность данных ОДНОГО ТИПА. Массивы относятся к структурированным.
Материалы к урокам по программированию Автор: Судакова Лариса Владимировна, учитель биологии и информатики МОУ СОШ 37 г. Буя Костромской области.
Шешель Анжелика. Значения: Символьная величина – 1 символ (буква, цифра, знак) Строковая величина – строка символов.
Обработка символов строки. Дано слово. Переставить первые три и последние три буквы, сохранив порядок их следования.
Двумерные массивы. Задачи обработки двумерных массивов.
Учитель информатики "СОШ 6" г. Кирова Захарова Е.В. ЦИКЛЫ В ПАСКАЛЕ.
Циклы в языке программирования Pascal
1 Программирование на языке Паскаль Часть II Символьные строки.
Множества. Внутреннее представление.. Механизм внутреннего представления Каждое значение базового типа представляется одним битом. В память заносится.
Одномерные массивы Понятие массива, виды массивов Описание, заполнение и вывод одномерного массива Обработка одномерного массива.
Задача: определить является ли простым заданное число.
Задача Разбить предложение по словам. В предложении могут быть знаки «.», «!», «?» и «,»
СТРОКИ Строковой называется последовательность символов определённой длины. Идентификатор типа – слово String Примеры описания: Var Str1 : String[10];
Власова О.А. СОШ 5, Елабуга. Например: семейство бабочек ; Понятие одномерного массива поле цветов;
Например: семейство бабочек; Понятие одномерного массива поле цветов;
1 Программирование на языке Паскаль Циклы. 2 Цикл – это многократное выполнение одинаковой последовательности действий. цикл с известным числом шагов.
Множества. Множество- ограниченный, неупорядоченный набор различных элементов одного типа. Примеры множеств: Множество арабских цифр. Множество знаков.
Транксрипт:

Презентация к уроку информатики Тема: программирование на языке PascalABC Автор: Юдин Андрей Борисович МКОУ Плесская СОШ Часть 2

Разрезка строки 1 Cтрока S:String[6]; S:array[1..6]of char; S[i] S[i]:='A'; //присваивание If (S[i]='A') then … ; //проверка условий 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

s[i]' ' i =1 s1:=s1+s[i] i:=i+1 Да Нет s[i]' ' i =i+1 s2:=s2+2[i] i:=i+1 Да Нет i

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 Да Нет Первое слово Второе слово Третье слово 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; Переменная под первое слово В конце строки добавим пробел Повторяем до конца строки Если символ не пробел, запоминаем его Если символ пробел … Выводим слово на экран Готовим переменную для нового слова

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; Координаты начала первой строки Устанавливаем курсор в позицию 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=97)and(b=192)and(b

Задача 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 [ ])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 =65)or(b =192) then begin b:=b+32; a[i]:=chr(b); 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

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( )+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 (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 + 1i = ИЗЖЕДГВБА = = = 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. Основы программирования. И. Г. Семакин, А. П. Шестаков Издательство: Высшая школа, задач по программированию. В. А. Дагене, Г. К. Григас, К. Ф. Аугутис Издательство: Просвещение Паскаль для школьников, Подготовка к ЕГЭ, Кашаев С.М., Шерстнева Л.В., сайт РЕШУ ЕГЭ Информатика – картинка к книге И. Г. Семакина - картинка к книге В.А. Дагене sherstneva html - sherstneva html -картинка к книге С.М. Кашева. Интернет источники: