130 likes | 269 Views
k:= Pos (W, St); Delete (St, k, Length (W)); Insert (V, St, k). Begin If s[i]=q1 Then k1:=k1+1 Else If s[i]=q2 Then k2:=k2+1 End;. While i <= Length (S) Do If S[i] = c Then Delete (S, i, 1). Обработка строк с использованием подпрограмм.
E N D
k:= Pos (W, St); Delete (St, k, Length (W)); Insert (V, St, k) Begin If s[i]=q1 Then k1:=k1+1 Else If s[i]=q2 Then k2:=k2+1 End; While i <= Length (S) Do If S[i] = c Then Delete (S, i, 1) Обработка строк с использованием подпрограмм Автор разработки: Камалова Нафиса Ахатовна, учитель информатики МАОУ «СОШ №5» МО «ЛМР» РТ 2012 – 2013 учебный год
Изучаем новое Мозговой штурм Проверка домашнего задания Содержание Домашнее задание Самостоятельная работа
Мозговой штурм Str1:=‘ABCDEFGH’; Delete (Str1, 3, 4); Writeln (Str1); Результат: Str1:=‘ABCDEF’; Str2:=‘abcdef’; Insert (Str1, Str2, 3); Результат: Str2 = ‘abABCDEFcdef’ Str1=‘ABGH’ Str1:=‘ABCDEFGH’; Str2:= ‘Мама мыла раму’; K1:= Length (Str1); K2:= Length(Str2); Результат: Str1:=‘CDE’ Str2:=‘ABCDEFGH’; K1:= Pos (Str1, Str2); K2:= Pos (Str2, Str1); Результат: K1=3; K2=0 K1 = 8; K2 = 15
Блок-схема решения задачи: Задача.Дана строка символов. Удалить из нее символы, расположенные на четных местах. Проверка домашнего задания Начало Начало Ввод S Ввод S i := 2 i := 2 i ≤ Length(S) i ≤ Length(S) Нет Да Delete (S, i, 1) Delete (S, i, 1) Вывод S Вывод S i := i + 1 Конец Конец
Проверка домашнего задания Программа: Задача.Дана строка символов. Удалить из нее символы, расположенные на четных местах. Program Example; Var S: String; i: Integer; Begin Write (‘S=‘); Readln (S); i := 2; While i <= Length (s) Do Begin Delete (S, i, 1); i := i +1; End; Writeln (‘S=‘, S); Readln End. Исходная строка: abcdefgh Итоговая строка: aceg
Изучаем новое Задача 1. Удалить из первой строки все символы “k”, из второй – символы “a”. Основной алгоритм Вспомогательный алгоритм Начало Del (s, c) Ввод S1 i := i + 1 Del (S1, ‘k’) i ≤ Length(S) Вывод S1 Да Конец Ввод S2 Нет Да S[ i ] = c Del (S2, ‘a’) Вывод S2 Delete (S[i], i, 1) i := i + 1 Конец
Изучаем новое Программа: Program Example_1; Var S1, S2: String; Procedure Del (Var S: String; c: Char); Var i: Integer; {i – локальный параметр} Begin i := 1; While i <= Length (S) Do If S[i] = c Then Delete (S, i, 1) Elsei := i + 1; End; Begin Write (‘Введите строку S1: ’); Readln (S1); Del (S1, ‘k’);{S1, ‘k’ – фактические параметры} Writeln (‘S1=‘, S1); Write (‘Введите строку S2: ’); Readln (S2); Del (S2, ‘a’); {S2, ‘a’ – фактические параметры} Writeln (‘S2= ‘, S2); Readln End. Исходные строки: askfgkkhjykc zbandamaakr Итоговые строки: asfghjyc zbndmkr
Изучаем новое Задача 2. Даны две строки. Встречаются ли в первой строке буква “a” и буква “o”, а во второй строке – буква “d” и буква “h”? Вспомогательный алгоритм Основной алгоритм Opr (s,q1,q2) Начало i := 1 t := False Ввод S1, S2 K1 := 0 K2 := 0 t1 := Opr (S1, ‘a’, ‘o’) Нет Да i <= длина (S) t2 :=Opr (S2, ‘d’, ‘h’) Да S[i] = q1 Нет Да Нет (k1<>0) and (k2<>0 Вывод t1, t2 K1 := k1 + 1 t := True S[i] = q2 Конец Opr := t K2 := k2 + 1 Конец
Изучаем новое Описание функции: Программа: Program Example; Var S1, S2: String; t1, t2: Boolean; FunctionOpr (S: String; q1, q2: Char): Boolean; … End; Begin Write ('S1= '); Readln (S1); Write ('S2= '); Readln (S2); t1:=Opr (S1, 'a','o'); t2:=Opr (S2, 'd', 'h'); Writeln ('t1= ', t1, 't2= ', t2); Readln End. FunctionOpr (S: String; q1, q2: Char): Boolean; Var i, k1, k2: Integer; t: Boolean; Begin i:=1; t:=false; k1:=0; k2:=0; While i<= Length (s) Do Begin If s[i]=q1 Then k1:=k1+1 Else If s[i]=q2 Then k2:=k2+1 End; If (k1<>0)and(k2<>0) Then t:= true; Opr:=t End;
Изучаем новое Задача 3.Заменить все вхождения подстроки W в строке S на подстроку V. Основной алгоритм Вспомогательный алгоритм Начало Stroki (W,V,St) Ввод W Pos (W, V) <> 0 Да Нет Ввод S K:= Pos (W, St) Ввод V Конец Delete (S,k, Length (w)) Stroki (W,V,S) Insert (V, St, k) Вывод S Конец
Изучаем новое Программа: Program Example_3; Var W, S, V: String; Procedure Ins (W,V: String; Var St: String); Var k: Byte; Begin WhilePos (W, St)<>0 Do Begin k:= Pos (W, St); Delete (St, k, Length (W)); Insert (V, St, k) End; End; Begin Writeln (‘Введите строки’); Readln (W); Readln (S); Readln (V); Ins (W, V, S); {Вызов процедуры} Writeln (‘S=‘, S); Readln End. Исходные строки: W = ‘Маша’ S = ‘Маша мыла раму’ V = ‘Нина’ Результат: S = ‘Нина мыла раму’
Самостоятельная работа Вариант 1. Даны две строки символов. Проверить, содержится ли в первой строке символ-цифра, во второй строке – строчная латинская буква. Вариант 2. Даны две строки. В первой строке заменить сочетание “no’ на сочетание “da”, во второй строке – сочетание “as” на сочетание “ne”. Вариант 4. Даны две строки символов. В первой строке перед сочетанием “fo” вставить символ “r”, во второй строке – перед сочетанием “go” вставить символ “t”. Вариант 3. Даны две строки. Какая буква встречается раньше: “a” или “o” в первой строке, и “w” или “u” во второй?
Домашнее задание Первая стока: asd23bc163gh5k Вторая строка: frtu452ehasb31m2n8d Задача. Подсчитать сумму цифр, встречающихся в двух строках, состоящих из символов-букв и символов-цифр. Сумма цифр: S = 45