QBasic №5 - школа 73. воронеж.

advertisement
АЛГОРИТМИЗАЦИЯ
И
ПРОГРАММИРОВАНИЕ
( ЛОГИЧЕСКИЕ,
СИМВОЛЬНЫЕ И
ЛИТЕРНЫЕ ВЕЛИЧИНЫ.)
Настоящее пособие подготовлено в помощь учащимся и
учителю ОИВТ по изучению темы "Логические, символьные
и литерные переменные". При объяснении принципов построения алгоритмов использован алгоритмический язык.
Основным языком программирования в пособии считается
язык QBASIC. В пособии разобран ряд интересных алгоритмов. Некоторые из них учитель может оставить для
самостоятельного изучения учащимися. Разобранные алгоритмы можно использовать для составления более сложных
программ. В пособии содержатся задачи для самостоятельной работы и контрольные вопросы. Изучение материала рассчитано на 8 уроков. Методическое пособие может
быть использовано для преподавания в 10-11 классах.
( ЧАСТЬ V)
Литература:
Методическое пособие для учащихся
общеобразовательных
Составила учитель ОИВТ
Школы №73
Богданова О.А.
1.
классов.
2.
3.
4.
2001 г.
Воронеж
5.
Основы информатики и вычислительной техники.
Пробный учебник для 10-11 классов средней
школы. Москва 1994 г.
Кушниренко А.Г., Лебедев Р.А., Сворень Р.А.
Основы информатики и вычислительной техники.
Москва 1990 г.
Поснова М.Ф., Стрикелева Л.В., Поснов Н.Н.
ЭВМ для всех. Для чего и как работают
персональные компьютеры. Минск 1990 г.
Файсман А. Профессиональное программирование
на Турбо Паскале. 1992 г.
Измайлов А.А. Главы из задачника. Информатика
N 33. Сентябрь. 1995 г.
2
1. Тип величины.
Мы уже видели, что в языках программирования есть
величины разных типов, например целые и вещественные.
ЦЕЛЫЕ ВЕЛИЧИНЫ:
цел - алгоритмический язык;
%
- суффикс, добавляемый к имени такой
величины на языке Бейсик;
integer - язык Паскаль.
Значением такой величины может быть любое целое
число из диапазона от -32767 до +32767.
ВЕЩЕСТВЕННЫЕ ВЕЛИЧИНЫ:
вещ - алгоритмический язык;
- - язык Бейсик - у имени переменной нет
суффикса;
real- язык Паскаль.
Значением такой величины может быть любое число,
содержащее дробную часть (дробная часть может быть
равной нулю). Число может быть представлено как действительное число с фиксированной точкой или как действительное число с плавающей точкой.
Тип величины определяет:

какие значения может принимать величина в процессе
выполнения алгоритма;
 в каких выражениях и как эту величину можно использовать.
Для того чтобы ЭВМ могла обрабатывать тексты, она
должна уметь оперировать не только с числами, но и со
словами.
С помощью ЭВМ можно решать весьма разнообразные задачи обработки текстов: от составления платежных ведомостей до автоматической верстки газет.
2. Логические величины.
Логическая величина может принимать только одно из
двух логических значений:
- либо ДА (истина - true) ,
- либо НЕТ (ложь - false).
Служебные слова, используемые при описании такой величины:
лог – алгоритмический язык.
Boolean – язык Pascal.
Это Булевское выражение, которое либо истинно, либо
ложно. Для установки или изменения значения величины
можно использовать команду логического присваивания:
имя величины := условие(логическое выражение);
ПРИМЕР:
M:=(0<t<1) и (A>0);
M:=((t>0) and (t<1)) and (A>0);
При выполнении команды логического присваивания ЭВМ
проверяет записанное справа условие (вычисляет логическое выражение). Условие проверяется так же, как проверяется условие в командах ПОКА и ЕСЛИ. В результате
проверки получается либо ДА(условие соблюдается) ,либо
НЕТ( условие не соблюдается).
Логические величины можно использовать в логических
выражениях :
команды:
если М то k:=k+1 все
пока М или R<2
нц
 ком.цикла
кц
При проверки таких условий ЭВМ просто подставляет
вместо имени логической величины ее значение.
Пример 1 :
Cоставить алгоритм вычисления A :
 NM*NM , если NM>0;
A = 
 NM ,
если NM<=0;
Вариант 1 :
Алгоритмический язык.
АЛГ ПРОВА ( М ЛОГ MN,A ЦЕЛ)
АРГ MN
РЕЗ А
НАЧ
M:= NM>0;
ЕСЛИ М
ТО А:= NM*NM
ИНАЧЕ А:= NM
ВСЕ
КОН
Вариант 2 :
Язык Паскаль.
program proba;
var
3
M :boolen;
MN,A:integer;
begin
write('введи NM -');
readln(NM);
M:=NM>0;
if M
then A:=NM*NM
else A:=NM;
writeln('A=',A);
end.
Пример 2:
Дана последовательность положительных чисел A1, B1,
C1, A2, B2, C2, ... An, Bn, Cn (числа вводятся с клавиатуры), из которых можно составлять треугольники.
Составить алгоритм отвечающий на вопрос: Есть хоть одна тройка чисел, из которой можно составить прямоугольный треугольник?
Алгоритм:
В цикле будем вводить тройки чисел и проверять их.
Ввод троек чисел необходимо закончить в том случае :
а)если ввели всю последовательность чисел;
б)нашли нужную тройку чисел.
Признаком окончанием ввода будет служить ввод Ai
меньшего или равного нулю, так как такого значения
длина стороны треугольника иметь не может. Перед началом просмотра считаем, что нужной тройки чисел в последовательности нет. Значение логической переменной
будет "нет". Если встретим нужную тройку чисел, то поменяем значение переменной на "да".
Вариант 1:
Алгоритмический язык.
АЛГ ЗАДАЧА (А,B,C ВЕЩ)
АРГ A,B,C
РЕЗ сообщение
НАЧ D ЛОГ
ПОВТОРЯТЬ
ВЫВОД (“Введите числа :”)
ВВОД (A,B,C)
D:= (A**A+B**B=C**C) или (B*B+C*C=A*A) или
(C**C+A*A=B*B)
ДО A<0 или D
Если D
ТО вывод(“Есть нужная тройка чисел.”)
ИНАЧЕ вывод(“Нет такой тройки чисел.”)
ВСЕ
КОН
Задание для самостоятельной работы:
Определите значение величины Q после выполнения каждой из следующих команд присваивания :
1) Q:=да
4) Q:= Q или (A+B=C)
2) Q:= не Q
5) Q:= 0>1
3) Q:= A<B<C и Q
6) Q:= 1>0
если перед выполнением A=1,B=2,C=3 ,Q=нет
3. Основные понятия.
Для того, чтобы ЭВМ могла обрабатывать тексты, она
должна уметь оперировать не только с числами, но и со
словами.
СЛОВОМ или СТРОКОЙ в информатике принято считать любую последовательность символов некоторого алфавита.
АЛФАВИТ - упорядоченная определенным образом совокупность взаимно различных знаков.
Число символов в слове назовем его ДЛИНОЙ.
Длина пустого слова равна нулю.
Для работы со словами нам нужно научиться:
1. выделять в слове его части;
2. соединять слова в предложение или новое слово;
3. сравнивать слова:
3.1. а) на равенство и неравенство;
3.2. б) на больше, меньше.
Каждый символ имеет свой код и, поэтому, сравнение
происходит по кодам символов. Латинские буквы закодированы в алфавитном порядке. Русские буквы чаще всего
не закодированы в алфавитном порядке, поэтому операции
сравнения на больше или меньше для них не всегда имеют
смысл. В языке Паскаль русские буквы закодированы по
порядку, но внутри этого ряда вставлены символы.
4. Символьные величины.
Значением символьной величины является один символ:
русская или латинская большая или маленькая буква,
цифра, знак препинания или специальный знак (например,
"+", "*", "/" и другие).
4
Существует также символ " ", который называется пробелом и используется для разделения слов в последовательности символов.
Всего символьная величина может принимать 256 различных значений. В алгоритмическом языке символьные
значения записываются в кавычках, а в языке Паскаль в апострофах.
Служебные слова для описания этого типа переменных:
Алгоритмический язык – СИМ .
Язык Паскаль
- char .
5. Литерные величины.
Значением литерной величины является строка символов
переменной длины.
Служебные слова для обозначения этого типа переменных:
Алгоритмический язык - ЛИТ
Язык Паскаль
- string.
Для обозначения i-го элемента литерной величины T в
алгоритмическом языке и в языке Паскаль используется
запись T[i].
В алгоритмическом языке и языке Бейсик литерные значения записываются в виде строки символов, заключенных
в кавычки, а в языке Паскаль - в апострофах.
После выполнения команды
Т$:="КРОКОДИЛ"
значением литерной величины T$ станет последовательность из 8 символов.
Длина 8 К
Р
О
К
О
Д
И
Л
0
1
2
3
4
5
6
7
8
Машина будет знать номер каждой буквы. И по этому
номеру мы сможем обратится к любой букве нашего слова.
5.1 Количество букв в слове можно узнать с помощью
следующих команд :
LEN(C$) -> возвращает длину слова.
С$="КРОКОДИЛ"
?LEN(C$)
на экране напечатается 8.
?LEN("свет")
на экране напечатается 4.
D=LEN(C$)
D будет равно 8.
5.2 Выделение из слова его части.
MID$(C$,N,M) -> выделить из слова С$ M символов,
начиная с символа с номером N.
F$=MID$(C$,4,3) в F$ будет "КОД".
?MID$("ФИЛЬМ",2,3) на экране напечатается "ИЛЬ".
LEFT$(C$,N) -> взять N символов слева.
?LEFT$(C$,4)
КРОК
RIGHT$(C$,N) -> взять N символов справа.
?RIGHT$(C$,2)
ИЛ
5.3 Соединение нескольких слов в одно.
Для соединения используется знак +.
С$=A$+B$
Пример:
20 A$="зеленый" : B$="крокодил"
30 C$=A$+B$
40 ?C$
На экране будет напечатано
зеленыйкрокодил
Для разделения этих слов 30 строчку переписываем
30 С$=A$+" "+B$
5.4 Очистка слова. (Сделать длину слова равной нулю.)
А$=""
5.5 Команды преобразования численного значения в его
строковое представление и обратные действия.
V$=STR$(x) ->переводит численное значение
в его строковое представление.
20 X=50
30 V$=STR(X)
После выполнения записанных строк переменная
V$ будет содержать V$="50".
X=VAL(V$) -> преобразует строковое значение
в его численное представление.
20 V$="6.7"
30 X=VAL(V$)
После выполнения записанных строк в переменной X будет число 6.7.
5.6 Команды для преобразования типов.
ASC(A$) - получить код первого символа.
CHR$(X) - получить символ по его коду.
X=ASC(A$)
Если A$="R", то переменная X будет равна коду литеры
R.
M$=CHR$(X)
В переменной M$ будет символ, код которого равен X.
5.7 Дополнительные команды.
5
а)
B$=LCASE(A$)
В строке A$ все латинские буквы преобразуются в
строчные;
б)
B$=UCASE$(A$)
В строке A$ все латинские строчные буквы меняет
на заглавные.
Г)
B$=LTRIM$(A$)
B$=RTRIM$(A$)
B$=SPASE$(N)
B$=STRING&(M,N)
6. Алгоритмы для работы с литерными величинами.
6.1 Составить алгоритм, распечатывающий вашу фамилию и
имя разноцветными буквами на экране.
Из введенного с клавиатуры слова выделяем по одной
букве, раскрашиваем эту букву и печатаем.
Обозначения:
В переменной T$ хранится распечатываемый текст. В
переменной D хранится количество распечатываемых букв.
Переменная I показывает, какую букву мы печатаем.
10 REM ФАМИЛИЯ
20 CLS : COLOR 2
30 ?"ПРОГРАММА РАСПЕЧАТЫВАЕТ ТЕКСТ ПО ВЕРТИКАЛИ."
40 ?"ПРОГРАММУ СОСТАВИЛ ИВАНОВ ПЕТЯ"
50 INPUT"ВВЕДИТЕ ТЕКСТ ДЛЯ ПЕЧАТИ ";T$
60 D=LEN(T$)
70 LOCATE 5,10
80 FOR I=1 TO D
90 C=INT(RND(1)*15+1): COLOR C
100 PRINT TAB(10); MID$(T$,I,1)
110 NEXT I
120 END
На экране введенный текст «ИВАНОВ ПЕТЯ» напечатается
по вертикали в столбик. Печать будет производится с 5
строки.
Для печати в строчку необходимо запретить оператору
печати переходить на другую строчку и запретить курсору смещаться на Х позиций в строке.
100 PRINT MID$(T$,I,1);
При печати текста по диагонали необходимо все время
пересчитывать координату Х.
10
20
30
40
50
60
70
80
90
100
105
110
120
REM ФАМИЛИЯ
CLS : COLOR 2
?"ПРОГРАММА РАСПЕЧАТЫВАЕТ ТЕКСТ ПО ДИОГОНАЛИ."
?"ПРОГРАММУ СОСТАВИЛ ИВАНОВ ПЕТЯ"
INPUT"ВВЕДИТЕ ТЕКСТ ДЛЯ ПЕЧАТИ ";T$
D=LEN(T$)
LOCATE 5,10 : X=10
FOR I=1 TO D
C=INT(RND(1)*15+1): COLOR C
PRINT TAB(X); MID$(T$,I,1)
X=X+1
NEXT I
END
6.2 Алгоритм подсчитывающий количество букв "а" в тексте.
Алгоритм программы:
Просматриваем каждую букву текста и сравниваем ее с
буквой "а". Если буквы одинаковые, то включаем счетчик.
Обозначения:
В переменной T$ хранится исходный текст.
В переменной D хранится длина текста.
Переменная I указывает с какой буквой работаем.
Переменная N считает количество сравнений.
10 REM ПОИСК
20 CLS : COLOR 2
30 ?"ПРОГРАММА ПОИСКА БУКВЫ А"
40 ?"ПРОГРАММУ СОСТАВИЛ ИВАНОВ ПЕТЯ"
50 INPUT"ВВЕДИТЕ ТЕКСТ ДЛЯ ПОИСКА ";Т$
60 D=LEN(Т$)
70 N=0
80 FOR I=1 TO D
90 C=MID$(T$,I,1)
100 IF C=”а” THEN N=N+1
110 NEXT I
120 PRINT “КОЛ-ВО БУКВ “;N
130 END
После окончания цикла в переменной N будет содержатся количество букв "а" в тексте.
6.3. Алгоритм, отвечающий на вопрос: "Есть ли буква "А" в тексте?".
Алгоритм программы:
6
В переменной B$ будет содержатся ответ, есть или нет
буква "А" в тексте. Перед началом сравнения будем считать, что нужной буквы нет и значением B$ будет слово
"нет". Будем каждую букву сравнивать с буквой "А". Если сравнение произойдет, то переменной B$ присвоим
значение "да" и закончим поиск. Если не найдем нужной
буквы, то значение переменной B$ останется без изменения.
Обозначения:
T$ -> содержит текст, в которым ищем букву "а".
D -> количество букв в тексте.
I -> номер буквы, которую сравниваем.
B$ -> ответ: есть или нет буква "а".
10 REM ПОИСК
20 CLS : COLOR 2
30 ?"ПРОГРАММА ПОИСКА БУКВЫ А"
40 ?"ПРОГРАММУ СОСТАВИЛ ИВАНОВ ПЕТЯ"
50 INPUT"ВВЕДИТЕ ТЕКСТ ДЛЯ ПОИСКА ";Т$
60 D=LEN(Т$)
70 B$=”В тексте нет буквы А.”
80 I=1
81 REM ПОВТОРЯТЬ
90 С=MID$(T$,I,1)
100 IF C=”а” THEN B$=”В тексте есть буква А.”
100 I=I+1
110 IF I>D OR B$=”В тексте есть буква А.” THEN 120
ELSE 81
120 PRINT B$
130 END
После окончания цикла в переменной B$ будет содержатся нужный ответ.
6.4. Алгоритм, проверяющий: «Является ли введенный текст перевертышем?".
В переменную Т$ введем проверяемый текст.
В переменную RТ$ наберем текст из переменной T$ наоборот.
К А З А К
Переменная T$
1 2 3 4 5
К
5
А
4
З
3
А
2
К
1
Переменная RT$
10 REM Перевертыш
20 CLS : COLOR 2
30 ?"Слово-перевертыш"
40 ?"ПРОГРАММУ СОСТАВИЛ ИВАНОВ ПЕТЯ"
50 INPUT"ВВЕДИТЕ ТЕКСТ ";Т$
60 D=LEN(Т$)
70 RT$=””
80 FOR I=D TO 1 STEP -1
90 С=MID$(T$,I,1)
100 RT$=RT$+C
110 NEXT I
120 IF RT$=T$ THEN PRINT “Слово перевертыш.” ELSE
PRINT “Слово не перевертыш.”
130 END
После окончания цикла в переменной RT$ будет содержатся введенный текст наоборот.
6.5. Алгоритм, шифрующий введенный текст путем обмена символов.
Алгоритм программы:
В переменную Т$ введем исходный текст.
В переменную RТ$ наберем зашифрованный текст.
С
1
Т
2
О
3
Л
4
Т
2
С
1
Л
4
О
3
Переменная T$
Переменная RT$
Из переменной Т$ выбираем по два символа и записыем
их в переменную RT$ меняя местами. Если в переменной
T$ нечетное количество символов, то добавляем в нее
один символ. Поэтому в программу необходимо включить
проверку на четность D.
Если D/2=INT(D/2)то D четное число.
Если D/2<>INT(D/2)то D нечетное число и необходимо
выполнить команды T$=T$+”*” и D=D+1.
10 REM Перестановка
20 CLS : COLOR 2
7
30 ?"Перестановка символов в слове."
40 ?"ПРОГРАММУ СОСТАВИЛ ИВАНОВ ПЕТЯ"
50 INPUT"ВВЕДИТЕ ТЕКСТ ";Т$
60 D=LEN(Т$)
65 IF D/2<>INT(D/2) THEN T$=T$+”*”:D=D+1
70 RT$=””
80 FOR I=1 TO D-1 STEP 2
90 С=MID$(T$,I,1): С1=MID$(T$,I+1,1)
100 RT$=RT$+C1+C
110 NEXT I
120 PRINT “Зашифрованное слово:”;RT$
130 END
После окончания цикла в переменной RT$
держатся зашифрованное слово.
будет со-
6.6 Алгоритм, меняющий в слове букву "а" на букву "о". Алгоритм, удаляющий букву "а" из слова. Алгоритм, вставляющий
символ "*" после буквы "a". Алгоритм вставляющий "*" перед
буквой "а".
Алгоритмы замены, удаления и вставки нужной буквы
оформим как вспомогательные. В основной программе
найдем букву и вызовем нужный вспомогательный алгоритм.
Основной алгоритм:
10 REM программа
20 CLS : COLOR 2
30 PRINT "ПРОГРАММА РАБОТЫ C БУКВАМИ"
40 PRINT "ПРОГРАММУ СОСТАВИЛ ПЕТРОВ ВАСЯ"
50 INPUT "ВВEДИ ТЕКСТ - ";T$
60 D=LEN(T$)
80 I=1
81 REM ПОВТОРЯТЬ
90 С$=MID$(T$,I,1)
100 IF С$="А" THEN GOSUB 400
110 I=I+1
120 IF I>D THEN 130 ELSE 81
130 PRINT "РЕЗУЛЬТАТ - ";T$
140 END
ПРИМЕЧАНИЕ: В программе использован цикл "ПОВТОРЯТЬ", так как при удалении букв или добавлении длина
слова все время меняется. Для алгоритма замены может
быть использован цикл "ДЛЯ".
Вспомогательный алгоритм для удаления буквы:
600 REM УДАЛЯЕМ БУКВУ
610 IF I=1 THEN T$=RIGHT$(T$,D-1):GOTO 640
620 IF I=D THEN T$=LEFT$(T$,D-1):GOTO 640
630 T$=LEFT$(T$,I-1)+RIGHT$(T$,D-I)
640 D=D-1:I=I-1
650 RETURN
Вспомогательный алгоритм для замены букв:
400 REM ЗАМЕНА БУКВ
410 IF I=1 THEN T$="О"+RIGHT$(T$,D-1):GOTO 440
420 IF I=D THEN T$=LEFT$(T$,D-1)+"О":GOTO 440
430 T$=LEFT$(T$,I-1)+"О"+RIGHT$(T$,D-I)
440 RETURN
Вспомогательный алгоритм для добавления символов
после найденной буквы:
500 REM ДОБАВЛЕНИЕ ПОСЛЕ
510 IF I=D THEN T$=T$+"*":GOTO 530
520 T$=LEFT$(T$,I)+"*"+RIGHT$(T$,D-I)
525 D=D+1:I=I+1
530 RETURN
Вспомогательный алгоритм для добавления символов
перед найденной буквой:
550 REM ДОБАВЛЕНИЕ ДО
560 IF I=1 THEN T$="*"+T$:GOTO 585
570 F$=LEFT$(T$,I-1)+"*"+RIGHT$(T$,D-I+1)
585 D=D+1:I=I+1
590 RETURN
7 Алгоритмы, работающие с кодами букв.
7.1 Составить алгоритм, отвечающий на вопрос: "Есть ли цифры в слове"?
Во время проверки совсем необязательно каждый символ
сравнивать с 0,1,2,.9. Цифры как и маленькие и большие
латинские буквы закодированы по порядку. Поэтому, если
код выбранного символа больше или равен коду нуля и
меньше или равен коду девяти, то можно утверждать, что
это цифра.
10 REM ПОИСК
20 CLS : COLOR 2
30 PRINT"ПОИСК ЦИФР В СЛОВЕ"
40 PRINT"ПРОГРАММА ИВАНОВОЙ КАТИ"
50 INPUT"ВВЕДИ СЛОВО ";T$
8
60 D=LEN(T$)
70 B$="НЕТ ЦИФР"
80 FOR I=1 TO D
90 C$=MID$(T$,I,1)
100 IF ASC(C$)>=ASC("0") AND ASC(C$)<=ASC("9") THEN
B$="ЕСТЬ ЦИФРА":GOTO 120
110 NEXT I
120 PRINT "В СЛОВЕ ";B$
130 END
ПРИМЕЧАНИЕ:
а) если код символа больше или равен ASC("a") и меньше
или равен ASC("z"), то можно утверждать, что наш символ маленькая латинская буква;
б) если код символа больше или равен ASC("A") и меньше
или равен ASC("Z"), то можно утверждать, что наш символ большая латинская буква;
Подобные условия могут быть составлены и для русских
букв. Но эти условия мы должны согласовать с алфавитом. В QBASIC русские буквы закодированы по порядку.
7.2. В слове есть маленькие латинские буквы. Переписать его в другое слово, заменив все маленькие латинские буквы на большие.
При составлении алгоритма используем то, что разница
между кодами маленьких и больших латинских букв постоянна.
Например
ASC("A")-ASC("a")=ASC("D")-ASC("d")
Коды маленьких латинских букв меньше кодов больших
латинских букв в Бейсике. (Для Паскаля наоборот.)
10 REM ПЕРЕЗАПИСЬ
20 CLS : COLOR 2
30 PRINT"ЗАМЕНА БУКВ В СЛОВЕ"
40 PRINT"ПРОГРАММА ИВАНОВОЙ КАТИ"
50 INPUT"ВВЕДИ СЛОВО ";T$
60 D=LEN(T$): RT$=””
70 R=ASC("A")-ASC("a")
80 FOR I=1 TO D
90 C$=MID$(T$,I,1)
100 IF ASC(C$)>=ASC("a") AND ASC(C$)<=ASC("z") THEN
C$=CHR$(ASC(C$)+R)
105 RT$=RT$+C$
110 NEXT I
120 PRINT "НОВОЕ СЛОВО ";RT$
130 END
8. Алгоритмы шифровки и дешифровки текстов.
8.1 Тарабарская грамота.
Способ шифровки следующий. Все согласные буквы русской азбуки записываются в два ряда; одна половина
букв вверху, другая половина - внизу, причем в обратном порядке (одна буква под другой).
Б В Г Д Ж З К Л М Н
Щ Ш Ч Ц Х Ф T С Р П
При шифровки слов согласные взаимно заменялись, а
остальные буквы и символы оставались на своих местах
без изменения.
Разработка алгоритма шифровки.
T$ -> в эту переменную с клавиатуры вводится текст
для шифровки или дешифровки.
RT$ -> в этой переменной будет находится результат.
M1$ -> эта переменная будет хранить буквы верхнего
ряда.
M2$ -> эта переменная будет хранить буквы нижнего
ряда.
Организуем цикл, выделяющий по одной букве из переменной T$. Выделенную букву поищем в переменной M1$.
Если найдем, то к переменной RT$ присоединим букву с
этим же номером из переменной M2$.
Если в переменной M1$ ничего не нашли, то поищем в
переменной M2$. Если найдем в переменной M2$, то к результату присоединим букву с этим же номером из переменной M1$.
Если в переменных M1$ и M2$ ничего не нашли, то присоединяем выделенный символ без изменения.
По одному и тому же алгоритму можно зашифровывать и
расшифровывать текст.
10 REM ШИФРОВКА И ДЕШИФРОВКА
20 CLS : COLOR 3
30 ?"ПРОГРАММА ШИФРОВКИ И ДЕШИФРОВКИ "
40 ?"ПРОГРАММУ СОСТАВИЛ ИВАНОВ ПЕТЯ"
50 M1$="БВГДЖЗКЛМН"
60 M2$="ЩШЧЦХФТСРП"
70 INPUT "Введи текст ";T$
80 RT$=""
90 D=LEN(T$)
100 REM ВЫДЕЛЯЕМ ИЗ ТЕКСТА БУКВЫ
110 FOR I=1 TO D
9
120
130
140
150
160
170
180
190
200
210
220
230
240
250
260
270
REM ВЫДЕЛИЛИ I-ю БУКВУ
C$=MID$(TEXT$,I,1)
REM ИЩЕМ ЕЕ В ВЕРХНЕЙ СТРОКЕ
FOR K=1 TO 10
IF C$=MID$(M1$,K,1) THEN RT$=
RT$+MID$(M2$,K,1):GOTO 240
NEXT K
REM ИЩЕМ ЕЕ В НИЖНЕЙ СТРОКЕ
FOR K=1 TO 10
IF C$=MID$(M2$,K,1) THEN RT$=
RT$+MID$(M1$,K,1):GOTO 240
NEXT K
REM НИГДЕ НЕ НАШЛИ
RT$=RT$+C$
NEXT I
REM ПЕЧАТАЕМ РЕЗУЛЬТАТ
PRINT"РЕЗУЛЬТАТ - ";RT$
END
8.2. Шифровка текста по ключевой фразе.
Пусть дана ключевая фраза "ОТЫЩИ ВСЕМУ НАЧАЛО И ТЫ
МНОГОЕ ПОЙМЕШЬ. КОЗЬМА ПРУТКОВ". В ключевой фразе слова разделяются одним пробелом и пробел считается тоже
символом. По этой фразе мы желаем зашифровать текст
"ШКОЛА". Выписываю номера букв в ключевой фразе:
37, 41, 1, 17, 14
Этот набор цифр и будет нашей шифровкой. Конечно в
ключевой фразе должны содержатся все нужные нам буквы
и символы.
10 REM ШИФРОВКА
20 COLOR 3, 1: CLS
30 PRINT "ПРОГРАММУ СОСТАВИЛ ИВАНОВ ПЕТЯ"
40 PRINT "ШИФРУЕМ ТЕКСТ ПО КЛЮЧЕВОЙ ФРАЗЕ"
50 KL$ = "ОТЫЩИ ВСЕМУ НАЧАЛО И ТЫ МНОГОЕ ПОЙМЕШЬ.
КОЗЬМА ПРУТКОВ"
60 INPUT "ВВЕДИ ТЕКСТ:"; T$
70 D = LEN(T$): D1 = LEN(KL$)
80 FOR I = 1 TO D
90 J = 0
100 REM ПОВТОРЯТЬ
110 J = J + 1
120 IF MID$(T$,I,1) = MID$(KL$,J,1) THEN 130 ELSE 100
130 PRINT J; ",";
140 NEXT I
150 END
9.Алгоритмы организации бегущего текста.
9.1 Составить алгоритм, печатающий бегущею строку в
середине экрана.
Пусть по экрану пробежит срока - РЕКЛАМНАЯ ПАУЗА. В
литерной переменной запомним ее содержимое.
ST$="РЕКЛАМНАЯ ПАУЗА".
Строка будет двигаться справа налево. Текст должен
въезжать на экран и выезжать.
10 REM РЕКЛАМА
20 COLOR 3, 1: CLS
30 PRINT "ПРОГРАММУ СОСТАВИЛ ИВАНОВ ПЕТЯ"
40 PRINT "БЕГУЩАЯ СТРОКА"
50 ST$ = "РЕКЛАМНАЯ ПАУЗА"
60 D = LEN(ST$)
70 Y = 15
80 FOR X = 79 TO -D STEP -1
90 FOR I = 1 TO D
100 C = INT(RND(1) * 15 + 1)
110 COLOR C
120 IF X + I > 1 AND X + I < 79 THEN LOCATE Y, X + I:
PRINT MID$(ST$, I, 1)
130 NEXT I
140 FOR K = 1 TO 25000: NEXT K
150 CLS
160 NEXT X
170 END
9.2 Составить алгоритм, печатающий бегущею строку
начиная с левого угла и смещающеюся к правому углу экрана.
10 REM БЕГУЩАЯ СТРОКА
20 CLS : COLOR 2
30 PRINT "БЕГУЩАЯ СТРОКА "
40 PRINT "ПРОГРАММУ СОСТАВИЛА ИВАНОВА СВЕТА"
50 INPUN "ВВЕДИТЕ ТЕКСТ - ";T$
60 CLS
70 D=LEN(T$)
80 X=1
90 FOR Y=1 TO 30
100 FOR I=1 TO D
110 C=INT(RND(1)*15+1): COLOR C
10
130 IF X+I >0 AND X+I<79 THEN
LOCATE Y,X+I:PRINT MID$(T$,I,1)
140 NEXT I
150 FOR K=1 TO 1000:NEXT K
160 X=X+1
170 CLS
180 NEXT Y
190 END
Описание программы:
Y - номер строки, на которой печатается текст.
X - номер столбика, с которого на строке
начинается печать бегущего текста.
I - номер выделенной буквы для печати.
T$- переменная, в которой находится бегущей
текст.
На строке с номером Y от позиции X разноцветными
буквами печатается введенный текст. Причем печатается
та его часть, которая умещается на строке. Напечатанный текст стирается а затем печатается на новой строке. Начало печати X все время смещается.
ВОПРОСЫ:
1. Что такое алфавит? Сколько и какие символы входят
в него?
2. Что такое слово? Есть ли понятие предложения?
3. Что такое длина слова?
4. Как происходит сравнение слов на равенство?
5. Как слова сравниваются на больше и меньше?
6. Какие значения принимает логическая переменная?
7. Что за команда "логическое присваивание"?
8. Что мы называем логическим выражением?
9. Как машина работает с логическими переменными?
10. Какие значения принимает символьная переменная?
11. Какие значения принимает литерная переменная?
12. Как литерная переменная располагается в памяти
машины?
13. Как можно обратится к конкретному символу литерной переменной?
14. Как определить длину литерной переменной?
15. Как выделить из литерной переменной части?
16. Как узнать код любого символа и как по коду получить символ?
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ:
Задача 1. Определить, является ли заданный текст
а) правильной записью целого числа.
б) правильной записью целого числа, кратного 5;
в) правильной записью целого числа, кратного 10;
г) правильной записью четного целого числа;
д) правильной записью нечетного целого числа;
Задача 2. Напечатать заданный текст, удалив из
него все пробелы.
Задача 3.Напечатать заданный текст, заменив все
"+" на "-".
Задача 4. Напечатать заданный текст, удалив из
него по одному символу, стоящему за
буквой "а".
Задача 5.Напечатать из заданного текста сначала
цифры, а потом остальные символы.
Задача 6. Строка вводится посимвольно. Конец ввода
".". Указать номер первой запятой.
Задача 7. Напечатать из заданного текста все символы:
а) от начала до первой "*";
б) от первой "*" и до конца;
в) от первой "*" и до второй "*".
Задача 8. Напечатать заданный текст заменив все маленькие латинские буквы большими латинскими буквами.
Задача 9. Проверить, есть ли в заданном тексте маленькие латинские буквы.
Задача 10. В заданном тексте удвоить "=", а "-" удалить.
Задача 11. Проверить, есть ли во вводимом посимвольно
тексте цифры. Окончание ввода ".".
Задача 12. Проверить, является ли введенный текст правильной записью десятичной дроби.
Задача 13. Проверить :
а) есть ли в тексте буквы из слова "кот";
в) сколько раз встречается в тексте каждая
буква из слова "кот".
Задача 14. В тексте допущена ошибка. Вместо "мишки"
везде напечатано слово "мышка". Исправить ошибку.
Задача 15. С клавиатуры вводится строка из 6 символов
(ММДДГГ).
а) определить по вводимой дате день недели ( 1
января считать понедельником );
11
б) распечатать дату, заменив номер месяца на
наименование.
ПРИМЕР:
Вводится -> 140396
а) 102496 - четверг
б) 24 октября 1996 года
Задача 16. Составить программу, которая вводит
текст телеграммы и ее вид (простая или срочная) и вычисляет ее стоимость.
-одна буква простой телеграммы стоит 10 рублей;
-одна буква срочной телеграммы стоит 20 рублей;
За подачу простой телеграммы 10 рублей, а
за подачу срочной телеграммы 20 рублей.
Примечание: За пробелы деньги не берутся.
Задача 17. Текст вводится посимвольно и записывается в
литерную переменную. Записать в литерную переменную
только не повторяющиеся символы.
Задача 18. Проверить, есть ли в введенном тексте пара
одинаковых символов.
Задача 19. Строка вводится по одному символу. Есть ли
среди введенных символов группа из рядом трех стоящих
точек.
Задача 20. Написать алгоритм шифровки и дешифровки
текста в случае, если в добавлении к согласным буквам
гласные тоже заменяются по аналогичному для согласных
правилу:
А Е Е И O
Я Ю Э Ы У
Задача 21. Написать алгоритм шифровки и дешифровки
текста в случае, если гласные буквы заменяются на цифры: АЕЕИОЯЮЭЫУ
0987654321
Остальные символы остаются на своих местах.
Задача 22. Написать алгоритм шифровки и дешифровки
текста для случая, когда гласные и согласные буквы заменяются в соответствии с таблицей:
БВГДЖЗКЛМНПРСТФ
АУИОУЫЭЮЯЩШЧЦХЬ
Задача 23. Написать алгоритм шифровки, пользуясь методом циклического сдвига букв алфавита.
А Б В Г Д Е Ж З ... Э Ю Я
1 2 3 4 5 6 7 8
30 31 32
Сдвигаемся на 3 буквы.
А меняем на Г
Б меняем на Д
.............
Э меняем на А
Ю меняем на Б
Я меняем на В
a) сдвиг на 3 буквы;
б) сдвиг на 1 букву;
в) сдвиг на 5 букв.
Задача 24. Написать алгоритм задачи 13 для сдвига на
N букв. ( N вводим с клавиатуры.)
Задача 25. Написать алгоритм для расшифровки текста
зашифрованного по алгоритму:
1) задачи 13 а), б), в)
2) задачи 14
Задача 26. Составить следующий алгоритм:
а) Строка выезжает на середину экрана и останавливается.
б) Строка появляется на экране, а после этого буквы
начинают падать по одной на нижнюю строчку экрана.
в) Буквы сыпятся с верхней части экрана и встают на
свои места в тексте.
г) Текст появляется на середине экрана, а затем
уезжает влево (вправо) за экран.
д) Текст движется на экране по диагонали сверху
вниз (снизу вверх).
е) Текст перемещается с верхней строчки экрана в
нижнею .
ж) Строка перемещается с нижней строчки экрана в
верхнюю.
Задача 27. Составить алгоритм, удаляющий из введенного
слова все цифры.
Задача 28. В слове перед первой открывающийся скобкой
пропущен:
а) знак "+";
б) слово sin;
в) еще одна открывающая скобка.
Составить алгоритм добавления.
Задача 30. После математической функции sin в
слове пропущено:
а) открывающая скобка;
б) переменная А;
Cоставить алгоритм вставки.
Задача 31. Заменить в слове все маленькие латинские
буквы на знак "*".
12
Задача 32. Составит алгоритм, удваивающий все гласные
буквы.
Задача 33. Составить алгоритм, удаляющий из слова все
скобки.
Задача 34. Составить алгоритм, меняющий все буквы "r"
на "R".
Задача 35. Подсчитать в слове количество маленьких латинских букв.
Задача 36. Составить алгоритм, меняющий первую букву
"r" на слово "радиус".
Содержание:
1. Тип величины. .............................................................................................. 2
2. Логические величины. ................................................................................ 2
3. Основные понятия. ...................................................................................... 3
4. Символьные величины. ............................................................................... 3
5. Литерные величины. ................................................................................... 4
6. Алгоритмы для работы с литерными величинами. .................................. 5
6.1 Составить алгоритм, распечатывающий вашу фамилию и имя
разноцветными буквами на экране. ...................................................... 5
6.2 Алгоритм подсчитывающий количество букв "а" в тексте. ..... 5
6.3. Алгоритм, отвечающий на вопрос: "Есть ли буква "А" в
тексте?". ...................................................................................................... 5
6.4. Алгоритм, проверяющий: «Является ли введенный текст
перевертышем?". ....................................................................................... 6
6.5. Алгоритм, шифрующий введенный текст путем обмена
символов...................................................................................................... 6
6.6 Алгоритм, меняющий в слове букву "а" на букву "о".
Алгоритм, удаляющий букву "а" из слова. Алгоритм,
вставляющий символ "*" после буквы "a". Алгоритм
вставляющий "*" перед буквой "а". ..................................................... 7
7 Алгоритмы, работающие с кодами букв. ................................................... 7
7.1 Составить алгоритм, отвечающий на вопрос: "Есть ли цифры
в слове"? ...................................................................................................... 7
8. Алгоритмы шифровки и дешифровки текстов. ........................................ 8
8.1 Тарабарская грамота. ......................................................................... 8
8.2. Шифровка текста по ключевой фразе. ........................................... 9
9.Алгоритмы организации бегущего текста. ................................................. 9
9.1 Составить алгоритм, печатающий бегущею строку в
середине экрана. .......................................................................................... 9
9.2 Составить алгоритм, печатающий бегущею строку начиная
с левого угла и смещающеюся к правому углу экрана. .......................... 9
ВОПРОСЫ: .................................................................................................... 10
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ: ................................. 10
Содержание: ................................................................................................... 12
Download