Программирование аркадных игр и обучение информатике

Программирование аркадных игр
и обучение информатике

Постойте-ка, что ещё мы можем сделать?

5.1 Демонстрация Arduino


Пример программы студента Пример программы студента Пример программы студента
// Импортировать библиотеку servo
#include <Servo.h>

// Глобальные переменные
long currentPin=4;
Servo myservo;

// Функция установки
void setup() {
    // Прикрепить объект Servo к контакту 3
    myservo.attach(3);
    // Установить контакты от 1 до 13 на вывод.
    for( int i=1; i <= 13; i++ )
        pinMode(i, OUTPUT);
}

// Основной цикл программы
void loop()
{
    // Цикл от контакта 4 до 13
    for( int i=4; i <= 13; i++ ) {
        // Определить, должна ли гореть лампа
        if( currentPin == i ) {
            digitalWrite(i, HIGH); // On
        } else {
            digitalWrite(i, LOW);  // Off
        }
    }
    // Установить следующую лампу на включение
    currentPin += 1;
    // Вернуться в начало
    if( currentPin > 13 ) {
        currentPin = 4;
    }

    // Получить случайные номера цветов
    int r=random(0,256);
    int g=random(0,256);
    int b=random(0,256);

    // Установить красный, зелёный и синий оттенки лампы
    analogWrite(0, r);
    analogWrite(1, g);
    analogWrite(2, b);

    // Считать силовой сенсор на контакте 5 (возможные значения от 0 до 1023)
    int sensorValue = analogRead(A5);
    // Записать позицию servo (возможные значения от 0 до 255)
    myservo.write(sensorValue / 4);

    // Задержка на 150мс до следующего раза
    delay(150);
}

5.2 Демонстрация макроса Excel

47.2.1 Введение

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

Хотя Python и является основным языком, на котором концентрируется эта книга, выученные принципы программирования могут быть применены к любому языку. Эта глава показывает, как создать полезную программу, используя Microsoft Excel и язык программирования Visual Basic.

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

Это видео показывает шаги этого урока:

Видео: демонстрация макроса Excel

47.2.2 Урок

47.2.3 Исходный код

Sub CreateChart()
'
' CreateChart Macro
'

'
    Workbooks.Add
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://finance.yahoo.com/q/hp?s=wfc", Destination:=Range("$A$1"))
        .Name = "hp?s=wfc"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "16"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$G$69")
    ActiveChart.Location Where:=xlLocationAsNewSheet
    ActiveChart.ChartArea.Select
    ActiveChart.Legend.Select
    Selection.Delete
    ActiveChart.ChartArea.Select
    ActiveChart.SeriesCollection(5).Select
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.ChartArea.Select
    ActiveChart.ChartTitle.Select
    ActiveChart.ChartTitle.Text = "WFC"
    Selection.Format.TextFrame2.TextRange.Characters.Text = "WFC"
    With Selection.Format.TextFrame2.TextRange.Characters(1, 3).ParagraphFormat
        .TextDirection = msoTextDirectionLeftToRight
        .Alignment = msoAlignCenter
    End With
    With Selection.Format.TextFrame2.TextRange.Characters(1, 3).Font
        .BaselineOffset = 0
        .Bold = msoTrue
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(0, 0, 0)
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 18
        .Italic = msoFalse
        .Kerning = 12
        .Name = "+mn-lt"
        .UnderlineStyle = msoNoUnderline
        .Strike = msoNoStrike
    End With
End Sub
Sub CreateChart(ticker)
'
' CreateChart Macro
'

'
    Workbooks.Add
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://finance.yahoo.com/q/hp?s=" + ticker, Destination:=Range("$A$1"))
        .Name = "hp?s=wfc"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "16"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$G$69")
    ActiveChart.Location Where:=xlLocationAsNewSheet
    ActiveChart.ChartArea.Select
    ActiveChart.Legend.Select
    Selection.Delete
    ActiveChart.ChartArea.Select
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.SeriesCollection(1).Delete
    ActiveChart.ChartArea.Select
    ActiveChart.ChartTitle.Select
    ActiveChart.ChartTitle.Text = ticker
    Selection.Format.TextFrame2.TextRange.Characters.Text = ticker
    With Selection.Format.TextFrame2.TextRange.Characters(1, 3).ParagraphFormat
        .TextDirection = msoTextDirectionLeftToRight
        .Alignment = msoAlignCenter
    End With
    With Selection.Format.TextFrame2.TextRange.Characters(1, 3).Font
        .BaselineOffset = 0
        .Bold = msoTrue
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(0, 0, 0)
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 18
        .Italic = msoFalse
        .Kerning = 12
        .Name = "+mn-lt"
        .UnderlineStyle = msoNoUnderline
        .Strike = msoNoStrike
    End With
End Sub
Sub CreateCharts()
    CreateChart ("WMT")
    CreateChart ("INTC")
    CreateChart ("WFC")
    CreateChart ("BBY")
    CreateChart ("FDX")
End Sub

47.2.4 Повторение пройденного

Пройдите тест с несколькими вариантами ответов (на англ. яз.).


You are not logged in. Log in here and track your progress.