Наглядных протоколов

Пример 6. Напишите программу решения квадратного уравнения ax2 + bx +c = 0, (a¹0). Исполните составленную программу, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов, для a = 1, b = -5, c = 6 и a = 1, b = -4, с = 4. Пусть программа имеет имя – «квур».

Решение

алг квур (аргвещ a, b, c, резвещ x1, x2, резлит y) дано a=1, b=-5, c=6 а =1, b=-4, с=4
надо начвещD D: = b*b – 4*a*c x1, x2, y   D=1 x1, x2, y D= 0
если D>0 1>0 (?), да 0>0 (?), нет
то y: = “2 разл. действит. корня”   y= «2 разл. действит. корня»  
x1: = (- b+ sqrt (D))/(2*a) х1 = 3  
x2: = (- b – sqrt (D))/(2*a) х2 = 2  
иначе    
если D = 0   0=0 (?), да
то    
y: = “2 равных действ. корня”   y=«2 равных действ.корня»
x1: = - b/(2´a)   х1 = 2
x2: = x1   х2 = 2
иначе y: = “действ.корней нет” все    
все    
кон    

Пример 7. Напишите программу нахождения большего из трёх вещественных чисел, при составлении программы воспользуйтесь вспомогательным алгоритмом вычисления большего из двух чисел. Исполните составленную программу, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов, для a = 7, b = 3, c = 9.

Пусть программа нахождения большего из двух вещественных чисел имеет имя «БИД», а большего из трёх – «БИТ».

Решение

алг БИД (аргвещ m, n, резвещ k) m=7, k=7, n=3 m=7, k=9, n=9
нач k: = m   k=7   k=7
если k<n 7<3 (?), нет 7<9 (?), да
то k: = n     k=9
все    
кон    
алг БИТ (аргвещ a, b, c, резвещ z) дано     a=7, b=3, c=9
надо нач БИД (a, b, z) z   a=7, b=3, z=7
БИД (z, c, z) кон z=7, c=9, z=9

Пример 8. Напишите программу для нахождения суммы элементов таблицы вещественных чисел a(1:n). Исполните составленную программу, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов, для n = 3 и a[1] = 4.2, a[2] = -3, a[3] = 5.

Решение

алг сумма (аргцел n, аргвещтаб a[1:n], резвещ S) дано   n = 3, a[1] = 4.2, a[2] = -3, a[3] = 5
надо начцел i S: = 0 i: = 1 S   S=0 i=1
нцпока i<=3 1<=3(?), да 2<=3?, да 3<=3?, да 4<=3?, нет
S: = S + a[i] S=4.2 S=1.2 S=6.2  
i: = i + 1 кц i=2 i=3 i=4  
кон        

Пример 9. Напишите программу сортировки элементов массива целых чисел методом простого обмена. Исполните процедуру (sort) сортировки элементов массива простым обменом, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов, для n = 3 и a[1] = 45, a[2] = 32, a[3] = 5. Сущность метода сортировки элементов массива простым обменом изложена ниже, стр.180.

Program BubbleSort; Uses crt; Const n=3; Type tmass=array[1..n] of byte; Var a:tmass; Procedure print (a: tmass); {Процедура печати элементов массива} Var i:byte; begin for i:=1 ton dowrite (a[i]:4); end; Procedure input (var a:tmass); {Процедура ввода элементов массива} Var i:byte; begin for i:=1 to n do begin write('a[',i, ']= '); readln(a[i]); end; end; Procedure sort (var a:tmass); {Процедура сортировки обменом} Var i,j,b:byte; begin for i:=2 to n do begin for j:=n downto i do if a[j]<a[j-1] then begin b:=a[j]; a[j]:=a[j-1]; a[j-1]:=b end; print(a); end; end; Begin input (a); sort (a); print (a); end.
Программа сортировки элементов массива простым обменом

 

Procedure sort (var a:tmass); Var i,j,b:byte; begin for i:=2 to n do n=3; a[1]=45, a[2]=32, a[3]=5 i=2, 2≤3 (да)         i=3, 3≤3 (да)       i=4, 4≤3 (нет)
begin for j:=n downto i do   j=3, 3≥2 (да)   j=2, 2≥2 (да)   j=1, 1≥2 (нет)   j=3, 3≥3 (да)   j=2, 2≥3 (нет)  
if a[j]<a[j-1] then 5<32 (да) 5<45 (да)   32<45 (да)    
begin b:=a[j]; a[j]:=a[j-1]; a[j-1]:=b end;   b=5 a[3]=32 a[2]=5   b=5 a[2]=45 a[1]=5     b=32 a[3]=45 a[2]=32    
end;            
end;            

Пример 10. Напишите программу замены в данном тексте слова1 на слово2, той же длины. Исполните составленную программу, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов.

Решение. (Задача на вырезку и частичную замену). Пусть заданы строковой операнд strText (текст) и два слова: заменяемое слово Word1 (слово1) и заменяющее слово Word2 (слово2).Просматривая текст strText, начиная с первого символа (i = 1), вырезаем из текста strText последовательность из d символов, где d – длина Word1 (Word2), сравниваем вырезку со словом Word1. Если они равны, то осуществляем частичную замену, а именно, последовательность из d символов в тексте strText заменяем на слово Word2. Увеличиваем i на d и, начиная с полученного i, вырезаем из текста strText следующие d символов. Если вырезка из d символов текста strText не совпадает со словом Word1, то i увеличиваем на 1 и вырезаем из текста strText следующие d символов. Вырезку, сравнение и, если выполнено условие, замену проводим пока i не станет больше длин(текст)-d+1.

Программа в системе Кумир, где определена операция

частичной замены в тексте

алг замена (аргрезлит текст, арглит слово1, слово2)

дано |литерный операнд текст

надо |в литерном операнде текст заменить слово1 на слово2

начцел i,d

│ d:=длин(слово1) |находим длину слова1

│ i:=1 |организуем просмотр текста с первого символа

нцпока i<=длин(текст)-d+1

│ │ если текст[i:i+d-1]=слово1 | текст[i:i+d-1] – вырезка из текста

│ │ │|последовательности символов длины d и ее сравнение со словом1

│ │ │то текст[i:i+d-1]:=слово2 |частичная замена в тексте

│ │ │ |последовательности из d символов на слово2, если вырезанный

│ │ │ i:=i+d-1 | текст равен слову1, i увеличивается на d-1

│ │ все

│ │ i:=i+1 |номер следующего символа в тексте

кц

кон

Программа в системе Кумир, где не определена операция частичной замены в тексте

алг замена1 (арглит текст, арглит слово1, слово2, резлит текст1)

дано |литерный операнд текст

надо |в литерном операнде текст заменить слово1 на слово2

начцел i,d

│d:=длин(слово1) |находим длину слова1

│i:=1; текст1:="" |результат формируем в текст1,

│| сначало текст1 присвоим значение""

нцпока i<=длин(текст)-d+1

││если текст[i:i+d-1]=слово1

│││то текст1 := текст1 + слово2 |если условие верно,

│││ | то текст1 и слово1 склеиваем, и увеличиваем i на d-1

│││ i:=i+d-1

│││иначе

│││ текст1:=текст1 + текст[i:i] |иначе текст1 склеиваем

│││ | с вырезкой из текст

││все

││i:=i+1 |номер следующего символа в тексте

кц

кон

Исполнение составленной программы «замена» методом моделирования в виде наглядных протоколов дано в таблице 4.


  11≤8(нет)   Таблица 4
  5≤8(да) “за ”=“око”(нет)   i=5+1=6   8≤8(да) “око”=“око”(да) текст=“зуб за зуб” i=8+3-1=10   i=10+1=11
  4≤8(да) “ за”=“око”(нет)   i=4+1=5   7≤8(да) “ ок”=“око”(нет)   i=7+1=8
текст=“око за око” слово1=“око” слово2=“зуб”     d=3 i=1 1≤8(да) “око”=“око”(да) текст=“зуб за око” i=1+3-1=3   i=3+1=4   6≤8(да) “а о”=“око”(нет)   i=6+1=7
алг замена (аргрезлит текст, арглит слово1, слово2) дано надо начцел i,d │ d:=длин(слово1) │ i:=1 │ нцпока i<=длин(текст)-d+1 │ │ если текст[i:i+d-1]=слово1 │ │ │то текст[i:i+d-1]:=слово2 │ │ │ i:=i+d-1 │ │ все │ │ i:=i+1 │ кц кон алг замена (аргрезлит текст, арглит слово1, слово2) дано надо начцел i,d │ d:=длин(слово1) │ i:=1 │ нцпока i<=длин(текст)-d+1 │ │ если текст[i:i+d-1]=слово1 │ │ │то текст[i:i+d-1]:=слово2 │ │ │ i:=i+d-1 │ │ все │ │ i:=i+1 │ кц кон  

    i=3,3£4(да) strWord1== “р”+“ап”=“рап”   Таблица 5
    i=2,2£4(да) strWord1== “а”+“п”=“ап”     i=5,5£4(нет)   вывод “арап”
strWord=“пара” strWord1=“” i=1,1£4(да) strWord1== “п”+ “”=“п”     i=4,4£4(да) strWord1= “а”+“рап”=“арап”  
INPUT"Введите обращаемое слово";strWord strWord1 = "" FOR i = 1 TO LEN(strWord) strWord1=MID$(strWord,i,1)+strWord1   NEXT i PRINT strWord1 END INPUT"Введите обращаемое слово";strWord strWord1 = "" FOR i = 1 TO LEN(strWord) strWord1=MID$(strWord,i,1)+strWord1   NEXT i PRINT strWord1 END


Пример 11. Напишите программу обращения слова. В результате исполнения алгоритма из слова «нас» должно получиться слово «сан», из слова «довереп» – слово «перевод». Исполните составленную программу, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов для слова «пара».

Решение. Пусть strWord – данное слово, а strWord1 – получаемое слово, первоначально strWord1 – пустая строка. Выделяем из строки strWord последовательно, по одному символу (с первого до последнего). Склеиваем вырезанный символ с получаемой строкой strWord1 (strWord1:=”выделенный символ”+strWord1). Тогда первый выделенный символ из слова strWord будет последним символом в получаемом слове strWord1, второй выделенный символ из слова strWord – предпоследним символом в слове strWord1 и т. д.

QBasic

REM обращение слова

DIM strWord AS STRING, strWord1 AS STRING, intI AS INTEGER ′описание операндов

INPUT "Введите обращаемое слово"; strWord ′ввод strWord

strWord1 = "" ′обращенное слово сначала равно пустой строке

FOR intI = 1 TO LEN(strWord) ′организуем вырезку последовательно

′ всех символов строки strWord

strWord1 = MID$(strWord, intI, 1) + strWord1 ′склеиваем строку ′strWord1 с вырезанным символом строки strWord

NEXT intI

PRINT strWord1 ′вывод обращенной строки strWord1 на экран

END

Ручное исполнение программы, написанной на языке QBasic, приведено в таблице 5, с. 168.

Пример 12. Напишите программы ввода и вывода элементов множества SetA. Исполните составленные программы, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов для множества [8, 6, 9].

Решение

Программы ввода и вывода элементов множества:

Program TaskSet; Uses Crt; Type TSet=set of 5..9; Var i, n: byte; SetA: TSet; next: 5..9; Begin ClrScr; {ввод элементов множества SetA} SetA:=[]; Write(‘Задайте количество элементов множества’); Readln(n); for i:=1 to n do begin Write(i,’ – элемент?’); Readln(next); SetA:=SetA+[next]; end; Program TaskSet1; Uses Crt; Type TSet=set of 5..9; Var i, n: byte; SetA: TSet; next: 5..9; sim:char; Begin ClrScr; {ввод элементов множества SetA} SetA:=[]; i:=1; Repeat Write(i,’ – элемент?’); Readln(next); i:=i+1; SetA:=SetA+[next]; Write(‘Вводить элемент множества д/н?’); Readln(sim) Until sim=’н’;
{вывод элементов множества} for i:=5 to 9 do if i in SetA then Write(i:4); End.

Ручное исполнение программ TaskSet и TaskSet1 дано в таблицах 6-8, с. 171.








Дата добавления: 2015-01-26; просмотров: 1037;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.021 сек.