Методические материалы по информатике

Условные обозначения:
| – вводится одно из нескольких возможных значений, [ ] – необязательные параметры,
<информация, которая должна быть введена пользователем или программой>.

Содержание
Операторы
Переменные и типы данных
Именование
Типы данных
Действия над данными
Преобразование типов
Ветвление программ
Циклы
Функции
Символьные
Даты и времени
Числовые и математические
Задаваемые пользователем (UDF)


Основы программирования

Программирование, изучаемое в базовом школьном курсе информатики и ИКТ, носит исключительно декларативный характер. Это связано с ничтожным количеством часов, отводимых на изучение этой тематики и абсолютной несостоятельностью изучаемых языков (за исключением Visual Basic).
Полное отсутствие учебников именно для базового курса также не способствует достижению приемлемого результата.
На данной странице будет предпринята попытка обобщить только ту информацию, которая используется во всех без исключения языках высокого уровня.
Вместе с тем, в некоторых случаях приводится подборка из нескольких языков, чтобы не была упущена важная идея, которая отсутствует в некоторых случаях.

Операторы

ОператорНазвание оператораПример операцииРезультат
=Присваиваниес = с + 1Увеличение
значения x на 1
+Сложениеx = 2 + 5x = 7
-Вычитаниеx = 2 - 5x = -3
*Умножениеx = 2 * 5x = 10
^Возведение в степеньс = 2^3x = 8
/Делениеx = 2/5x = 0,4
\Целая часть от деленияx = 2\5x = 0
ModОстаток от деления (modulo of division)x = 2 Mod 5
x = 10 Mod 4
x = 2 (5*0+2)
x = 2 (4*2+2)
&Конкатенация (слияние) строк.
Может использоваться для соединения данных разного типа в символьный
x = "2" & "5",
либо x = "2" + "5"
либо x = "2" & 5
x = "25"

В отличие от других операторов, присваивание может быть использовано в строке только один раз, в связи с чем во многих случаях для него используется предварительное двоеточие: Unit:=wdCharacter.
В Visual Basic двоеточие служит для оформления нескольких строк в одну. Зачастую это не только делает текст более компактным, но и помогает быстрее его понять:
x(1,1) = "Иванов" : x(1,2) = "Иван" : x(1,3) = "Иванович" : x(1,4) = "01.01.1980"

Операторы сравнения

ОператорНазвание оператора
==Равенство, в отличии от присвоения
===Идентичность или строгое совпадение
<Меньше
>Больше
<=Меньше или равно
>=Больше или равно
<>Не равно

Логические операторы

Также можно изучить материал, посвещенный алгебре логики.
Логические операторы располагаются между двумя логическими выражениями, каждое из которых так или иначе либо истинно, либо ложно.
ОператорНазвание оператора
ANDИ. Означает, что оба соединяемых выражения должны быть истинны
ORИЛИ. Хоть одно из выражений истинно
XORИсключающее ИЛИ. Только одно из выражений должно быть истинно
NOTНЕ. Ставится перед логическим выражением, значение которого меняется на противоположное

Переменные и типы данных

Именование переменных

В математике принято обозначать переменные символами латинского алфавита. Для программирования такой подход неприемлем. Помимо того, что число переменных в большой программе может составлять несколько сотен, придется очень постараться, чтобы разобрать (запомнить), что описывает переменная «f» или «r». (Данное обозначение использовалось в учебных целях для сокращения слов Find и Replace, что, конечно же, является безобразием с точки зрения именования.)

Имена переменных в большинстве языков программирования подчиняются примерно одинаковым правилам.

О последнем пункте следует поговорить особо.
Если назвать переменную «CV», то она мало отличается от шарады. Название «CurrentValue» позволит определить, что переменная содержит текущее значение вычислений или иной обработки информации. Но, что крайне важно, ничего нельзя сказать о типе хранящихся данных, а, значит, и о том, какими методами с ней нужно (можно) работать. Наоборот, «intCurrentValue» содержит в начале своего имени явное указание на целочисленное значение.

Такие правила присвоения имен получили название венгерская нотация и имеют как сторонников, так и противников. Более подробную информацию можно прочитать в Википедии, однако не стоит забывать, что уже через несколько месяцев «плохое» название придется восстанавливать с огромными трудностями. А просьба совета у другого человека может превратиться в оскорбление.

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

Основные типы данных

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

Хотя типов данных (точнее программных переменных, в которых данные хранятся) довольно много, можно выделить наиболее важные группы, имеющие общие правила обработки.

В квадратных скобках указан размер в байтах. Кроме указания на место, занимаемое в памяти, для многих типов это определяет возможный диапазон значений. Так, 2 байта для целых чисел дают 22*8 (65536) значений. Но один бит используется для указания знака, что ограничивает диапазон значений 215 (до ±32768).

Действия над данными

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

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

Логические данные полностью подчиняются законам алгебры логики.

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

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

Преобразование типов данных

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

В других ситуациях просто предполагаются разнообразные математические операции над числами, а результат нужно вывести в виде строки, снабженными поясняющими словами. Например, обработали число 5 и получили число 120. Чтобы собрать строку: "Из числа 5 получен результат 120!", нужно провести преобразование чисел и их сложение с текстом:

"Из числа" + Str(5) + "получен результат" + Str(120) + "!"

Преобразования числа в строку: Str(<число>)

В большинстве языков программирования для положительных чисел мы получим строку, в начале которой стоит пробел, а для отрицательных – дефис.
Для того, чтобы избавиться от этого пробела, можно использовать одну из двух функций Trim(<строка>) или Ltrim(<строка>).

Преобразования строки в число: Val(<строка>)

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

Ветвление программ (условные операторы)

Для осуществления ветвления программ используются два основных оператора: If... Else... End If и Case...

Оператор If... Else... End If

По существу, оператор следует переводить как Если... Иначе... Конец If.

Первичным следует считать использование так называемого неполного If. В этом случае не используется часть Else.

If <условие> Then
	...[блок команд]
End If

Таким образом, блок команд будет выполнен только когда будет истиным условие, заданное на входе оператора.

Пример, в котором переменная пямяти x будет уменьшена в 10 раз, только если она превысла значение 10:
If x > 10 Then
	x = x/10
End If

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

If <условие> Then
	...[блок команд 1]
Else
	...[блок команд 2]
End If
Пример, в котором переменная пямяти x возводится в квадрат, если она отрицательна, а иначе – в куб (ноль также будет возводиться в куб):
If x < 0 Then
	x = x^2
Else
	x = x^3
End If

Замечание. В некоторых языках окончание записывается слитно: EndIf.

Функция IIf()

Так как чрезвычайно часто встречается ситуация, когда единственное назначение условного оператора – изменение переменной памяти по условию, все развитые языки содержат функцию IIf(). Она решает названную задачу в гораздо более компактном виде.

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

x = IIf(x < 0, 0, 1)

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

Оператор Case

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

Select Case проверяемое выражение
Case значение1
	действия1
[Case значение2
	[действия2]]
...
[Case Else
	[действия для других случаев]]
End Select

Именно этот вариант используется в VBA.

В других случаях расчеты и проверка осуществляется для каждого случая, что позволяет задавать разнообразные выражения. (В этом синтаксите оператор соответствует If–ElseIf.)

Select Case
Case проверяемое выражение1
	действия1
[Case проверяемое выражение2
	[действия2]]
...
[Case Else
	[действия для других случаев]]
End Select

Циклы

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

Цикл For...

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

For счетчик = start To end [Step шаг]
	[программа]
	[Exit For]
	[программа]
Next [счетчик]

В приведенном ниже примере находится произведение четных чисел (шаг = 2) от 2 до введенного пользователем значения y. Если произведение превысит 1 трлн., то произойдет выход из цикла. Нетрудно убедиться, что i достигнет только 24, а y будет равен 1,961,990,553,600.

Dim i as Byte, x As Double, y As Integer
x = 1
y = InputBox()
For i = 2 To y Step 2
	x = x * i
	If x > 1000000000000 Then
		Exit For
	End If
Next i

Цикл Do (While...|Until...)... End Do

Конструкция With...End with

Не являясь циклом, данная конструкция позволяет существенно сократить исходный код, повысив его читабельность.
Она предназначена для случаев, когда объектные выражения с одинаковым началом (нередко довольно длиным) повторяются много раз.
Понятно, что в следующем примере речь идет о поиске – всё, что внутри конструкции – строки которого не нужно выискивать в программе. Фраза «Selection.Find» записана только один раз. Все строки, которые должны получить её в начало, следует начинать с точки.

With Selection.Find
	.ClearFormatting
	.Replacement.ClearFormatting
	.Text = "?"
	.Replacement.Text = "!"
	...
End With

Функции

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

Вызов функций, как правило одинаковый:

переменная = ИмяФункции([аргументы через запятую]).

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

Порядок указания аргументов задается строго. Менять их местами нельзя! Если значение среднего аргумента опускается, то должна быть поставлена пустая запятая:
MsgBox("Сообщение", , "Заголовок").
Но! В описании функции может быть указано, что первый аргумент необязательный, а его значение присваивается по умолчанию (см. InStr()).

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

Вместе с тем, многие функции могут не иметь аргументов вообще: Date(), так как обрабатывают определенную заранее системную информацию.

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

Символьные (строковые) функции

Функции даты и времени

Числовые и математические функции

Функции, задаваемые пользователем (UDF)

  • Использование UDF (User Defined Function). позволяет намного расширить возможности языка программирования.


    Hosted by uCoz