Алгоритмика в теории и практике
.pdf
12. Составьте программу для выполнения рисунка из пяти фигур разного цвета и размера.
Решение:
Cls Screen 9
for k=1 to 50 step 10 line(100,200)-(200+k,150-k) next k
13. По представленной блок-схеме составьте программу и полу- чить результат вычисления.
51
4. Операторы цикла
Решение.
Cls: S=0: K=0
For A=12 to 99 S=S+A:K=K+1:Next A
Sr=S/K:Print ''среднее арифметическое='';Sr
52
6. Символьные переменные
При решении различного рода задач наряду с вычислительными операциями с целыми и вещественными числами, широко используется обработка символьных величин. В Qbasic имеется достаточный набор операторов и функций, с помощью которых можно работать с символьными величинами. В этом разделе будут перечислены часто употребляемые операторы.
Функция MID (A$,k, n) — может использоваться для вырезки части текста символьной строки или ее замены, где A$ — имя символьной переменной, k — порядковый номер символа, с которого начинается вырезка или замена, n- количество символов для вырезки или замены.
Предположим A$="ИНФОРМАТИКА"
В$= MID$(A$,3,5) данная запись предполагает, что в символьную переменную B$, переписываются из символьной переменной A$ символы с 3 по 7 включительно.
MID$(A$,8,4) +"ЦИЯ " — данная запись оператора заменяет символы в строке. После этой операции символьная переменная A$ будет иметь значение равное слову "ИНФОРМАЦИЯ"
B$=LEFT (k, A$) переписывает k символов слева из символьной переменной A$ в символьную переменную B$
B$=RIGHT (k, A$) переписывает k символов справа из символьной переменной A$ в символьную переменную B$
N= LEN (A$) данная функция определяет длину символьной переменной A$, возвращает значение равное количеству символов в символьной переменной A$, учитывая и невидимые пробелы. Необходимо помнить, что длина символьной переменной не должна превышать 256 символов.
Примеры решения задач по теме
1. Из слова гастроном получите слова гном, нора, рана.
Решение:
Cls
a$= ''гастроном''
b$=mid$ (a$,1,1)+mid$ (a$,7,3)
c$=mid$ (a$,7,2)+mid$ (a$,5,1)+ mid$ (a$,2,1)
d$= mid$ (a$,5,1)+mid$ (a$,2,1)+ mid$ (a$,7,1)+ mid$ (a$,2,1)
53
6. Символьные переменные
Print; a$,b$,c$
2. Из слов страх, белка, цыпленок получите слово: столбец.
Решение:
Cls
a$= ''белка'' b$=цыпленок c$=страх
d$= mid$ (c$,2,2)+mid$ (b$,7,1)+ mid$ (b$,4,1)+ mid$ (a$,1,2)+ mid$ b$,1,1)
Print d$
3. Посчитайте количествово букв «o» в слове, введенном с клавиатуры.
Решение:
Cls: s=0
Input ''введите слово''; a$
For k = 1 to len(a$)
If mid$ (a$,k,1)= ''o'' then s=s+1
Next k
Print ''êîë-âî áóêâ î=";S
Составьте программу, переписывающую любое введенное с клавиатуры слово с конца
Пример:
ÏÎËÊ ÊËÎÏ
Решение:
Cls: s=0
B$=""
Input ''введите слово''; a$
For k= len(a$) to 1 step -1
B$=B$+ mid$ (a$,k,1)
Next k
Print B$
5. Составьте программу, которая введенное с клавиатуры слово выводить в верхней строке экрана, а затем по буквам переставляет в нижнюю (падающие буквы).
54
Решение:
CLS
INPUT ''Введите слово''; A$
CLS : Locate 1, 10: Print A$ For k = 1 to len(A$)
b$ = mid$(a$, k, 1): mid$(a$, k, 1)='' '' Locate 1. 10: Print A$
For n = 2 to 20 step 2 Locate n, k + 10: print b$ For z = 1 to 100000:next z
Locate n, k + 10: print '' ''
next n
Locate 23, k + 10: print b$ next k
55
7. Одномерные массивы
Часто в процессе обработки данных приходится их сначала свести в таблицу, а затем производить различные математические или статистические операции. Например, для определения средней температуры прошедшего месяца, количества выпавших осадков за месяц, определения призовых мест по итогам соревнования и т. п., необходимо эти данные для большей наглядности, читаемости и удобства сравнения занести в таблицу.
Для таких целей в программировании предусмотрена работа с массивами, которые могут быть одномерные и многомерные.
Одномерные массивы можно представить как строку переменных, двумерные — как таблицу, в которой данные располагаются в строках и столбцах.
По типу данных представленных в массиве их классифицируют как числовые и символьные.
Каждый массив должен иметь имя. Размер массива определяется в начале программы с помощью оператора DIM
Например, для массива с именем M, в который предполагается занести результаты по прыжкам в длину 10 спортсменов, необходимо определить размер в 10 элементов, т. е. записать DIM M(10).
Оператор DIM по умолчанию присваивает всем числовым переменным нулевые значения, а символьным — значение текстового пробела.
Доступ к элементам массива осуществляется указанием порядкового номера, который называется индексом элемента массива. Индекс может быть только целым числом, его нельзя путать со значением элемента массива.
В данном примере массив с именем М имеет 10 элементов. Цифры 1, 2, 3 .... — это индексы элементов массива. Значение элемента массива, например, c индексом 3 будет равно 36.
56
Прежде чем работать с массивом данных его необходимо заполнить. Данные можно вводить с клавиатуры, определять формулу заполнения массива, закономерность (для рядов чисел) или иметь уже данные, которые хранятся либо определяются в процессе работы программы. При отладки рабочей версии часто используют датчик случайных чисел для заполнения массива.
Для присваивания элементам массива значений и вывода на экран целесообразно использовать цикл, в котором переменной будет являтся индекс элемента массива, а длина массива определяет количество повторений.
Ниже приведены примеры различных способов заполнения и вывода на экран элементов одномерного массива, а также некоторые часто используемые операции при работе с табличными данными.
Указания: При рассмотрении данной темы необходимо чтобы учащиеся обязательно усвоили способы заполнения массивов и умели находить сумму элементов всего массива или сумму элементов удовлетворяющих определенному критерию, находить среднее значение элементов массива, минимальный и максимальный элементы, менять местами элементы массива.
Примеры решения задач по теме
Способы заполнения массивов:
1 способ — датчиком случайных чисел
Dim A(10)
For k=1 to 10
A(k)=int(rnd(1)*150)
Print A(k);
Next k
2 способ — ввод с клавиатуры.
Dim A(10)
For k=1 to 10
Input ''введите элемент массива'';A(k)
Next k
3 способ — с использованием данных, хранящихся в операторе DATA
Dim A(10)
DATA 10, 18, -6, 0, 1,12,5,7,50,10,64
57
7. Одномерные массивы
For k=1 to 10
Read A(k)
Print A(k);
Next k
4 способ — по определенной закономерности (например, каждый последующий элемент начиная со второго больше предыдущего в два раза).
Dim A(10)
Input ''введите 1 элемент массива'';A(1)
For k=2 to 10
A(k)=A(k-1) * 2
Print A(k);
Next k
Нахождение суммы элементов массива и среднего арифметического
Dim A(10)
S=0
For k=1 to 10: A(k)=int(rnd(1)*150)
Print A(k);
S=S+ A(k):Next k SR= S/10
Print ''Сумма элементов массива равна''; S
Print ''Среднее значение элементов массива равно ''; SR
Нахождение минимального и максимального элемента массива
Dim A(10) For k=1 to 10
A(k)=int(rnd(1)*150):Print A(k);:Next k min = A(1): max = A(1)
For k=1 to 10 |
|
If (A(k) >max |
then max=A(k) |
If (A(k) <min |
then min=A(k) |
Next k |
|
Print ''максимальный элемент массива равен ''; max
Print ''минимальный элемент массива равен '';min
Перестановка минимального и первого элементов массива
Dim A(10)
For k=1 to 10
A(k)=int(rnd(1)*150):Print A(k);:Next k
58
max = A(1) For k=1 to 10
If (A(k) >max then max=A(k):km=k Next k: Print
Print ''максимальный элемент массива равен ''; max
A(km)= A(1): A(1)= max
For k=1 to 10 Print A(k);:Next k
1. Сформируйте и выведите массив из 9 элементов, каждые 3 последовательных элемента которого составлены по следующему правилу:
1-ый — числу введенному с клавиатуры
2-ой — случайному числу
3-ий — полусумме двух предыдущих
Решение:
Dim A(9)
For k=1 to 9 step 3
Input «введите элемент массива»;A(k)
A(k+1)= int(rnd(1)*10)
A(k+2)=A((k)-A(k-1))/2
Next k
For k=1 to 9
Print A(k);
Next k
2. Сформируйте массив датчиком случайных чисел содержащий
15 элементов. Получите новый массив, каждый элемент которого равен сумме соответствующего исходного элемента и его квадрата. В полученном массиве найдите максимальный элемент и его номер
Решение:
Dim A(15),B(15) For k=1 to 15
A(k)=int(rnd(1)*150)
B(k)=A(k)+(A(k))^2 Print A(k);B(k) Next k
max = B(1):n=1
59
7. Одномерные массивы
For k=1 to 10
If (B(k) >max then max=B(k):n=k Next k
Print ''максимальный элемент массива B равен ''; max, ''его номер'';n
3. Задайте массив из 10 элементов с помощью датчика случайных чисел и поменяйте знак всем нечетным элементам массива на противоположный. Выведите на экран исходный и измененный массивы.
Решение:
Dim A(10)
For k=1 to 10
A(k)=int(rnd(1)*150)
Print A(k);
Next k: Print
For k=1 to 10
If A(k) mod 2<>0 then A(k)=-A(k)
Print A(k);
Next k
4. Заполните массив из 10 элементов датчиком случайных чи- сел и все элементы, которые больше 55 замените максимальным. Выведите на экран исходный и измененный массив.
Решение:
Dim A(10)
For k=1 to 10
A(k)=int(rnd(1)*150)
Print A(k);
Next k: max=A(1): Print
For k=1 to 10
If (A(k) >max then max=A(k)
Next k
Print ''максимальный элемент массива равен ''; max
For k=1 to 10
If A(k) >55 then A(k)=max
Print A(k);
Next k
60
