Практикум по программированию на языке Visual Basic

Практикум по программированию на языке Visual Basic
Эти задачи могут стать тематикой серии уроков по программированию. Можно порекомендовать учителю разделить класс на несколько подгрупп по 4-5 человек, каждой из которых предложить одну из перечисленных задач. В группу обязательно должны войти сильный и слабый ученики. Учащиеся должны самостоятельно продумать алгоритм решения задачи, составить программу, отладить её и проанализировать результаты. Практику заканчивается защитой программ и демонстрацией результатов. Ученик, выступающий на защите, определяется накануне. Любому участнику группы могут быть заданы вопросы в ходе защиты.
Приводимые программы помогут разобраться с основами программирования и языком Visual Basic, помогут найти ключ к решению многих других задач.

Практикум по программированию на языке

Эти задачи могут стать тематикой серии уроков по программированию. Можно порекомендовать учителю разделить класс на несколько подгрупп по 4-5 человек, каждой из которых предложить одну из перечисленных задач. В группу обязательно должны войти сильный и слабый ученики. Учащиеся должны самостоятельно продумать алгоритм решения задачи, составить программу, отладить её и проанализировать результаты. Практику заканчивается защитой программ и демонстрацией результатов. Ученик, выступающий на защите, определяется накануне. Любому участнику группы могут быть заданы вопросы в ходе защиты.

Приводимые программы помогут разобраться с основами программирования и языком Visual Basic, помогут найти ключ к решению многих других задач.

Раздел 1. Удивительные числа

ПИФАГОРОВЫ ЧИСЛА

Пифагоровыми числами называются тройка натуральных чисел a, b, c, удовлетворяющих условию: a2 + b2 = c2.

Например числа ( 3, 4, 5) являются пифагоровыми.

Эта тройка была уже известна в Древнем Египте. Говорят, что строители пирамид, чтобы начертить прямой угол, пользовались верёвкой, разделённой на 12 равных частей. Сгиба её, получили треугольник, стороны которого составляли 3, 4 и 5 частей.

Задание: Найти и напечатать все пифагоровы числа, не превышающие 20.

РЕШЕНИЕ:

Dim a, b, c, cx As Integer

Private Sub Command1_Click()

For a= 1 To 20

For b= a To 20

cx = a * a + b *b

c = 2 + 1

Do While ( c * c < cx ) And ( c < 20 )

C = c +1

If c*c = cx Then Form1. Print a, b, c

Loop

Next b

Next a

End Sub

Ответ: 3,4,5; 5,12,13; 6,8,10; 8,15,17; 9,12,15; 12,16,20.

СОВЕРШЕННЫЕ ЧИСЛА

Совершенным называется число равное сумме своих делителей.

Например, число 6: 6=1+2+3

Свершенные числа чрезвычайно высоко ценились. Недаром в библии сказано, что мир сотворён за 6 дней: ведь это первое совершенное число. Древним грекам были известны только 4 первых совершенных числа. Даже в ХII веке церковь утверждала, что для спасения души достаточно найти пятое число. Это число было найдено только в XV веке.

Совершенные числа ещё не полностью исследованы: неизвестно конечно или бесконечно число совершенных чисел, до сих пор не найдено ни одно нечетное совершенное число.

Задание: Найдите совершенные числа в интервале [1,10000].

РЕШЕНИЕ:

На форме достаточно разместить только командную кнопку (самый простой вариант), для такого варианта приводится программный код:

Const n = 10000

Dim D (2 To n) As Integer, k, p As Integer

Private Sub Command1_Click( )

For k = 2 To n

D (k) = 1

Next k

For k = 2 To Int (n / 2)

р= k + k

Do While p <= n

D (p) = D (p) + k

р= p + k

Loop

Next k

For k = 2 To n

If D(k) = k Then Form1. Print k

Next k

End Sub

Ответ: 6, 28, 496, 8128.

АВТОМОРФНЫЕ ЧИСЛА

Автоморфным называется число, равное последним цифрам своего квадрата.

Например: 5 и 25 (52=25, 25 и 625 (252=625)

Задание: найдите и напечатайте все автоморфные числа в интервале [m, n].

РЕШЕНИЕ:

Dim m, n, x, d, y As Integer

Private Sub Command1_Click( )

m = Val (Text1.Text)

n = Val (Text2.Text)

d = 10

For x = m To n

Do While d <= x

d = d * 10

Loop

If (x * x Mod d = x) And (x * x <= n) Then

Form1.Print x; x *x

End If

Nextx

EndSub

Ответы: на интервале [1,10000] найдены 1,1 5,25 6,36 25,625 76,5776

ЧИСЛА ФИБОНАЧЧИ

Числами Фибоначчи называются члены ряда:

F(1)=F(2)=1

F(n)=F(n-1)+F(n-2) для n>=3.

Числа получили название в честь итальянского математика Leonardo Pisanto, известного под именем Фибоначчи, который предложил такую задачу: пара кроликов каждый месяц даёт приплод двух кроликов (самца и самку), от которых уже через два месяца получается новый приплод. Сколько кроликов будет через год?

Задание: Определите k-ое число Фибоначчи.

РЕШЕНИЕ:

Dim a, b, c, k, i As Integer

Private Sub Command1_Click ( )

a = 1

b = 1

k = Val (Text1.Text)

For i = 3 To k

c = a + b

a = b

b = c

Next i

Text2.Text = Str ©

EndSub

ЧИСЛА АРМСТРОНГА

Числом Армстронга называется число, состоящее из n(n>1) цифр, если сумма его цифр, возведенных в n-ю степень, равна самому этому числу.

Например: числом Армстронга является число 153, так как 153=13+53+33

Задание: Найдите все n-значные числа Армстронга (n-входное данное, n<=10)

РЕШЕНИЕ:

Dim step ( 0 To 9 ) As Long, _

n, x, min, max, sum, k, l, p As Long

Private Sub Command1_Click()

n = Val (Texst1.Text)

For k= 1 To 9

step (k) = k

For l = 2 To n

step (k) = step (k) * k

Next l

Next k

min = 1

For l = 1 To n– 1

min = min * 10

Next l

max = min * 10 – 1

For x = min To max

p = x

sum = 0

For 1 = 1 To n

Sum = sum + step ( p Mod 10 )

p = Int ( p / 10 )

Next l

If sum = x Then Form1. Print x

Next x

End Sub

Ответы: при n=5 это числа 54748, 92727, 93084

Раздел 2.

Задачи различной тематики.

1. По распоряжению директора из списка литературы, заказанной для школьной библиотеки, нужно вычеркнуть книги, стоимость которых превышает К рублей. Составить программу, выводящую на экран окончательный список книг.

РЕШЕНИЕ

Изначально создаются два файла: список книг и цены по этим книгам. Создается пользовательский интерфейс, например:

Создаются три событийные процедуры:

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

Dim byti, bytk As Byte, strA (1 To 20), strC (1 To 20) As

String, sngB (1 To 20), sngC As Single

Private Sub Command1_Click ( )

Open «URL/book.txt» For Input As #1

bytk = 1

Do Until EOF (1)

Input #1, strA (bytk)

List1. AddItem strA (bytk)

bytk = bytk + 1

Loop

Close # 1

End Sub

2)Загрузка списка цен на книги (аналогично первой поцедуре ):

Private Sub Command2_Click( )

Open «URL / cena. txt» For Input As # 2

byti = 1

Do Unti1 EOF (2)

Input # 2, sngB (byti)

byti = byti + 1

Loop

Close # 2

End Sub

3)Выбор книг, состоящих ниже заданной цены:

Private Sub Command3_Click ( )

sngC = Val (Text1.Text)

bytj = 1

For bytk = 1 to 10

If sngC > sngB(bytk) Then strC (bytj) = strA (bytk)

bytj = butj + 1

Next bytk

For bytj = 1 to 10

List3.AddItem strC (bytj)

Next bytj

Endsub

2. Создать программу сортирующую компьютерные термины (заданы в текстовом файле) в алфавитном порядке.

РЕШЕНИЕ:

Необходимо создать два файла: в одном находится алфавит, в другом – термины. Также как и в первой задаче создаются процедуры загрузки данных в соответствующие одномерные массивы:

Dim bytI, bytK As Byte, strA(1 to 33), strB(1 to 10), _

strC(1 to 10) As String

Private Sub cmdAlph_Click ()

Open «URL \alphabet.txt» _

For Input As #1

For butI = 1 to 33

Input #1, strA (bytI)

txtAlph.Text = txtAlph.Text + strA (bytI)

Next bytI

Close #1

End Sub

Private Sub cmdTerm_Click()

Open «URL\term.txt» For Input As #2

bytI = 1

Do Until EOF (2)

Input #2, strB(bytI)

IstTerm.AddItem strB (bytI)

bytI = bytI + 1

Loop

Close#2

EndSub

Далее создаются процедуры сортировки массива терминов и вывода результата:

Private Sub cmdSort_Click()

BytJ = 1

For bytK = 1 To 33

For bytI = 1 To 10

If strA (bytK) = LeftS (strB(bytI), 1)_

Then strC (bytJ) = strB(bytI): bytJ = bytJ = bytJ + 1

Next bytI

Next bytK

End Sub

Private Sub cmdRez_Click ()

For bytJ = 1 To 10

lstSort.AddItem strC (bytJ)

Next bytJ

EndSub

Примерный образец пользовательского интерфейса программы:

3. Дана квадратная целочисленная матрица. Составить программу для поиска первого из столбцов, содержащего максимальное число отрицательных значений.

РЕШЕНИЕ:

Пользовательский интерфейс можно создать по своему усмотрению. Можно разместить две командные кнопки (заполнение массива, поиск) и текстовое поле, в котором выводится результат. Тогда программный код будет выглядеть следующим образом:

DimintA(1 To4, 1 To4) AsInteger, n, m, byti, bytj, max

As Byte

Private Sub Commad1_Click ()

For byti = 1 To 4

For bytj = 1 To 4

Randomize

intA (byti, bytj) = (-100 — 99) * Rnd + 99

Form1.Print intA (byti, bytj)

Next bytj

Next byti

End Sub

Private Sub Command2_Click ( )

k& = 0

max = 0

bytj = 1

Do

For byti = 1 To 4

If intA (byti, bytj) < 0 Then k& = k& + 1

Next byti

If max < k& Then max = k&: Text1.Text = «Max отр. эл-тов_встолбце» + Str (bytj)

bytj = bytj + 1

Loop Until bytj = 5

EndSub

4.Составить программу для нахождения в заданной строке слова максимальной длины. Если таких слов несколько вывести на экран последнее из них.

РЕШЕНИЕ:

Условие задачи очень стандартное. В школьном курсе информатике таких задач много. Поэтому приведем решение этой задачи с помощью Visual Basic.

Dim byti, max, bytDs, bytD As Byte, strA, strN, strC As String

Private Sub Command1_Click ( )

strA = Text1.Text

BytD = Len(strA) 'длинапредложения

bytDs= 0 'длина текущего слова

max= 0 'длина слова

poz& = 0 'позиция слова в предложении

For byti = 1 to bytD

strC = Mid(strA,byti,1)

poz& = byti

If strC <> » " Then bytDs = bytDs + 1 Else: If max < bytDs

Then max = bytDs: bytDs = 0: strN = Mid(strA, byti – max, max)

Nxext byti

Text2 = strN

Form1.Print max

EndSub

5. Дана строка, содержащая строчные буквы латинского алфавита, арабские цифры и круглые скобки. Составить программу для удаления части строки, заключенной в первую по порядку пару круглых скобок.

РЕШЕНИЕ:

Dim byti, bytD As Byte, strA, strN, strC As String

Private Sub Command1_Cick()

strA = Text1.Text

bytD = Len (strA0) 'длинапредложения

For byti = 1 To bytD

strC = Mid (ctrA, byti, 1)

If strC = "(" Then strN = Left(strA, byti – 1)

If strC = "(" Then strK = Right(strA, bytD – byti)

Next byti

Text2 = strN + strK

End Sub

6. Напечатать все простые числа, не превосходящие заданное число М.

РЕШЕНИЕ:

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

Таблица понадобится менее чем на /2 чисел, поэтому таблицы на 1000 чисел хватит для печати простых чисел до 4000000.

Пользовательский интерфейс проекта ( минимум ):

На форме можно разместить текстовое поле, в которое будет вводиться М, и кнопку для реализации событийной процедуры.

Программный код:

Dim m, n, k, As Integer, P ( 1 To 100 ) As Integer

Private Sub Command1_Click ( )

m = Val (Text1. Text )

If m > 1 Then Form1. Print «2»

If m < 2 Then Form1. Print «3»

If m < 5 Then GoTo 50

n = Sqr ( m ) / 2 + 1

k= 1: P ( 1) = 3

For i = 5 To m Step 2

For j = 1 To k: q = P ( j )

If i Mod q = 0 Then GoTo 49

Next j

Form1. Print i

If k >= n Then GoTo 49

k = k + 1: P ( k ) = i

49 Next i

50 End Sub

Просмотр содержимого публикации
Скачать файл публикации
+2
19:33
1320
RSS
Нет комментариев. Ваш будет первым!

Войти с помощью