Мировоззренческое обобщение.
Однажды я свою мать обучил программированию за 15 минут. До этого слово "программировать" вызывало у нее религиозное чувство своей непознанной таинственностью. Предложение вот прямо сейчас сесть и понять, что это такое да еще и самой что-то сделать, казалось ей кощунственной насмешкой над непосвященным человеком. Преодолев сомнения в том, что я просто прикалываюсь, она села рядом со мной за стол с видом совершаемого безрассудства и заранее щурящимися от сложности предстоящего глазами воззрилась на пока чистый листок бумаги..
- Вот, - сказал я небрежно, - несколько буковок, которые обозначают, что я должен сделать, когда их увижу: А - я сделаю шаг вперед, Б - шаг назад, В - поверну налево, Г- направо, Д-подпрыгну, Е-хлопну в ладоши, Ж- упаду на пол и отжмусь. Понятно?
- что тут не понятного? - удивилась мать, все еще в напряженном внимании не упустить главное.
- Теперь я пишу: АААВААДДЕ. Что я должен делать, когда прочту это?
- Ну, сделать три шага вперед, повернуть налево, еще два раза шагнуть, подпрыгнуть пару раз и хлопнуть в ладоши.
- Правильно! Напиши теперь ты программу моего поведения, какую хочешь, и я это сделаю.
- Глупости какие-то, - рассмеялась мама, но написала: EЖЖЖЖЖЕЖЖЖЖЖЕЖЖЖЖЖЕЖЖЖЖЖЕЖЖЖЖЖ
- хватит что ли?! - воскликнул я, прикидывая количество отжиманий с прихлопываниями, встал, на ходу загружая в оперативную память головного процессора командную строку, и честно выполнил задание.
- Вот этот процесс написания условных действий и есть - программирование, - сказал я чуть прерывающимся от только что выполненной команды дыханием, - Действия и их точный характер зависят от той области, где программирование применяется. Программы на швейной машинке - для того, чтобы игла нужным образом шила, - при этих словах мать по-новому взглянула на свою машинку, - на компьютере - чтобы он делал то, что ему задано запущенной программой. Правда, просто?
- Хм.. ну тогда программирование - гораздо легче, чем библиография! - снисходительно согласилась мать, которая была главным библиографом в главной библиотеке республики.
Конечно же, чтобы что-то написать на алгоритмическом языке, нужно сначала найти оптимальное решение потому, что переписывать программу для нового решения - очень трудоемко и очень глупо. А собственно написание - это предпоследняя часть всего, перед очень важным этапом тестирования. Но само написание - это тоже специфическое и увлекательное творчество, имеющее некие общие, независимо от языка, составляющие.
Так что следующие минут десять я так же просто рассказал матери про всякие дополнительные уловки, обычные при составлении программ.
В самом деле, все, что хорошо понятно становится простым, даже если раньше это казалось недостижимо сложным :) Дети в игровом режиме, не пугаясь сложности, легко разбираются с тем, что хорошо им показывается: мультики с захватывающими сложными системами из разных подручных средств, где мячик падает на коромысло, оно наклоняется, выливая воду вниз в сосуд, где всплывает поплавок и острием протыкает шарик, на котором.... и в длинная цепь причин и следствий вызывает эффект, вызывающий восторг, - это тоже программирование, которое должно быть очень точно, без ошибок выполнено.
Потом, как-то, случилось так, что примерно точно таким же образом я рассказал одной знакомой, что такое схемотехника электронной аппаратуры, и она вполне ясно восприняла, как работают электрические схемы на транзисторах. Что, в общем-то, то же - программирование, только не на языке символов, а живыми комплектующими, хотя сами программы - электрические схемы, тоже поначалу нужно рисовать на бумаге или в специальном компьютерном редакторе. Но вовсе не для того, чтобы заранее можно было найти ошибки. На бумаге главные ошибки не обнаруживаются! Возможно, что таково проявление Закона Космической Подлости, но это - факт жизни.
Что особенно объединяет эти, да и вообще любые виды программирования, так это то, что программы выполняются очень тупо, точнее очень строго так, как они составлены, и поэтому любые ошибки или выполняются насколько вообще оказывается возможным такое выполнение или же устройство сбивается. Поэтому никому не удается написать что-то новое для него совсем без ошибок, без проверки пробным запуском. Это чудесное свойство ЗКП иногда сильно обескураживает как в программировании так и в электронных схемах: казалось бы, на бумаге все должно быть идеально, не видно никаких ошибок, но вот - пробный запуск, и ошибки прут косяками.
Чисто опытным путем у меня вырисовалось правило: даже не мечтай, что что-то заработает, если ты точно не поймешь, как оно должно работать. Если недопонимаешь схемы, а пытаешься угадать, экспериментируя "методом тыка" (наобум), то не будет получаться, пока ты точно не поймешь во всех тонкостях, как это должно работать, тогда оно только слушается.
Получалось, что программирование или схемотехника никогда не упускали случая очень изощренно поиздеваться над теми самоуверенными типами, которые считали, что могут чисто усилием могучей логики своего ума сотворить непогрешимую систему, которая при проверке и в самом деле покажет свою непогрешимость. Такого я так и не увидел никогда. А это означало, что все умные книжки, основанные на могуществе разума и очевидности логики, на самом деле должны просто ломиться от скрытых, не обнаруженных ошибок. Программирование и, видимо, вообще реальность в любом проявлении, не прощает таких ошибок!
Прошло немало времени, когда мне захотелось написать о том общем, что есть в основе любого программирования. Написать так, чтобы человек, который никогда ни на чем не программировал, смог легко и узнаваемо начать это проделывать на любом языке, ознакомившись с присущими ему конкретными особенностями.
Это - довольно актуально потому, что об особенностях пишутся учебники по этим языкам, а вот о той основе, которая используется - очень редко и как-то вскользь. И вообще многое умалчивается, как бы само собой разумеющееся в головах знающих, уже не помнящих, а как они сами приходили к пониманию этого. Вспомнилось, как мне попалась книжка изобретателя языка С++ Страуструпа, я так понадеялся быстренько вникнуть и начать делать что-то, но... почти сразу там речь пошла о каких-то "классах". Причем так загадочно и почти без подготовки, что я никак не мог ухватить концепцию этого понятия, такого самоочевидного для языковых программистов! А оказалось все очень просто: классы - это условные описания свойств и поведения любых объектов в задуманной программе. Если мы пишем игрушку, то там будут такие объекты как игроки, дома, оружие и т.п. которые обладают определенными свойствами и поведением в зависимости от событий. Вот и нужно сделать общее описание этих свойств и поведения, по одному - для всех объектов данного класса, а не писать код для каждого объекта отдельно.
Если корабль класса Титаник был в единственном экземпляре, и его описание свойств и поведения относилось только к единственному в природе созданному объекту этого класса, то другие описания оказывались намного более эффективны потому, что всего лишь одно такое описание годилось для того, чтобы дать жизнь любому количеству объектов. Достаточно было дать команду: создать объект по такому-то описанию.
Как все это может выглядеть? Вот, мы захотели промоделировать демонстрацию броуновского движения молекул в красочной и наглядной форме (молекулы в данном случае - просто такие шарики, которые чем теплее, тем быстрее летают и стукаются друг о друга, разлетаясь). Значит, нужно описание поведения и свойств молекул - класс молекулы, чтобы потом, создавая желаемое их число в заданном объеме, наблюдать как они там соударяются в зависимости от задаваемой температуры.
Зададим свойство "цвет", в который будет окрашиваться молекула в зависимости от ее скорости перемещения - от холодного синего к красному. Это - условно будет числом, величина которого определяет цвет, например, в принятой в вэб-страницах зависимости (или какой угодно удобной и желаемой).
Число будем хранить под легко запоминаемым названием color. В классе это название так и будет записано в виде этого слова (мы его сами придумали).
В разных языках есть разные условленные способы - как сделать, чтобы при выполнении программы такое слово считалось числом. Например, бывает просто написать: color=214325, и, при считывании такого текста, компьютер будет вместо слова color подставлять то число, которое в этом месте программы приравнено к этому имени, т.е. числа, обозначающее что-то, в программе могут иметь удобное для запоминания и использования имя - напоминающее это что-то. Программисту удобно и компу хорошо.
Цвет предполагается менять в зависимости от скорости молекулы, которая тоже будут числом которому равно легко узнаваемое слово speed=0.
И цвет и скорость - должны меняться в динамике. В программировании говорят, что слова, для условного обозначения чисел (или строк текста или...), это - "переменные". Точнее, переменная в программировании - это удобное имя для обозначения места хранения какой-то информации: адрес ячейки памяти, начиная с которой хранится определенный формат данных. Понятно, что в этом месте хранения можно заменять данные на новые, а его имя остается прежним. Вот почему его называют "переменной".
Раз свойство молекулы color зависит от другого свойства speed, то нужно описать эту зависимость в виде поведения цвета или, как принято говорить в программировании - "метода" (метод изменения свойств) или по-другому "функции" или "процедуры" (зависимости одного от другого). Обычно то, что находится в описании класса называют методом, а вне класса - функцией или процедурой, - чистая условность.
Фактически в описании класса появляется зависимость, например, в таком виде (в разных языках может быть разное условное описание, но суть - одна):
function get_color_from_speed {color=speed*K}
Сразу можно заметить, что мы придумали функцию с произвольным названием, намекающим на назначение такой функции, что очень бывает удобно для понимания кода другими да и самому, когда подзабудешь со временем. И понятно, что в фигурных скобках (исполняемое "тело функции") значение цвета получается от умножения скорости на еще какую-то, но явно числовую переменную K (коэффициент пропорциональности).
Подобным образом мы будем описывать и свойство изменения скорости от температуры - с помощью похожей функции (только там температура будет умножаться на постоянное число, а использоваться формула, переводящая энергию соударений в скорость). Еще нам нужно будет распознавание момента соударений молекул - т.е. когда координаты разных молекул окажутся в одной точке. С учетом от направления скоростей при соударении, которое так же будет переменной, другая формула будет менять и эти свойства.
После того, как будут созданы много объектов молекул и заданы первоначальные условия, то они начнут взаимодействовать через свои методы и менять свои свойства, что будет отображаться на экране с помощью специально для этого написанной функции отображения свойств и положения молекул на экране.
Вот и все, если не считать этап отладки программы с устранением ошибок при пробных запусках: как ошибок наших представлений с возможной коррекцией функций, так и ошибок условностей написания кода.
Понятно, что такую программу можно написать очень по разному, не только произвольно называя свойства и методы из изменения, но, возможно, объединяя изменения свойств всего в одной функции, или изменяя размер молекулы в показе в зависимости от удаленности, или учтя еще и притяжение земли (осаждение молекул, если их энергия не сможет преодолевать притяжение) и многое другое, что зависит от индивидуальной фантазии и способностей разработчика программы. Можно обновлять свойства всех молекул одновременно, выполняя все функции по сигналу таймера или придумать, что будут изменяться только молекулы, которые столкнутся, а у остальных периодически обновляются только свойства их положения на экране.
В программе может накопиться очень много самодельных свойств и функций. Кроме того, языки программирования дают для использования в разных случаях очень много своих имен функций. запоминать их точное написание, а потом пытаться без ошибок воспроизвести в своем коде - настоящий мазохизм и потеря времени на противный поиск чисто синтаксических очепяток. Я принципиально не запоминаю все это назубок, тем более в немалом количестве разных языков программирования. Помню только, что есть вот на такой случай подходящая функция и, как правило, предлагаются разные способы как ее быстро найти и скопировать для вставки в текст кода. У меня правило: вставлять переменные и имена функций только копи-пастом, а не строить из себя крутягу из фильмов, пулеметно набирающих код с клавиатуры, - себе потом дороже обходится :)
Одна из главных проблем в программировании - придумывание таких имен переменных и функций, которые были бы интуитивно понятны и, в то же время, ранее не использовались. Потому, что если в программе используется около 10000 новых имен (а это еще не так много), то почти нет шанса случайно не использовать уже имеющееся и перекрыть их данные таким образом, что такую ошибку будет найти не просто.
В основном эту задачу возлагают на автоматический обработчик текста программы при вводе ее в компьютер - компилятор (он "декорирует" переменные, обеспечивая их уникальность, добавлением текста), а программисту предоставляются разные удобства, чтобы не морочить себе голову этой проблемой.
Так внутри функций и в описаниях классов (и есть еще некоторые случаи) все придуманные имена не связаны со всеми другими в программе. Говорят, что они "не видимы" снаружи функции, а в теле функции не видимы наружные переменные, т.е. говорят об области видимости переменных: они или глобальные - написаны в основном коде, или они - локальные -используются только локально в функции или классе. Можно позволить себе скорость обозначить просто одной буквой v, время - t, а цвет - буквой c. А связь с остальной программой этих переменных задать самим.
Поэтому, чтобы передать в функцию значение скорости, это делается с помощью "аргументов" функции (или параметров)которые, чаще всего, пишутся в круглых скобках сразу после имени функции:
function get_color_from_speed(speed) а в теле функции мы можем позволить себе написать:
{c=v*K} Теперь остается передать вычисленное значение во внешний мир программы из функции, что мы тоже делаем сами с помощью специально придуманного для этого слова return:
function get_color_from_speed(v)
{
c=v*K; // конец каждого выражения кода обычно отмечают точкой с запятой
/*
выше значком // (бывает еще #) обозначено начало комментария к коду (любых текстов, которые не будут замечаться компьютером при выполнении кода, но нужные, чтобы программист не забыл зачем он сделал что-то в этом месте или другой понял его задумку). Комментарий // предназначен только для одной строки текста, а здесь много строк, которые объявлены комментарием другим способом.
*/
return c;
}
Теперь, если мы где-то используем описанную функцию для вычисления, то уже не пишем слово function, а пишем просто:
color=get_color_from_speed(speed);
Функция выполнятся и передает (говорят "возвращает") полученное значение переменной color. Все получается так, как если бы вместо функции просто оказалось вычисленное значение.
А в компьютере, чтобы он не запутался в переменных, вместо v, в тайне от программиста (точнее не мороча ему голову своими внутренними проблемами), эти переменные "декорируются" во что-то вроде: get_color_from_speed_@@v и get_color_from_speed_@@c, что достаточно надежно обеспечивает их уникальность. Точно так же комп поступает и с переменными описаний классов. Но и это - не конец переработки кода. В конечном счете все должно свестись к относительно небольшому числу команд процессора, который только и знает, что А - записать число в ячейку памяти с адресом (число = номеру ячейки оперативной памяти), Б -сложить (умножить, отнять или еще что-то сделать) с содержимым ячейки памяти (число другого адреса), В- переместить результат в ячейку (еще число третьего адреса), чтобы получилась совершенно уже не читаемая нормальным человеком последовательность, напоминающая ту первую, что я показывал матери: АБВАБВАБВАБВАБАБАБВБВ...... только - в виде двоичного кода. Слава аллаху, программерам уже не нужно сходить с ума и самим все это писать вот так вручную, а ведь было так раньше... Теперь они наслаждаются пописывая код с любимыми именами и любимым способом, но общую логику нарушать все равно им не дано, хотя многие обработчики программ научены исправлять наиболее частые ошибки, расставлять пропущенные "точки над и" и убирать всякий мусор.
Обычно код программы и тела отдельных функций отрабатывается системой последовательно, строка за строкой. Бывают тесты-алгоритмы в виде структуры:
Если ответ на вопрос-условие- "да" - стрелка указывает на один квадрат с вопросом, если - "нет" - на другой, так все ветвится, но некоторые стрелки возвращаются назад. В программировании говорят в этом случае, что если условие выполняется, то - правда (true), если нет - ложь (false) - только такие результаты бывают при проверке условия: предположения и реальности.
Существует целая алгебра логики (Булева алгебра) описывающая свойства выражений для запросов с использованием операций: и (AND или &), или (OR или ||), нет (NOT или !), правда (true), ложь (false), равно (==) не равно (!=), больше (>), меньше (<) и др.
Для ветвления на случай да - нет запрос начинается с if (если):
if(n > 100) {n=0;} else {n=n+1;} - eсли текущее значение переменной n больше 100, то n нужно приравнять к нулю, если меньше, то увеличить значение n на единицу (тело else предназначено для выполнения действий на случай не выполнения условия).
Иногда приходится использовать громоздкие конструкции типа:
if(n ==1) {m=0;} else if(n==2) {m==10;} else if(n==3) {m==100;} и т.д. Здесь удобнее воспользоваться другим оператором: "переключателем" действий в зависимости от значения n:
switch(n)
{
case 1: m=0; break;
case 2: m=10; break;
case 3: m=100; break;
default: m=-1; // - для всех остальных случаев
}
В разных языках программирования написание может несколько различаться, но суть остается.
Иногда бывает необходимо вернуться на более ранние строки, чтобы по результатам, полученным внизу, скорректировать их выполнение. Хорошо бывает видно, что заранее предусмотреть необходимость возвращения назад трудно, пока не ответишь на кучу промежуточных вопросов.
Во многих языках программирования, в том числе С++, существует специальный оператор (команда, условно записанное действие) для такого перехода: goto и затем метка (опять же произвольное имя, но со значком - это метка для перехода) - куда переходить. Метка заранее должна быть поставлена. т.е. такой переход заранее предусматривается. Легко можно представить себе, как тяжело станет проследить за ходом выполнения программы, если в ней будет множество переходов к меткам через большие куски кода. Поэтому стараются применять такой переход только в самых крайне необходимых случаях, когда очень трудно или даже невозможно (так случается, например, при попытке досрочно выйти из переключателей). Некоторые пытаются сделать непреложным законом недопустимость использования goto - с точки зрения юзабилити программирования, хотя язык его поддерживает. Я наблюдал живой медицинский случай, когда один фанатичный юзабист там, где нужно было просто применить goto и больше не умничать, использовал неизмеримо более ресурсоемкий и сложный искусственный запуск "исключительной ситуации" (аварийного прерывания) с последующей ее обработкой. Подобные самодельные "правила", в том числе вообще "юзабилити", придуманы гурами для послушно-недумающей паствы. Они оболванивают людей запретами, явно не доверяя человеку в собственной оценке оптимального решения, и лишают их возможности собственного развития. Лучше, чтобы каждый решал сам: раб он или творец.
Часто случается, когда есть несколько (десятков,...миллионов) однотипных данных, каждое из которых, по очереди, нужно обработать. Например: миллион объектов класса молекулы. Нужно опросить состояние каждого из них и обновить его, показывая динамику на экране, т.е. нам нужно перебрать массив всех объектов. Для этого предоставляется несколько способов, и все они называются циклами. В разных языках циклы могут немало различаться условным написанием и использованием, но важно одно: цикл - это способ выборки по очереди всех значений некоего массива данных. В любом цикле есть его тело (примерно как у функции), где могут любым нужным программисту способом обрабатываться текущее выбранное данное.
Массив данных в программировании - это область памяти, занимаемая этими данными, начиная с адреса, который, для удобства программиста, как и адреса переменных или функций, обозначается произвольным именем, например, myArray. Используя это имя, программист использует все данные, обозначенные им, обычно в виде myArray[n], где n в скобках обозначает номер данного в массиве. Массивы бывают сложными: массивы массивов: myArray[n][m] и еще сложнее, если это нужно. Данными в массивах может быть почти все, что угодно: от чисел и текстовых строк, до объектов классов, а так же бывают и смешанные типы данных (у кого какая фантазия или целесообразная необходимость заставит).
Для удобства использования массивов данных, кроме циклов, предоставляется набор различных возможностей: способ создания массива с присвоением ему произвольного имени, добавление или удаление данных в нем и другие нужные функции, - часто эти возможности реализуются именно как функции. Кроме того, пользователь сам может написать и собственные функции для работы с массивом, которые ему понадобятся.
Обычно используются такие следующие циклы, автоматически перебирающие заданный диапазон значений:
for(i=0;i<100:i++) // i++ означает, что i с каждым проходом цикла увеличивается на 1
{
/*
Делать здесь что-то с текущим значением переменной i.
которое будет последовательно принимать значение
от 0 (начальное заданное значение, может быть произвольно другим) до 100, не достигая его.
Например, будет присваиваться значение массиву переменных:
*/
myArray[i]=i*2; // 100 переменных массива от 0-го до 99-го примут возрастающее на удвоенное значение i.
if(myArray[i]>=200)
break; // - досрочный выход из цикла. конец перебора когда переменная массива станет больше или равна 200
}
Другой цикл тупо перебирает все существующе значения массива:
foreach(myArray as cur) // в теле цикла использовать текущее значение переменной массива в виде переменной cur
{
if(cur<10)
continue; // перейти к следующему проходу цикла, игнорируя все внизу
show_to_display(cur);
}
Еще цикл, в котором задается условие пока он будет выполняться вновь и вновь (хоть до бесконечности, если условие позволяет, так что нужно быть осторожным и не подвешивать программу в этом месте):
i=0;
while(i<100)
{
i++;
}
Еще бывает цикл do, который проделывает то же самое, но условие у него задается после обязательного прохождения первого раза:
i=100;
do
{
i--;
}
wile(i>0)
Это - еще более опасный цикл, который всегда лучше заменять просто на цикл while (т.е. всегда стоит избегать использовать этот цикл потому, что все можно делать, используя просто while()).
Можно без конца рассказывать о том, что напридумывали изготовители обработчиков компьютерных программ для облегчения программирования и большей его эффективности, но самые важные основные представления уже получены :) все же остальное - несложно постичь самому при условии неподдельной заинтересованности.
Есть только один способ уверено освоить дух и букву конкретного языка программирования: заинтересованно написать на нем важную лично для себя программу (пусть для кого-то, но важную для себя!). Первоначальное ничегонепонимание минуется довольно быстро и, с некоторого порога, все пойдет все более радостно. В инете очень много справочников по всем языкам, примеров кода, библиотек готовых решений, на форумах обсуждаются много проблем, от самых ламерских, так что особого дефицита информации нет, хотя некоторые вещи иногда заставляют тормозить на день, а то и неделю, пока не сформируется подходящее решение...
Для каждого осваиваемого языка ведите свою папку HELP_ХХХ, где собирайте все полезные находки и пусть там будут файлы по каждому важному разделу, где будут накапливаться именно ваши любимые и наиболее актуальные рецепты.
Эта статья будет совершенствоваться для все большей понимаемости :)
Словарик (часть определений
позаимствована из
Алгоритм - точное описание - какую совершать последовательность действий для достижения поставленной цели.
Булева алгебра - изучает высказывания и операции над ними. Переменные этого типа могут принимать только два значения: истина или ложь: 1 (истинно или вкл.) либо 0 (ложь или выкл.). Булева алгебра, названная по имени математика Джорджа Буля (George Boole), широко используется в теории множеств и программировании.
Встроенные функции. Функции, которые включены в язык программирования и которые не нужно создавать программисту.
Вызов. Инициация выполнения (запуск) блока кода, в частности процедуры или функции.
Глобальный уровень. Уровень всей программы. Глобальные переменные доступны (т.е. могут быть прочитаны и изменены) из любых форм, модулей и процедур приложения.
Графический интерфейс - службы и функции, предоставляющие возможность программе выводить что-то на экране или принтере.
Инструкция. Одна команда программного кода. Представляет собой синтаксически правильную (для интерпретатора или компилятора используемого языка) комбинацию ключевых слов и знаков, констант, переменных, которая должна размещаться в одной строке программного кода или в нескольких строках, однако в этом случае необходимо использовать пару символов продолжения строки (пробел, за которым следует знак подчеркивания).
Исполняемая программа. Программа, обычно в виде файла, которая может быть запущена операционной системой для выполнения определенного набора функций Выполняемые файлы в Windows имеют расширение ехе и для выполнения своих задач могут использовать библиотеки динамической компоновки (DLL).
Исходный код. Читаемая форма программного кода, который создается на языке высокого уровня. Компилятором или интерпретатором исходный код преобразуется в объектный код на машинном языке.
Компилятор - компьютерное приложение, которое считывает файл текстовой программы и превращает его в исполняемый модуль - обычно файл компьютерного приложения или часть его - в виде отдельной библиотеки описаний функций (с расширением DLL), доступной любым другим приложениям.
Область видимости. В программировании — область программного кода приложения, из которой доступна определенная в этом приложении переменная.
Операнд. Одна переменная или константа, над которой оператор выполняет действия. В выражении 1+2=3 числа 1 и 2 являются операндами, а + и = — операторами.
Оператор. Ключевой или зарезервированный символ (или слово), который выполняет действия над переменными для получения результата. Если оператор имеет одноместную (унарную) форму, то выполняет действия над одной переменной, если нет, то над двумя. Операторы могут быть обычными математическими знаками, например + (прибавить), - (отнять), / (разделить) и * (умножить), а также логическими, например And или Not. Унарный минус (-), если он применяется к одной переменной в таком выражении, как intVar=-intVar, инвертирует знак переменной, меняя в данном случае знак переменной intVar с "минус" на "плюс" или с "плюс" на "минус". Операторами также называют инструкции (команды) программного кода.
ООП (Объектно Ориентированное
Программирование) - программирование с использованием классов. Часто считается
что ООП - это использование ТОЛЬКО классов и ни в коем случае, не дай аллах,
процедур вызова самостоятельных функций и глобальных переменных. В
Перехват ошибок. Процедура, в результате которой при возникновении ошибки в процессе выполнения приложения, управление передается определенному фрагменту кода (называемому обработчиком ошибок). Если ошибки в приложении Access не перехватываются, то в случае возникновения ошибки выводится стандартное модальное диалоговое окно с соответствующим сообщением.
Рекурсивная функция: любая функция, которая использует вызов самой себя из своего же тела.
Скрипт: текст, содержащий программу, которая будет исполняться сразу в предназначенном для этого компьютерном приложении (запускаемом на компьютере), без создания исполняемого файла программы - приложения. Т.е. это - часть какой-то программы, которая позволяет писать в ней тексты на специфическом языке программирования. Так, написание текстов на языке вэб-программирования - это скрипты, исполняемые вэб-просмотрщиками.
Тип данных. Характеристика, определяющая способ интерпретации компьютером определенного элемента данных. Данные разделяются на два семейства: строки, которые обычно содержат текст или читаемый набор символов, и числовые данные. Набор типов числовых данных зависит от используемого интерпретатора или компилятора Большинство компьютерных языков поддерживает также определяемые пользователем типы данных, называемые записями или структурами. Пользовательский тип данных является объединением нескольких стандартных типов. Типы данных полей таблиц базы данных в этой книге рассматриваются отдельно.
Еще статьи про другие предметные области:
Обнаружен организм с крупнейшим геномом Новокаледонский вид вилочного папоротника Tmesipteris oblanceolata, произрастающий в Новой Каледонии, имеет геном размером 160,45 гигапары, что более чем в 50 раз превышает размер генома человека. | Тематическая статья: Тема осмысления |
Рецензия: Рецензия на книгу Дубынина В.А. Мозг и его потребности. От питания до признания | Топик ТК: Интервью с Константином Анохиным |
| ||||||||||||