Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Операции, производимые над строковыми переменными



а) присвоение текстовой константы:

A$=" СТРОКА СИМВОЛОВ"

T$=" " - очистка строки

б) печать значений строковых переменных:

PRINT A$, T$

в) склейка двух строк:

T$=A$+B$

P$=" СЛОВО: " +P$

C$=" СКЛЕЙКА" +" " +" СТРОК"

г) ввод значений строковых переменных с клавиатуры:

INPUT A$, B$

- при вводе строку можно не заключать в кавычки.

 

Основные функции работы с символьными переменными:

VAL(A$) - перевод строки в число;

CHR$(L) - выдает символ по коду данного числа;

ASC(S$) - выдает код первого символа строки

SRT$(K) - преобразует число в символьную строку, которая является записью в виде последовательности десятичных цифр;

LEN(F$) - выдает длину символьного выражения;

LEFT$( F$, N) - вырезает заданное количество символов слева;

RIGHT$ (F$, N) - вырезает заданное количество символов справа;

MID$(F$, N1, N2) - вырезка из строки заданного количества символов с заданного символа

Примеры решения задач.

Пример 1. Подсчитать, сколько раз среди символов заданной строки встречается буква " F".

CLS

INPUT " Введите строку - "; S$

K=0

FOR I=1 TO LEN(S$)

IF MID$(S$, I, 1)=" F" THEN K=K+1

NEXT I

PRINT " Буква F встретилась "; K; " раз(а) "

END

 

Пример 2. Составить программу, которая печатает заданное слово задом наперед.

CLS

INPUT " Введите слово - "; S$

FOR I=LEN(S$) TO 1 STEP -1

PRINT MID$(S$, I, 1);

NEXT I

END

 

Пример 3. Выдать номер позиции заданной строки, в которой впервые встречается буква " в". Если такой буквы в строке нет, выдать сообщение об этом.

CLS: INPUT " Введите строку - "; S$

K=0

FOR I=1 TO LEN(S$)

IF MID$(S$, I, 1)=" в" THEN 80

NEXT I

PRINT " Буквы в нет в заданной строке"

GOTO 90

80 PRINT " Первая буква в встретилась в "; I; " -й позиции"

90 END

Задачи на работу с символьными переменными

1. Подсчитать сколько раз среди символов заданной строки встречается буква «F».

2. Составить программу, которая печатает заданное слово задом наперед.

3. Подсчитать количество цифр в заданной строке.

4. Подсчитать количество слогов в слове.

5. Проверить, является ли заданное слово палиндромом («перевертышем», как слова КАЗАК, ШАЛАШ и т.д.)

6. Среди натуральных чисел от 1 до n найти все такие, запись которых совпадает с последними цифрами записи их квадратов (5 и 25, 6 и 36, 25 и 625 и т.д.)

7. Выдать номер позиции заданной строки, в которой впервые встречается буква «в». Если такой буквы в строке нет, выдать сообщение об этом.

8. Выдать номер позиции заданной строки, в которой в пятый раз встречается буква «W». Если такой позиции нет, выдать сообщение об этом.

9. В заданной строке подсчитать отдельно количество символов «а» и «b».

10. Из заданной строки получить новую, заменив все запятые на точки. Распечатать полученную строку.

11. Из заданной строки получить новую, выбросив из нее все точки. Распечатать полученную строку.

12. Из заданной строки получить новую, удалив все звездочки («*») и повторив каждый символ, отличный от звездочки. Распечатать полученную строку.

13. Из заданной строки получить новую, заменив в ней все символы после первой звездочки («*») знаком «-» (если в строке нет звездочек, оставить ее без изменения). Распечатать полученную строку.

14. Из заданной строки получить новую, удалив из нее все двоеточия, предшествующие первой точке, и заменив в ней все знаки «+» после первой точки знаком « - » (если в строке нет точек, добавьте одну в конце). Распечатать полученную строку.

15. В заданной строке поменять местами первую букву « а » и первую букву « b ». Если хотя бы одной из них нет, напечатать сообщение, иначе распечатать полученную строку.

16. Определить наименьшую длину слова в заданной строке (считать, что слова отделяются друг от друга пробелами).

17. Из заданной строки выделить подстроку длиной 5 знаков (либо до конца строки, если осталось меньше), которая начинается с первой встретившейся в строке буквы ² f ». Распечатать эту подстроку или сообщение о том, что ее нет.

18. В заданной строке первый символ - заглавная латинская буква. Если это « К », « О », «D», заменить ее соответствующей строчной буквой. Распечатать полученную строку.

19. В заданной строке подсчитать количество букв латинского алфавита.

20. Из заданной строки получить новую, удалив все символы, не являющиеся буквами латинского алфавита.

21. В заданной строке преобразовать все заглавные буквы латинского алфавита в строчные, а строчные в заглавные.

22. Из заданной строки получить новую, удалив все группы букв «abcd».

23. Из заданной строки получить новую, заметив все группы букв «abc» на «abcd».

24. Подсчитать, сколько слов в заданной строке оканчивается буквой «я», если известно, что после слова обязательно стоит пробел, либо точка.

25. Даны натуральное число n, символы s1,...sn. Преобразовать последовательность s1,...sn, , заменив в ней:

а) все восклицательные знаки точками;

б) каждую точку многоточием (т.е. тремя точками);

в) каждую из групп стоящих рядом точек одной точкой;

г) каждую из групп стоящих рядом точек многоточием (т.е. тремя точками).

26. Даны натуральное число n, символы s1,...sn. Выяснить, имеются ли в последовательности s1,...sn такие члены последовательности sj, sj+1, что sj - это запятая, а sj+1 - тире.

27. Даны натуральное число n, символы s1,...sn. Получить первое натуральное j, для которого каждый из символов sj и sj+1 совпадает с буквой а. Если такой пары символов в последовательности s1,...sn нет, то ответом должно быть число 0.


Массивы

Массив – это совокупность однотипных элементов .

Математическими прообразами массивов являются векторы и матрицы с числовыми компонентами. В языках программирования все элементы массива объединяются общим именем – идентификатором массива. Элементы массива последовательно располагаются в памяти компьютера. При обращении к элементу массива указывается имя массива (идентификатор), индекс и тип. Если каждый элемент массива имеет только один индекс, то такой массив называют линейным или одномерным. Массивы, элементы которых имеют два индекса, называют двумерными. Например, массив А(8)

А1, А2, А3, А4, А5, А6, А7, А8

Этот массив является одномерным, причем массив имеет имя А и состоит из восьми элементов. Количество индексов в списке определяет размерность массива.

Двухмерный массив удобно представить в виде матрицы с двойными индексами.

В таком массиве каждый элемент имеет двойной индекс. Первая цифра индекса указывает номер строки, вторая номер столбца. Элементы, где номер строки и номер столбца одинаковы, называют элементами главной диагонали. Так как каждый элемент массива имеет индекс, то индекс показывает место элемента в массиве.

В некоторых языках программирования наряду с понятием массив используется и другое понятие множество. Отличие массива от множества в том, что массивы – это упорядоченные совокупности элементов, множества же представляют собой неупорядоченную совокупность отличных друг от друга элементов. Применительно к множествам допустимы операции добавления элемента к множеству, исключения элемента из множества, а также проверка того, принадлежит ли данный элемент рассматриваемому множеству.

Если двумерный массив имеет число строк равное числу столбцов, то такой массив (матрица) называют квадратным, например, массивы 3х3, 4х4, 5х5 и.т.д являются квадратными в отличие от массивов 2х4, 5х3, и.т.д.

В Basic для описания массивов применяют специальный оператор DIM (сокращение английского слова DIMENSION – размерность).

Оператор DIM используется для того, чтобы указать общее количество переменных в массиве. Это необходимо для рационального распределения памяти компьютера.

DIM A(7) количество переменных в массиве

Исполнение оператора DIM заключается в том, что в памяти компьютера образуется массив переменных.

А(0) А(1) А(2) А(3) А(4) А(5) А(6) А(7)

А              

 

Ограничение: массив нельзя объявлять дважды, поэтому следует объявлять массивы в начальных строках программы и не возвращаться в эти строки с помощью оператора GOTO.

Каждый элемент массива обладает:

1) именем Х(5)

2) индексом

3) значением 3, 2

Кроме оператора DIM для описания массива используется идентификатор (имя массива), тип массива и его размер. Например,

DIM A(7)

DIM V%(12)

DIM WR$(5)

В первом примере имя массива А, его тип – все действительные числа, размер – семь элементов. Во втором примере имя – V, тип массива – целые числа, их количество (размер массива) – 12 элементов; в третьем примере массив с именем WR является символьным. Этот массив содержит пять любых символов, например, букв, слов, и.т.п. Во всех трех примерах массивы были одномерными. Для двумерных массивов:

DIM AS(3, 3)

DIM B%(2, 5)

DIM c%(3, 6)

имя и тип определяется аналогично одномерным, разница только в размерности. Например, массив AS имеет три строки и три столбца, то есть является квадратным. Если массив имеет менее десяти элементов, то во многих версиях Бейсика он задается по умолчанию. В момент описания массива (при обработке оператора DIM и выделению массиву места в памяти) значения элементов массива не определены; это значит, что в числовом массиве могут быть любые числа. Элементы массива могут быть введены с клавиатуры с помощью оператора INPUT или с помощью операторов DATA, READ или иным способом. Например,

10 DIM A(12)

20 FOR I=1 TO 12

30 INPUT A(I)

40 NEXT I

или

10 DATA 6, 3, 12, 78, 5

20 DIM A(5)

30 FOR I=1 TO 5

40 READ A(I)

50 NEXT I

Вывод на печать элементов массива также осуществляется с помощью цикла с параметром.

Пример

Вывести на печать элементы массива

60 FOR I=1 TO 5

70 PRINT A(I)

80 NEXT I

Результатом работы этой программы будет пять чисел, которые будут выведены на экран в столбик. Если в конце строки 70 поставить “; ” тогда элементы массива будут напечатаны на экране в строку. С помощью блок-схемы алгоритм ввода можно представить.

Задания:

1. С помощью операторов data и read введите массив из семи слов. Составьте алгоритм и программу.

2. Заполните массив элементами последовательности Фибоначчи.

Решение различных логических задач при обработке массивов связано с поиском различных элементов в массиве, с упорядочением массива по определенному принципу, с перестановками и заменами различных элементов в массиве и.т.д.

Решим задачу по нахождению max числа из трех действительных чисел. На примере этой задачи понятен сам принцип, который в дальнейшем будет применяться при нахождении min и max элементов в одномерных массивах.

Пример

Найдите max их трех чисел А, В, С.

10 INPUT “Введите числа А, В, С”; A, B, C

20 MAX=A

30 IF B> MAX THEN MAX=B

40 IF C> MAX THEN MAX=C

50 PRINT “MAX=”; MAX

60 END

Пример

Найдите MIN элемент одномерного массива A(N).

10 INPUT N

20 FOR I=1 TO N

30 INPUT A(I)

40 NEXT I

50 MIN=A(1)

60 FOR I=2 TO N

70 IF A(I)< MIN THEN MIN=A(I)

80 NEXT I

90 PRINT “MIN=”; MIN

Пример

В одномерном массиве A(N) найдите минимальный и максимальный элементы и их индексы.

10 REM min и max элемент массива

20 INPUT ”введите размер массива”; n

30 DIM a(n)

40 REM ввод массива

50 FOR i=1 TO n

60 INPUT a(i)

70 NEXT i

80 m1=a(0)

90 i1=0

100 m2=a(0)

110 i2=0

120 FOR i=1 TO n

130 IF a(i)> = m1 THEN 160

140 m1=a(i)

145 i1=i

150 GOTO 190

160 IF a(i)< = m2 THEN 190

170 m2=a(i)

180 i2=i

190 NEXT i

200? ”min=”; m1; ”инд=”; i1

210? ” max=”; m2; ”инд=”; i2

220 END

Пример

В одномерном массиве найти некоторое заданное число М.

10 REM поиск заданного элемента

20 INPUT n

30 DIM a(n)

40 FOR i=1 TO n

50 INPUT a(i)

60 NEXT i

70 INPUT ”Введите число”; m

80 FOR i=1 TO n

90 IF a(i)=m THEN 130

100 NEXT i

110 PRINT “НЕТ”; m

120 GOTO 140

130 PRINT ”ЕСТЬ”; m

140 END

Пример

Изменить порядок следования элементов в массиве на обратный.

10 INPUT “Введите размер”; N

20 DIM A(N)

30 FOR I=1 TO N

40 INPUT A(I)

50 NEXT I

70 M=INT(N/2)

80 FOR I=1 TO M

90 P=A(I)

100 A(I)=A(N-I+1)

110 A(N-I+1)=P

120 NEXT I

130? “Перевернутый массив”

140 FOR I=1 TO N

150 PRINT “A(“; I: ”)=”; A(I)

160 NEXT I

170 END

Пример

Найдите все простые числа меньшие n.

Простыми называются те числа, которые делятся сами на себя и на единицу. В предлагаемом сейчас алгоритме используется “просеивание” массива из i натуральных чисел.

CLS

INPUT “Введите число n”; n

DIM mas(n-1)

FOR i=1 TO n-1

mas(i)=i

NEXT i

CLS

PRINT”Простые числа меньше”; n

IF n=1 THEN END

FOR i=2 TO n-1

IF mas(i)< > 0 THEN PRINT mas(i);

z=2*i

WHILE z< n

mas(z)=0

z=z+i

WEND

NEXT i

END

Пример

Описать числовые массивы X, Y, Z и выполните следующие преобразования:

1. переписать элементы массива X в массив Y в обратном порядке;

2. сформировать массив Y(1)=X(1)+X(N), Y(2)=X(2)+X(N-1), Y(3)=X(3)+ X(N-2) и т.д (N – четное);

3. записать в массив Y номера элементов массива X, лежащих на отрезке [0, 1];

4. записать в массив Y элементы массива X, имеющие четные индексы, а в массив Z элементы, имеющие нечетные индексы;

5. записать в начало массива Y положительные, а в конец – отрицательные элементы массива X, сохранив порядок элементов.

1)

10 INPUT ”Введите кол-во элементов”; N

20 DIM X(N), Y(N)

30 FOR I=1 TO N

40 PRINT ”введите элемент X(“; I: ”): ”

50 INPUT X(I)

60 Y(N-I+1)=X(I)

70 NEXT I

80 FOR I=1 TO N

90 PRINT Y(I)

100 NEXT I

110 END

2)

10 INPUT N

20 DIM X(N), Y(N/2)

30 FOR I=1 TO N

40 INPUT X(I)

60 NEXT I

70 FOR I=1 TO N/2

80 Y(I)=X(I)+X(N-I+1)

90 PRINT Y(I)

100 NEXT I

110 END

3)

10 INPUT N

20 DIM X(N), Y(N)

30 K=0

40 FOR I=1 TO N

50 INPUT X(I)

60 IF X(I) > 1 AND X(I) < 0 THEN 100

70 K=K+1

80 Y(K)=I

100 NEXT I

110 FOR I=1 TO K

120 PRINT Y(I)

130 NEXT I

140 END

4)

10 INPUT N

20 DIM X(N), Y(INT(N/2)), Z(INT(N/2)+1)

30 K=0

35 L=0

40 FOR I=1 TO N

50 INPUT X(I)

70 IF I/2=INT(I/2) THEN K=K+1: Y(K)=X(I) ELSE L=L+1: Z(L)=X(I)

80 NEXT I

90 FOR I=1 TO K

100 PRINT Y(I)

110 NEXT I

120 FOR I=1 TO L

130 PRINT Z(I)

140 NEXT I

150 END

5)

10 INPUT N

20 DIM X(N), Y(N)

30 K=0

40 FOR I=1 TO N

50 INPUT X(I)

70 IF X(I) > 0 THEN K=K+1: Y(K)=X(I)

80 NEXT I

90 FOR I=1 TO N

100 X(I) < 0 THEN K=K+1: Y(K)=X(I)

110 NEXT I

120 FOR I=1 TO K

130 PRINT Y(I)

140 NEXT I

150 END

При обработке массивов приходится решать три типа задач: задачи на вычисление, логические задачи, связанные с сортировкой массива и объединенный тип задач. Рассмотрим несколько характерных задач на вычисление.

Пример

В одномерном массиве A(N) вычислите сумму его элементов. Составьте алгоритм и программу.

10 INPUT”Введите размер массива”: N

20 DIM A(N)

30 FOR I=1 TO N

40 INPUT A(I)

50 NEXT I

60 S=0

70 FOR I=1 TO N

80 S=S+A(I)

90 NEXT I

100 PRINT “S=”; S

Пример 1

Найдите произведение элементов одномерного массива.

Программа этой задачи аналогична за исключением следующего фрагмента

60 P=1

70 FOR I=1 TO N

80 P=P*A(I)

90 NEXT I

100 PRINT “P=”; P

Пример 2

Задан одномерный массив A(N) и число T. Найдите количество элементов массива, меньших Т.

10 INPUT”Введите количество элементов массива”; N

20 INPUT”Введите число”; T

30 DIM A(N)

40 K=O

50 FOR I=1 TO N

60 PRINT”Введите A(“; I; ”)”

70 INPUT A(I)

80 IF A(I)< T THEN K=K+1

90 NEXT I

100 PRINT”В массиве”; K; ”элем меньших”; T

110 END

Пример 3

Для одномерного массива A(N), найдите сумму элементов больших числа Т.

10 INPUT “Введите размер массива”; n

20 INPUT “Введите число Т”; t

30 DIM a(n)

35 s=0

40 FOR i=1 TO n

50 INPUT a(i)

60 IF a(i) > t THEN s=s+a(i)

70 NEXT i

80 PRINT ”Сумма элементов массива, больших”; t; ”равна”; s

90 END

Пример 4

Объедините два массива A(N) и B(N) в один массив C(2*N) следующим образом: С(1)=А(1), С(2)=В(1), С(3)=А(2), С(4)=В(2)….C(2*N-1)=A(N), C(2*N)=B(N).

10 INPUT ”Введите количество элм. В массивах А и В”; N

20 DIM A(N), B(N), C(2*N)

30 FOR I=1 TO N

35? ”Введите A(“; I; “)”

40 INPUT A(I)

50? “Введите B(“; I; “)”

60 INPUT B(I)

70 C(2*I – 1)=A(I)

80 C(2*I)=B(I)

90 NEXT I

100 PRINT ”Вывод массива С”

110 FOR I=1 TO 2*N

120 PRINT “C(“; I; “)=”; C(I)

130 NEXT I

140 END

Пример 5

Для массива Х найдите:

a) среднее арифметическое положительных элементов массива

b) b) сумму элементов, стоящих на четных местах;

c) c) среднее арифметическое элементов, лежащих в отрезке [1; 2];

d) d) количество положительных, отрицательных и равных нулю элементов;

e) e) количество элементов, для которых ближайшим целым является 1.

a)

10 INPUT ”введите кол-во элементов”; n

20 DIM x(n)

30 k=0: s=0

35 FOR i=1 TO n

40 PRINT ”введите x(“; i; ”): ”

50 INPUT x(i)

60 IF x(i)> 0 THEN k=k+1: s=s+x(i)

70 NEXT i

80 IF k> 0 THEN PRINT ”сред. арифмет – “s/k ELSE PRINT ”нет положительных элем.”

90 END

b)

10 INPUT n

20 DIM x(n)

30 s=0

40 FOR i=1 TO n

50? ”Введите X(“; i; ”)”

60 INPUT x(i)

70 IF (i/2)=INT(i/2) THEN s=s+x(i)

80 NEXT i

90? ”Сумма элементов на четных местах”; s

100 END

c)

10 INPUT ”введите кол-во элементов”; n

20 DIM x(n)

30 k=0: s=0

40 FOR i=1 TO k

60 INPUT x(i)

70 IF x(i)< 1 THEN 90

80 IF x(i)< =2 THEN k=k+1: s=s+x(i)

90 NEXT i

100 IF k> 0 THEN? ”сред. арифм. на отрезке [1; 2]-“; s/x ELSE? ”нет элементов попадающих в [1; 2]”

110 END

d)

10 INPUT n

20 DIM x(n)

30 k=0: k1=0: k2=0

40 FOR i=1 TO n

50 INPUT x(i)

60 IF x(i)> 0 THEN k=k+1 ELSE k2=k2+1

80 NEXT i

90 PRINT ”В массиве”

100 PRINT ”Положительных элементов-“; k

110 PRINT ”Отрицательных элементов”; k2

130 END

e)

10 INPUT n

20 DIM x(n)

30 k=0

40 FOR i=1 TO n

50 INPUT x(n)

60 IF x(i)> 1.5 AND x(i)> 0.5 THEN k=k+1

90 NEXT i

100 PRINT k “элементов массива лежат в интервале [0, 5; 1, 5]

110 END

Дан одномерный массив A(N). Необходимо:

1. переписать массив в обратном порядке;

2. сжать массив, отбросив повторяющиеся элементы

3. сжать, отбросив каждый второй элемент.

Ввод элементов массива может осуществляться несколькими способами:

1) DIM A (5)

A(0)=4: A(I)=-2.5: (3)=10: A(4)=0: A(5)=6: A(2)=3

Этот способ ввода удобен, когда массив небольшой

2)Ввод элементов массива с клавиатуры

DIM А(9)

FOR I=0 TO 9

INPUT A(I)

NEXT I

3) DIM B (6)

DATA 0, -2, 1, 5, 8, 5, 6. 26

FOR N=0 TO 6

READ B (N)

NEXT N

Вывод элементов массива можно осуществлять в строку и в столбик:

1) DIM A(3)

PRINT A(0), A(I), A(2), A(3)

Этот способ вывода удобен, когда массив небольшой

2) DIM A(10)

FOR I=0 TO 9

PRINT A(I)

NEXT I


Поделиться:



Популярное:

  1. I. Классификация установок, по Узнадзе.
  2. III. Актуализация знаний. Проверка работы над проектом
  3. IV. Работа над пройденным материалом.
  4. V. Работа над пройденным материалом.
  5. VI. Предупредительные надписи
  6. VIII. Какую массу бихромата калия надо взять для приготовления 2 л 0,02 н. раствора, если он предназначен для изучения окислительных свойств этого вещества в кислой среде.
  7. XX конкурса-фестиваля детского художественного творчества «Лучики надежды – 2017»
  8. А 47. Что из перечисленного стало последствием победы СССР над Японией в 1945 г.?
  9. А кто наблюдает над всеми? Кто задает стратегию? Кто создает правила?
  10. А потом он обратился к ним с увещанием в связи с тем, что они смеялись, когда кто-нибудь испускал ветры, и сказал: «Почему некоторые из вас смеются над тем, что делают и сами?»
  11. А. П. Петрова. «Сценическая речь» - Общие основы работы над словом
  12. АДМИНИСТРАТИВНЫЙ НАДЗОР: ПОНЯТИЕ, ОСОБЕННОСТИ, МЕТОДЫ, СУБЪЕКТЫ, ПОЛНОМОЧИЯ.


Последнее изменение этой страницы: 2017-03-09; Просмотров: 990; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.19 с.)
Главная | Случайная страница | Обратная связь