Введение цель – интеллектуальные игры, искусственный интеллект. 2

Простейшие конструкции. 2

Занятие 1. Не только рисуем.. 2

Занятие 2. Новое в мире математики. 3

Занятие 3. Простые условия. 3

1. Бриллианты и блондинки (4 балла) 4

Занятие 4. Не простые условия. 4

Занятие 5. Цикл for График функции - парабола. 5

Занятие 6. Еще раз Цикл for Мишень. 5

Занятие 7. Проверка таблицы умножения. 6

Занятие 8. Отражение и инверсия относительно y. 7

Занятие 9. Вложенные циклы.. 7

Занятие 10. Счастливые билеты.. 7

Занятие 11. Сумма цифр заданного числа. 7

Занятие 12. Цикл While. 8

Занятие 13. Плюсик. 8

Занятие 14. Кролики (Числа Фибоначи) 9

Занятие 15. Конец света или спасение души. 10

Занятие 16. НОД и НОК.. 10

Занятие 17. Игра в спички. 11

Занятие 18. Поймай медведя. 11

Структуры данных. 13

Занятие 1. Контрольная работа. 13

Занятие 19. Автопилот. 13

Занятие 20. Тест. 14

Занятие 21. Антагонистические игры.. 15

Занятие 22. Змейка. 15

Занятие 23. Шарики. 15

Занятие 24. Простой покер (сдача) 16

Занятие 25. Простой покер (очки) 17

Занятие 26. Снегопад. 17

Занятие 27. Космические войны.. 17

Занятие 28. Сортировка человечков по росту. (пузырьком и обменная). 17

Занятие 29. Мишень (динамическая сортировка вставками) 17

Занятие 30. Двоичный поиск. 18

Двумерные массивы.. 19

Занятие 1. Кинозал. 19

Занятие 2. Девятки и пятнашки. 19

Занятие 3. Сапер. 19

Занятие 4. Шашки. 20

Занятие 5. Крестики нолики. 21

Занятие 6. Футбол. 22

Строковые. 22

Занятие 1. Звездный час. 22

Занятие 2. Шифровка в центр. 22

Занятие 3. Шифр Цезаря. 22

Занятие 4. Ребусы.. 22

Занятие 5. Бегущая строка. 23

Занятие 6. Длинная арифметика. 23

Занятие 7. Поле чудес. 23

Файлы.. 23

Занятие 8. Загадать слово для поля чудес. 23

Занятие 9. Ломанная. 23

Занятие 10. Форматирование текста. 24

Занятие 11. Лабиринт. 25

a. Записная книжка?. 26

b. Сортировка индексным файлом?. 26

Введение цель – интеллектуальные игры, искусственный интеллект

Развить свой и машинный интеллект

Шахматы, шашки и прочее.

N  «Не влезай - убьет» иногда такие фразы или мысли возникают у преподавателей. Программирования практическая наука, а значит, эксперименты должны быть! Попробуйте поэкспериментировать, и попытайтесь ответить, а почему так получилось?

G  - самостоятельная работа в классе

= - либо домашняя, либо просто самостоятельная работа, которую затем должно продемонстрировать преподавателю и одноклассникам

I  - ученики очень любят задавать вопросы, некоторые вопросы учеников и ответы к ним

Простейшие конструкции

Занятие 1.  Не только рисуем

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

Вспомним что такое компьютер – это устройство для обработки информации. Но чтобы информацию начать обрабатывать необходимо ее иметь. Поэтому у ПК множество устройств ввода информации, с помощью которых она попадает в память компьютера. Затем центральный процессор ее обрабатывает, т. е. перерабатывает в какой-то новый вид, но это тоже информация. Результат обработки снова храниться в памяти компьютера. Чтобы увидеть, что же стало с информацией после обработки необходимы устройства обработки информации, которых у компьютера тоже не мало.

ВВОД ð ОБРАБОТКА ðВЫВОД

Калькулятор (ввести два числа подсчитать сумму разность произведение частное)

Сколько надо обоев для ремонта колонн

N -

G  - поменять числа местами

= - Задан квадрат. Нарисовать и подсчитать радиусы вписанной и описанной окружности

= - Площадь боковой поверхности параллелепипеда

= - Сложный процент, через 3 года

= - *Задан квадрат координатами двух вершин на диагонали. Определить координаты двух других. (простой вариант – стороны параллельны осям, и сложный - нет)

Занятие 2.  Новое в мире математики

В первом классе нас научили двум арифметическим действиям: и -. Во втором – умножение и деление. И каждый год вы знакомились с новыми математическими операциями: возведение в степень, извлечение корня, скоро узнаете sin, cos, log. Но об одной очень простой операции в школе все равно никогда вам не расскажут. Ее математики «не любят», ее любят программисты.

Рассмотрим пример: 7/2=3,5. Что обозначает знак / - операцию деления. А в Visual Basic есть очень похожий знак \, как вы думаете, что он обозначает? Это тоже деление, но целочисленное, т. е. при операции деление нас интересует, сколько целых получиться. Зачем? Например, у нас полоска цветной бумаги и мы вырезаем колеса для автомобиля, нам интересно, что можно вырезать 3,5 колеса? Нам важно, что четыре колеса не получиться! Но самый интересный вопрос возникает дальше, а можно ли использовать тот кусочек полоски, который остался? Надо определить его размер! Если полоска была 7 см, а колесо 2 сантиметра по ширине, то сколько останется бумаги в см? Быстро прикинем – 1! Т. е. мы выяснили, что помещается 3 колеса (а не 3,5), умножили на ширину колеса и отняли от 7.

НЕ нашли? Не то? Что вы ищете?

7- (3*2)=1. Программисты, чтобы так долго не записывать, решили ввести специальную операцию, которая называется остаток от целочисленного деления. Эту операцию надо обозначить. В разных языках программирования придумали свое обозначение, но во многих решили обозначить тремя английскими буквами mod. 7 mod 2=1

Примеры для решения: 16 mod 7=? (3), 15 mod 3=? (0), 5 mod 7= ? (5)

Зачем программисты придумали еще одну математическую операцию? Оказывается, она очень часто встречается в различных программах. Каждый день, работая на компьютере, вы смотрите на часы в правом нижнем углу. Кто-то из программистов написал для вас эту программу, но дело в том, что мы тоже может это сделать. На материнской плате компьютера есть микросхема, которая считает время в секундах, а уже специальная программа пересчитывает из секунд в понятное нам время: часы, минуты и секунды. Например, если микросхема насчитала 4397 секунд, то

1 мин – 60 сек

1 час – 60 мин – 60*60=3600 сек

Заберем из 4сек, т. е. 1 час, останется =797 сек – это минуты и секунды

Из 797 по 60 сек – 13 минут и останется 17 сек. Итого время получилось: 1 час 13 мин 17 сек.

Давай те запишем коротко: 4397 \ 3600= 1 час

4397 mod 3600= 797 сек осталось

797 \ 60 = 13 мин

797 mod 60 = 17 сек

Внимание: а=в и в=а mod \

класс:

N - Выдать сдачу на заданную сумму монетами по 5,2,1 рубль, так чтобы монет было минимальное количество

G -

= - Сколько можно вырезать кругов для пирогов, из листа фанеры

= - Посчитать сумму цифр трехзначного числа

=* - Увеличить число обратное заданному трехзначному на 1

Занятие 3.  Простые условия

Уравнение y=5/x

N -

G -

= -

класс

Ввести число. Вывести четное оно или нет

Ввести число. Вывести делится на три или нет

Ввести два числа. Вывести сначала большее, затем меньшее

Заданы окружность и квадрат, определить поместиться ли квадрат в окружность? (нарисовать)

На шахматной доске ладья и король, королю шах? (слон, ферзь, несколько фигур)

Гараж и участок

Знакомство: ввести имя и год рождения. Ввести: Тебе Вася 11 лет (число лет, вывести употребив правильно - 11 лет или 21 год)

1.  Бриллианты и блондинки (4 балла)

Блондинки, как известно, ну очень любят своих лучших друзей — бриллианты и вырезают их из всего, что ни попадется под руку. Причем бриллиантом они считают все, что имеет форму правильного (имеется в виду равностороннего) треугольника. Тут одной блондинке как-то попалась чудная заготовка для бриллианта, имеющая форму прямоугольника, размером a на b и она тут же взялась вырезать из него бриллиант. При этом она, естественно, хочет, чтобы размер бриллианта был как можно больше. Помогите бедняжке.

Занятие 4.  Не простые условия

Квадратное уравнение

класс если а=0

Ввести два числа. Определить являются ли числа соседними

Ввести три числа. Вывести большее (меньшее)

=Сейф и дыра

=Шашки заданы координаты белой и 2 черных пешек, может белая выиграть?

=Известна дата рождения, определить сколько лет, месяцев и дней на сегодняшний момент.

Гороскоп

 Собака

 30.01.2006

Согласно календарю, принятому в Японии и в других странах Востока, в пределах 12-годичного цикла, каждый год проходит под знаком какого-нибудь животного. Знаки царствуют целый Лунный год.

Каждое животное связано с одной из 5 стихий.

Огонь

Дерево

Земля

Вода

Металл

Лошадь

Тигр

Вол

Кабан

Обезьяна

 Змея

Кролик

Дракон

Крыса

Петух

Овца

Собака

 
Человек, рожденный в определенном году, получает ряд врожденных свойств, в зависимости от которых и складывается судьба. 
Восточный год начинается по-разному, в конце января или начале февраля, а точнее, со второго Новолуния после Зимнего Солнцестояния (оно происходит 22 декабря).

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

 Кабан

 18.02.2007

 Крыса

 07.02.2008

 Вол

 27.01.2009

 Тигр

 14.02.2010

 Кролик

 03.02.2011

 Дракон

 23.01.2012

 Змея

 10.02.2013

 Лошадь

 31.01.2014

 Овца

 19.02.2015

 Обезьяна

 08.02 2016

 Петух

 28.01 2017

Каждый пятый год меняется цвет животного: красный, желтый, зеленый, синий, черный.

Занятие 5.  Цикл for График функции - парабола

Нарисовать на экране график любой функции

Private Sub Form_Paint()

Rem размер экрана

w = Form1.Width

h = Form1.Height

setka = Form1.Width \ 10

Rem координатная сетка

For x = 1 To 10

xg = x * setka

Line (xg, 0)-(xg, w), QBColor(8)

Line (0, xg)-(w, xg), QBColor(8)

Next

Rem оси координат

Line (0, w \ 2)-(w, w \ 2), QBColor(5)

Line (w \ 2, 0)-(w \ 2, w), QBColor(5)

a = 5

b = -2

c = 3

Rem график

For x = -5 To 5 Step 0.001

y = a * x * x + b * x + c

xg = w \ 2 + x * setka

yg = w \ 2 - y * setka

PSet (xg, yg), QBColor(2)

Next

End Sub

N  Нарисовать график функции квадратный корень

N  Нарисовать два графика функции одновременно

N  Нарисовать график функции квадратный корень

=Составить расписание звонков в школе, если продолжительность уроков 40 мин, перемена 10 мин, большая перемена после 3-го урока 20 мин.

=Проверка знаний по математике (таблица умножения)

=Нарисовать семейство полиномиальных функций х в степени

Занятие 6.  Еще раз Цикл for Мишень

Вывести в середине экрана 10 окружностей разного цвета – мишень. По щелчку мыши нарисовать место выстрела и вывести диалоговое окно с количеством выбитых баллов. В заголовке формы вывести всего заработанных очков.

Dim all

Private Sub Form_Activate()

i = 0

Form1.ScaleWidth = Form1.ScaleHeight

Scale (0, 0)-(20, 20)

Cls

FillStyle = 0

For i = 10 To 1 Step -1

FillColor = QBColor(i)

Circle (10, 10), i, QBColor(i)

Next

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

d = 10 - Int(Sqr((10 - X) ^ 2 + (10 - Y) ^ 2))

FillColor = 0

Circle (X, Y), 0.2, 0

MsgBox (d)

all = all + d

Form1.Caption = "Всего очков " + Str(all)

End Sub

N - молоко

N - двухцветная мишень

N - кол-во выстрелов

Занятие 7.  Проверка таблицы умножения

Dim a, b, c As Integer

Private Sub Form_Paint()

Randomize Timer

For i = 1 To 10

ForeColor = QBColor(2): Font. Size = 14

Print "Пример "; i

a = Int(Rnd * 10 + 1): b = Int(Rnd * 10 + 1)

ForeColor = QBColor(0): Font. Size = 16

Print a; " x "; b; " = ";

c = InputBox("Сколько получиться")

Print c

If a * b = c Then Print "Правильно" Else Print "Не верно"

Next

End Sub

=Легенда о создателе шахмат

=Червяк съедает каждый день на один листик больше, чем в предыдущий. Сколько листиков съест он за месяц, если в момент рождения он съедает 2 листа.

=Когда Василисе Премудрой исполнилось 18 лет, Кощей Бессмертный стал сватать ее себе в жены. Василиса поинтересовалась насколько богат Кощей, он ответил, что у него 359 сундуков с золотом, и каждый год прибавляется еще 2. Василиса сказала, что выйдет замуж, когда у Кощея будет 1000 сундуков. Сколько лет будет Василисе?

=Ввести два числа а и b. Вывести квадраты чисел, расположенных между a и b.

=Вычислить a в степени b не используя знак возведения в степень (через произведение).

=Вводится 10 чисел, посчитать, сколько из них двузначных.

=Напечатать заданное количество четных чисел, начиная с другого заданного числа.

=Посчитать факториал числа (3!=1*2*3).

=Квадрат числа а равен сумме а первых нечетных чисел. Посчитать квадрат для любого а.(32=1+3+5)

=Задать размеры прямоугольника (треугольника) и напечатать на экране прямоугольник (треугольник) из звездочек.

Занятие 8.  Отражение и инверсия относительно y

=Задана площадь найти все прямоугольники такой же площади (равновеликие прямоуг треугольники (Кэрел))(ответ 8)

=


Задать число строк и столбцов и нарисовать картинку.

Старинная задача

=Найти все Пифагоровы тройки до 1000 (Теорема Ферма)

=Напечатать таблицу Пифагора

Занятие 9.  Вложенные циклы

Задача Льва Толстого. Бык - 10 р, корова – 5р, теленок 0,5 р, Сколько каждого если на 100 р надо купить 100 голов

=У гусей и кроликов вместе 24 лапы, но кроликов в два раза меньше чем гусей. Сколько гусей и кроликов

Занятие 10.  Счастливые билеты

Найти количество счастливых шестизначных билетов

=Найти число 8-мизначных счастливых билетов

=Долгожитель (больше 100 лет) обнаружил, что если к сумме квадратов цифр его возраста прибавить число дня его рождения, то как раз получиться его возраст. Сколько лет долгожителю?

Занятие 11.  Сумма цифр заданного числа

Найти сумму числа и обратного ему (358+853, 1234+4321, 4681+1864)????

или найти число на 1 большее чем обратное. Найдем количество цифр в числе

Private Sub Form_Paint()

Dim chis As Integer

k = 0

chis = InputBox("Ввведите любое число")

While chis > 0

c= chis Mod 10

Print c

k = k + 1

chis = chis \ 10

Wend

Font. Size = 14

Print "Всего "; k; " цифр в числе"

: End Sub

N  Сколько раз встречается в числе цифра 6

N  Есть ли цифра 0 в числе

N  Симметричное ли число (т. е. прочтение задом наперед его не меняет)

=перевод произвольного числа в двоичную систему

=счастливое число

=количество счастливых чисел в заданном интервале

=распечатать все пифагоровы числа до+42=52 – основная тройка, т. е. не имеющая общих делителей)

Занятие 12.  Цикл While

Угадайка и подсчитать число попыток

Показать свойства формы : Font, ForeColor, Caption

Dim Chislo As Integer, zag As Integer

Private Sub Form_Activate()

zag = Int(Rnd * 100 + 1)

Print zag

Print "Я загадал число от 1 до 100. Угадай его!"

While zag <> Chislo

Chislo = InputBox("Введите число")

If Chislo < zag Then Print "Загаданное больше "; Chislo

If Chislo > zag Then Print "Мешьше"

Wend

Print "Угадал!"

End Sub

I -

N - Добавить в текст программы полный ответ «Загаданное больше 45», или «Загаданное меньше 70»

N - Дорисовать графическую подсказку для угадывания – Светофор, если загаданное больше, загорается красный, если меньше то зеленый при угадывании желтый

G - Пароль, после ввода правильного пароля показать старт ракеты с обратным отчетом

=Найти среднее арифметическое введенных чисел, до ввода нуля.

=Ваш прадедушка положил в банк под 5% годовых 3 рубля, через сколько лет на его счету будет миллион (сложный процент)

=Когда Василисе Премудрой исполнилось 18 лет, Кощей Бессмертный стал сватать ее себе в жены. Василиса поинтересовалась насколько богат Кощей, он ответил, что у него 39 сундуков с золотом, и каждый год становится в 2-е больше. Василиса сказала, что выйдет замуж, когда у Кощея будет 1000 сундуков. Сколько лет будет Василисе?

=При вводе координат точек, определить номер квадранта для каждой из них, до ввода точки с координатами 0,0. (нарисовать)

Занятие 13.  Плюсик

Помните, мы с вами играли в такую игру. У нас есть число 1, и некоторое заданное число. Надо используя только две операции: умножение на два и прибавление 1. Получить заданное число. Например, возьмем число 9. Используя операцию сложения его можно получить, 8 раз прибавив единицу, но наверно вы догадались, что это не лучший способ. Давайте его поищем. Конечно лучше всего 1) *2, 2) *2, 3) *2, 4) +1. Так гораздо короче. А если взять число 15?

Вот мы сегодня и напишем программу, которая позволяет играть в такую игру. Компьютер будет загадывать число, а мы пытаться его получить. Причем компьютер еще и подсчитает, сколько операция нам пришлось сделать. Рассмотри алгоритм - порядок действий, которые происходят во время игры.

Загадать случайное число Наше исходное число =1 Попросить ввести операцию: + или * Если + то прибавить к нашему числу 1, а если * - *2 Показать как изменилось число Повторить с пункта 3, пока наше число не будет равно или не станет больше загаданного Если наше число равно загаданному, то мы выиграли Если наше число больше загаданного, то мы проиграли

Private Sub Form_Activate()

z = Int(Rnd * 10 + 7)

m = 1

Print "Дано число "; z

Print "Получите его из 1"

While m < z

c = InputBox("Введите * или +")

If c = "*" Then

m = m * 2

Else

m = m + 1

End If

Print m

Wend

If m = z Then

Print "Выиграли"

Else

Print "Проиграли"

End If

End Sub

Обсудить, как подсчитать число операций

=Ввести два числа. Найти наибольший общий делитель.

=Ввести число. Представить в виде произведения простых множителей.

Занятие 14.  Кролики (Числа Фибоначи)

Кролики!

N  Напечатать ряд фибоначи графически)

+

+

++

+++

+++++

++++++++

++++++++++++++

=Голодная зима: Суточный рацион коровы составляет w кг сена, v кг силоса и u кг комбикорма. В хозяйстве, содержащем стадо из k голов, осталось s кг сена, t кг силоса, f кг комбикорма. В стаде ежедневно погибает p% коров, ежедневно q% сена сгнивает, r% силоса разворовывается колхозниками, t% комбикорма распродает зав фермой. Когда нельзя будет кормить коров по полному рациону? Какой из видов кормов кончится раньше.

=У гусей и кроликов задано число лап, сколько было гусей и кроликов, распечатать все варианты

Занятие 15.  Конец света или спасение души

Совершенные числа, эта числа равные сумме своих делителей. Древним грекам были известны только 4 числа. В Библии сказано, что мир был сотворен за 6 дней, а это первое совершенное число. В XII веке церковь утверждала, что спасения души достаточно найти пятое число.

=Является ли число простым (простое число делиться только на 1 и само себя).

=Определить сколько простых чисел до заданного числа

Построить график изменения количества простых чисел

Занятие 16.  НОД и НОК

Проверка сложения дробей

Ищем число, на которое делятся оба заданных числа. Обозначим его х. Но тогда а – в тоже делиться на х. Пусть а=32, а в = 15. Тогда разность 21

а

B

36

15

Dim a As Integer, b As Integer

Private Sub Form_Activate()

a = InputBox("1")

b = InputBox("2")

c = a

While c <> 0

c = a Mod b

a = b

b = c

Print a, b

Wend

Print b

End Sub

=взаимно простые числа (числа, наибольший общий делитель которых =1)

Занятие 17.  Игра в спички

В игру играют двое. Каждый по очереди берет 1 или две спички. Выигрывает тот, кто взял последнюю спичку

Блоксхему!

Dim igrok As Integer

Private Sub Form_Activate()

Randomize Timer

n = Int(Rnd * 10 + 3)

Print n

p = 0

While p = 0

igrok = InputBox("Вомите спичку")

If igrok < 3 And n - igrok >= 0 Then

Print "Вы взяли", igrok

n = n - igrok

If n = 0 Then

Print " Вы выиграли! "

p = 1

Else

Print "Осталось спичек", n

k = Int(Rnd * 2 + 1)

Print "Компьютер взял", k

n = n - k

If n = 0 Then

Print "Компьютер выиграл"

p = 1

Else

Print "Осталось спичек", n

End If

End If

Else

MsgBox ("низя!")

End If

Wend

End Sub

Нарисовать спички на экране

Занятие 18.  Поймай медведя

Private Sub Form_Paint()

Rem Охота на медведя

Dim l, r, x, y, m, Zar

Randomize

r = 10

Scale (0, 0)-(10, 10)

For l = 1 To 10

Line (l, 0)-(l, 10), QBColor(8)

Line (0, l)-(10, l), QBColor(8)

Next l

xm = Int(Rnd * 10) + 1

ym = Int(Rnd * 10) + 1

While ym <> yzar And xm <> xzar

xzar = InputBox("Введите координату x ZARINY")

yzar = InputBox("Введите координату y ZARINY")

Circle (xzar, yzar), 0.3

If ym > yzar Then MsgBox "Южнее"

If ym < yzar Then MsgBox "Севернее"

If xm > xzar Then MsgBox "Восточнее"

If xm < xzar Then MsgBox "Западнее"

Wend

End Sub

Структуры данных

Линейные массивы

Занятие 1.  Контрольная работа

Представим себе не далекое будущее. Преподаватель ходит по рядам и выставляет оценки в журнал. Что же здесь из будущего? Просто журнал у нас электронный, небольшой карманный компьютер. Чтобы оценки не терялись, сразу подводились итоги за четверти. Да и решить, кого надо вызвать к доске, тоже может компьютер по предыдущим результатам. А сколько проблем у учителей с контрольной работой! Предположим ученикам 9 класса выставили оценки по контрольной работе, помогите преподавателю проанализировать ее результаты:

Сколько учеников сдали контрольную (оценки 5, 4, 3)

Вывести фамилии учеников, которым необходимо пересдать контрольную

Каков процент отличников по контрольной, а хорошистов?

Какой информацией должен владеть компьютер, чтобы решить задачу? Мы должны указать ему количество человек в классе, фамилии учеников и их оценки за контрольную. Но всю нужную информацию хранит в переменных, какие переменные и сколько нам нужны? С количеством учеников все просто – выберем переменную n. А для фамилий (если в классе 20 учеников) придется заводить 20 переменных, и для оценок тоже? А если в классе 40 учеников? Чем дальше, тем задача становиться все страшнее. В математике есть такой метод, чтобы обозначить числа или элементы одного класса (например арифметической прогрессии) мы используем одну букву и приписываем к ней маленький индекс в низу – номер элемента.

Заведем два массива, один для фамилий, второй для оценок. Фамилии введем с клавиатуры, оценки случайным образом. Выведем результаты контрольной на экран.

N –

= – Заполнить массив числами от -10 до 10. Увеличить все четные вдвое. Распечатать.

Занятие 19.  Автопилот

Наш самолет потерпел аварию, у него заканчивается топливо, но еще надо пересечь территорию города. Рассчитать минимальную высоту, на которой автопилот может провести самолет над городом, если диспетчер передал высоты зданий.

Const n = 12

Dim v(n)

Private Sub Form_Activate()

Randomize

w = Form1.ScaleWidth

h = Form1.ScaleHeight

md = 300

wd = (w - (n + 1) * md) \ n

x = md

For i = 1 To n

v(i) = (Rnd * (h - 1000) + 200)

Line (x, h)-(x + wd, h - v(i)), 7, BF

x = x + wd + md

Next i

Max = 0: p = 0

For i = 1 To n

If v(i) > Max Then Max = v(i): pmax = i

Next

MsgBox (pmax)

'изменить цвет самого высокого

x = pmax * md + wd * (pmax - 1)

Line (x, h)-(x + wd, h - v(pmax)), QBColor(5), BF

End Sub

N – если зданий такой высоты несколько, выделить цветом их все.

N – Если не считать это здание, которое будет вторым по высоте

= – Газонокосилка. На вашем газоне растет трава (случайным образом заполнить массив из 20 элементов числами (высота травы) от 3 до 10). Настройте газонокосилку на самую низкую траву и подравнять под неё газон. Найти массу полученной травы (1 м – 1 гр)

= – В классе 15 человек, выстроились в шеренгу на уроке физкультуры. Тренер по баскетбол попросил одного самого высокого стать первым, а самого низкого последним.

Занятие 20.  Тест

Автоматизируйте обработку шуточного теста (в скобках указаны правильные ответы)

2+2*2 (6)

Укол через 30 минут. Сколько минут на 3 укола. (60)

На двух руках 10 пальцев. Сколько на 10 руках.(50)

Сколько распилов надо чтобы разделить брус на 5 частей(4)

Пять свечей горели. Две потухли, сколько осталось?(2)

Dim otv As Integer

Private Sub Form_Activate()

vopr = Array("Сколько будет 2+2*2", "Укол делают через 30 минут. Сколько минут нужно на 3 укола", "На двух руках 10 пальцев. Сколько на 10 руках?", "Сколько распилов надо сделать, чтобы разделить брус на 5 частей", "Пять свечей горели. Две потухли, сколько осталось?")

verno = Array(6, 60, 50, 4, 2)

pr = 0

ForeColor = QBColor(5)

Font. Size = 12

Print "Тест ГЕНИЙ-ИДИОТ"

For i = 0 To 4

ForeColor = QBColor(2)

Print "Вопрос №", i + 1

otv = InputBox(vopr(i))

Print vopr(i)

ForeColor = QBColor(1)

Print "Ваш ответ:", otv

If otv = verno(i) Then pr = pr + 1

Next i

ForeColor = QBColor(5)

Print pr, "правильных ответов"

End Sub

N – Добавьте свой собственный вопрос

= – Выпуклый N-угольник задан координатами вершин, определить периметр и площадь.

= – На плоскости расположены N точек, заданные своими координатами. Найти точку, наиболее удаленную от начала координат

Занятие 21.  Антагонистические игры

/бумажная полоска длины 20. каждый игрок зачеркивает 3 смежные клетки, выигрывает тот кто закрасил больше леток

//////////????????????????????

= – Решить задачу о кроликах (числа Фибоначчи) используя массивы

= – Сумма цифр числа

Занятие 22.  Змейка

Dim x(100), y(100), n, c

Private Sub Form_Activate()

n = 5

Scale (0, 0)-(50, 50)

For i = 1 To n

x(i) = 20 + i: y(i) = 20

Next

draw

End Sub

Sub draw()

FillStyle = 0

FillColor = c

For i = 1 To n

Circle (x(i), y(i)), 0.5, c

Next

End Sub

Sub move_zmey()

For i = n To 2 Step -1

x(i) = x(i - 1):

y(i) = y(i - 1)

Next

End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)

c = Form1.BackColor: draw

move_zmey

If KeyCode = 38 Then y(1) = y: n = n + 1 'вверх

If KeyCode = 37 Then x(1) = x'влево

If KeyCode = 39 Then x(1) = x(1) + 1 'вправо

If KeyCode = 40 Then y(1) = y(1) + 1 'вниз

c = QBColor(2): draw

End Sub

N – Выделить голову змеи

N – Нарисовать одну еду и кушать ее, удлиняясь

= – Нарисовать много еды

= – При укусе самого себя удав умирает

Занятие 23.  Шарики

Dim a(9), kakoj As Integer

Sub Draw()

For i = 1 To 9

FillColor = QBColor(a(i))

Circle (i, 1), 0.4, QBColor(a(i))

Next

End Sub

Private Sub Form_Activate()

Scale (0, 0)-(10, 2)

FillStyle = 0

kuda = 5

For i = 1 To 4

a(i) = 1

a(i + 5) = 2

Next

Draw

While p = 0

kakoj = InputBox("Какой шарик двигать?", "Ваш ход", Default, Form1.Left, Form1.Top + Form1.Height)

If kakoj <> 0 Then

If Abs(kakoj - kuda) < 3 Then

a(kuda) = a(kakoj)

a(kakoj) = 0

kuda = kakoj

Draw

End If

End If

Wend

End Sub

N – Добавить проверку завершения игры

= – Напишите игру «Быки и коровы»

Занятие 24.  Простой покер (сдача)

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

5 карт.

Вспомним что в колоде существуют четыре масти и различные достоинства карт от 2 до туза.

Каким образом закодировать все карты?

Создадим на экране ряд из 5 карт - Image (strech, picture)

При раздаче карт выведем на них с помощью объекта Label1 достоинство и масть карты

достоинство карты от 2 до 15 (туз). Масть карты от 1 до 4 (1- крести, 2- бубны, 3- червы, 4- пики)

Изучаемые понятия: Image, Label, Массив объектов, font, forecolor, backstyle=transparent, command

N – Вывести вместо цифр, обозначающих картинки (король и др.) их буквенные обозначения

N – Вывести вместо цифр обозначающих масть их символы, используя коды символов (167-170) и шрифт Symbol и коды § (167)¨(168)©(169)ª(170)

Dim poker(5), mast(5), kart

Private Sub Form_Activate()

kart = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Â", "Ä", "Ê", "T")

End Sub

Private Sub Command1_Click()

Randomize

For i = 1 To 5

poker(i) = Int(Rnd * 13 + 1)

mast(i) = Int(Rnd * 4 + 1)

'Print poker(i); " "; " mast(i);

Label1(i - 1).Caption = kart(poker(i))

If mast(i) = 1 Or mast(i) = 4 Then Label2(i - 1).ForeColor = RGB(0, 0, 0) Else Label2(i - 1).ForeColor = RGB(255, 0, 0)

Label2(i - 1).Caption = Chr(mast(i) + 166)

Next i

End Sub

Занятие 25.  Простой покер (очки)

Раздать карты для покера на одного игрока. Определить расклад игрока и вывести его название.

Название раскладов (от наименьшего к наибольшему)

1. две одинаковые карты – «двойка»

2. три одинаковые карты – «тройка»

3. две «двойки»

4. тройка двойка

5. четыре одинаковые карты – «каре»

6. 5 карт одной масти – «рояль»

7. последовательность из 5 карт - «флэш»

8. последовательность из карт одной масти – «флэш-рояль»

9. «каре»+джокер – «покер»

= – Добавить джокера – достоинство 0, масть 0. Разместить на случайном месте массива.

= – Выводить надписи цветом мастей. Найти номер первого туза. Выдать сообщение.

Занятие 26.  Снегопад

Занятие 27.  Космические войны

Занятие 28.  Сортировка человечков по росту. (пузырьком и обменная).

Домашняя работа

Постоянная Капрекара. Любое число переворачиваем (т. е. располагаем цифры в обратном порядке) и вычитаем из исходного. С полученным числом повторить тоже самое, пока не появиться число, при вычитании перевернутого, равное уменьшаемому. Это число и называется постоянной Капрекара. Определить постоянную Капрекара для любого заданного числа.

Занятие 29.  Мишень (динамическая сортировка вставками)

Десять выстрелов по мишени с помощью мыши. Массив расстояний до мишени, сортируется по возрастанию. Определить новый выстрел какое место занял.

Сортировка вставкамиVB

Dim i, d(10)

Private Sub Form_Paint()

i = 0

Form1.ScaleWidth = Form1.ScaleHeight

Scale (0, 0)-(20, 20)

Cls

FillStyle = 0

For i = 10 To 1 Step -1

FillColor = QBColor(i)

Circle (10, 10), i, QBColor(i)

Next

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

i = i + 1

'подсчет очков

d(i) = 10 - Int(Sqr((10 - X) ^ 2 + (10 - Y) ^ 2))

'MsgBox (d(i))

FillColor = 0

Circle (X, Y), 0.2, 0

j = i

While d(j) > d(j - 1) And j > 1

p = d(j): d(j) = d(j - 1): d(j - 1) = p

j = j - 1

Wend

MsgBox (j)

PSet (0, i - 1)

For j = 1 To i

Print d(j);

Next

If i = 10 Then MsgBox ("стрельба окончена"): i = 0: Call Form_Paint

End Sub

N – определить удачность выстрела, то есть его место

N – Добавить мешалку к мышке, чтобы ее дергало при стрельбе и тем самым мешало точно выстрелить

= – Найти самое большое число, полученное из заданного перестановкой цифр.

= – Дано 20 действительных чисел. Определить образуют ли они возрастающую последовательность.

Занятие 30.  Двоичный поиск

Домашнее задание. Угадайка наоборот

Двумерные массивы

Матрицы. Заполнить 0 и 1 в шахматном порядке. Распечатать.

Делаем фигуры:

7-король, 8 - ферзь

3-пешка

4-ладья, 5-слоны, 6-кони

Заполнить матрицу числами от 1 до n*m

Занятие 1.  Кинозал

Занятие 2.  Девятки и пятнашки

Занятие 3.  Сапер

Const n = 10, m = 15, kolbomb = 20

Dim bombs(n, m), chisl(n, m)

Private Sub Form_Activate()

kletka = 500

'Form1.Width = ScaleX(kletka * m, vbPixels, vbTwips)

Form1.Width = kletka * m

Form1.Height = kletka * n

Scale (0, 0)-(m, n)

For i = 1 To n

Line (0, i)-(m, i)

Next

For i = 1 To m

Line (i, 0)-(i, n)

Next

Randomize Timer

k = 0

While k < kolbomb

i = Int(Rnd * n + 1)

j = Int(Rnd * m + 1)

If bombs(i, j) = 0 Then

bombs(i, j) = 1: k = k + 1: Circle (j - 0.5, i - 0.5), 0.2

End If

Wend

End Sub

Function chet(i, j)

s = 0

For q = -1 To 1

For w = -1 To 1

If ((i + q) > 0 And (i + q) <= n) Then

If ((j + w) > 0 And (j + w) <= m) Then

If bombs(i + q, j + w) = 1 Then s = s + 1

End If

End If

Next w, q

chet = s

End Function

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

For i = 1 To n

For j = 1 To m

If bombs(i, j) = 0 Then

chisl(i, j) = chet(i, j): PSet (j - 1, i - 1): Print chisl(i, j)

End If

Next

Next

По щелчку мыши либо показать число, либо взрыв – игра окончена

пятнашки

шашки: начальное расположение

Занятие 4.  Шашки

Отрисовка поля и шашек и ход по диагонали

Dim sh(8, 8), x1, y1, x2, y2

Private Sub Form_Activate()

kletka = 1000:Form1.Width = kletka * 8:Form1.Height = kletka * 8

Scale (0, 0)-(8, 8)

For i = 1 To 3

For j = 1 To 8

If (i + j) Mod 2 = 0 Then sh(i, j) = 14 Else sh(i + 5, j) = 8

Next

Next

draw_pole

End Sub

Sub draw_pole()

FillStyle = 0

For i = 1 To 8

For j = 1 To 8

If (i + j) Mod 2 = 0 Then c = 0 Else c = QBColor(15)

Line (j - 1, i - 1)-(j, i), c, BF

If sh(i, j) <> 0 Then FillColor = QBColor(sh(i, j)): Circle (j - 0.5, i - 0.5), 0.5, QBColor(sh(i, j))

Next j, i

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If x1 = 0 Then ‘первый щелчок

x1 = Int(X) + 1: y1 = Int(Y) + 1

FillStyle = 1

If sh(y1, x1) <> 0 Then ‘не пустая клетка

Line (x1 - 1, yx1, y1), QBColor(12), B

Else

x1 = 0: y1 = 0

End If

Else ‘второй щелчок

x2 = Int(X) + 1: y2 = Int(Y) + 1

If sh(y2, x2) = 0 Then куда идем пусто

zn = Abs(x1 - x2)

If zn = (y1 - y2) Then

jump

End If

End If

End If

End Sub

Sub jump()

sh(y2, x2) = sh(y1, x1)

sh(y1, x1) = 0

x1 = 0

draw_pole

End Sub

Занятие 5.  Крестики нолики

Dim pole(3, 3), hod

Private Sub Form_Activate()

hod = 1

Form1.Height = 2000 * 3

Form1.Width = 2000 * 3

Scale (0, 0)-(3, 3)

For i = 1 To 2 //нарисовать поле

Line (0, i)-(3, i)

Line (i, 0)-(i, 3)

Next

End Sub

Sub draw_hod(x, y)

If pole(y, x) = 1 Then

Line (x - 1, y - 1)-(x, y)

Else

Circle (x - 0.5, y - 0.5), 0.4

End If

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

X1 = Int(x) + 1: Y1 = Int(y) + 1

If pole(Y1, X1) = 0 Then

pole(Y1, X1) = hod: Call draw_hod(X1, Y1)

If endgame = True Then MsgBox ("Win!!!"): End

hod = (hod + 2) Mod 2 + 1

Else

MsgBox ("Занято")

End If

End Sub

Function endgame()

endgame = False

s = 0: s1 = 0

For i = 1 To 3

If pole(i, i) = hod Then s = s + 1

If pole(i, 4 - i) = hod Then s1 = s1 + 1

Next i

If s = 3 Or s1 = 3 Then endgame = True

End Function

Добавить проверку по строкам и столбцам

Вывести все треугольные матрицы

Занятие 6.  Футбол

Строковые

Занятие 1.  Звездный час

Звездный час и перевертыш

N – Дописать еще 5 слов для «Звездного часа»

N – Заданное слово распечатать лесенкой от 1 до всех букв

= - Разбить на слоги, добавив тире (слогом называем любые две буквы)

Занятие 2.  Шифровка в центр

Шифровка. Заданная строка записывается в квадрат построчно, а считывается по столбикам.

Dim m(100, 100)

Private Sub Command1_Click()

s = Text1.Text

l = Len(s)

Print l

n = Int(Sqr(l)) + 1

k = 1

For i = 1 To n

For j = 1 To n

m(i, j) = Mid(s, k, 1)

k = k + 1

Next

Next

temp = ""

For j = 1 To n

For i = 1 To n

temp = temp + m(i, j)

m(i, j) = " "

Next

Next

Text2.Text = temp

End Sub

N  Как сделать, чтобы можно было расшифровать текст

=Составьте из слова a=«ПРОГРАММИРОВАНИЕ», как можно больше слов используя команду mid. Например ? MID(a,1,8)+MID(a,13,1)

Занятие 3.  Шифр Цезаря

Сумма цифр числа

= – Найти самое большое число, полученное из заданного перестановкой цифр.

Занятие 4.  Ребусы

Занятие 5.  Бегущая строка

Dim a

Private Sub Command1_Click()

Label1.Visible = False

Text1.Visible = False

Command1.Visible = False

a = Text1.Text + " "

End Sub

Private Sub Form_Activate()

Open "text. txt" For Input As #1

Input #1, a

If a = "" Then Text1.Text = "Ура! КАНИКУЛЫ!" Else Text1.Text = a

Close #1

a = Text1.Text + " "

While True

Cls

Print a

a = Mid(a, 2, Len(a+ Mid(a, 1, 1)

DoEvents

For i = 1 To : Next

Wend

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

MsgBox ("Cпасибо за внимание!")

If KeyCode = 27 Then End

End Sub

Private Sub options_Click()

Label1.Visible = True

Text1.Visible = True

Command1.Visible = True

''''''''''''''''''''''

End Sub

Занятие 6.  Длинная арифметика

Занятие 7.  Поле чудес

Файлы

Занятие 8.  Загадать слово для поля чудес

Сгенерировать все возможные слова вида: согл+ гл+ согл +гл, записать в файл подсчитать их количество

Занятие 9.  Ломанная

Dim xt(100), yt(100), n

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

n = n + 1: xt(n) = x: yt(n) = y: Line -(x, y)

End Sub

Private Sub mnu_save_Click()

OpenBox. ShowSave

If OpenBox. filename <> "" Then

Open OpenBox. filename + ".txt" For Output As #1

For i = 1 To n

Print #1, xt(i), yt(i)

Next i

Close #1

Else

MsgBox ("нельзя сохранить!")

End If

End Sub

Private Sub mnu_open_Click()

OpenBox. ShowOpen

If OpenBox. filename <> "" Then

Open OpenBox. filename For Input As #1

Input #1, x, y : PSet (x, y)

While Not EOF(1) : Input #1, x, y : Line -(x, y): Wend

n = 0

Close #1

End If

End Sub

Отследить первое нажатие

Первое нажатие – левая кнопка мыши, второе нажатие правая кнопка мыши

Нарисовать ломанную, заданную парами координат в файле

Занятие 10.  Форматирование текста

не забыть шрифт Courier (моноширинный)

Dim kolsim, SpaceStr

Private Sub Form_Activate()

Open "…\text. txt" For Input As #1

Open "…\text1.txt" For Output As #2

Open "…\text2.txt" For Output As #3

kolsim = 40 : SpaceStr = " "

While Not EOF(1)

Input #1, s: Print s

' форматирование по ширине

k = kolsim - Len(s): d = formatstr(s): Print #3, d

'форматирование по левому краю

s = Mid(SpaceStr, 1, k) + s: Print #2, s

Wend

Close #1:Close #2:Close #3:End Sub

Function formatstr(s)

Dim mesto(100)

'подсчитать число пробелов

k = 0

For i = 1 To Len(s)

If Mid(s, i, 1) = " " Then k = k + 1

Next

'если есть пробелы

If k <> 0 Then

'найти число добавляемых пробелов

dob = (kolsim - Len(s)) \ k: ost = (kolsim - Len(s)) Mod k

ost1 = 0

For i = 1 To Len(s) ' в место пробела добавляем основные пробелы и остаточек

If Mid(s, i, 1) = " " Then

d = d + Mid(SpaceStr, 1, dob + 1)

If ost1 < ost Then d = d + " ": ost1 = ost1 + 1

Else

'переписываем все буквы

d = d + Mid(s, i, 1)

End If

Next

formatstr = d

Else

formatstr = s

End If

End Function

Занятие 11.  Лабиринт

Обозначения:

@ - начало лабиринта

# - стена лабиринта

. – проход в лабиринте

* - выход из лабиринта

Dim s, n, lab(100, 100), x0, y0, xk, yk

Private Sub Form_Activate()

Open "D:\Masha\Children\Новый курс по программированию\Числовая\80 волновой\labirint. txt" For Input As #1

Input #1, n

'Scale (0, 0)-(n, n)

For i = 1 To n

Input #1, s

'Print s

For j = 1 To n

If Mid$(s, j, 1) = "#" Then Line (j, i)-(j - 1, i - 1), QBColor(8), BF Else Line (j, i)-(j - 1, i - 1), QBColor(8), B

If Mid$(s, j, 1) = "@" Then Circle (j - 0.5, i - 0.5), 0.2: x0 = j: y0 = i

If Mid$(s, j, 1) = "*" Then Line (j, i)-(j - 1, i - 1), QBColor(2), BF: xk = j: yk = i

Next

Next

Close #1

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Circle (x, y, 0.2, BackColor

If KeyCode = 37 Then x0 = x0 - 1

If KeyCode = 38 Then y0 = y0 - 1

If KeyCode = 39 Then x0 = x0 + 1

If KeyCode = 40 Then y0 = y0 + 1

Circle (x, y, 0.2

If xk = x0 And yk = y0 Then MsgBox ("Win!!!!"): End

End Sub

a.  Записная книжка?

b.  Сортировка индексным файлом?

Доброжелатель

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

Олипиадная задача “Антивирус”

Полярные координаты

Вычислительная геометрия (линия и окружность, треугольник и окружность)

Площадь многоугольника

Рекурсия