Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмика в теории и практике

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
475 Кб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]