При закрытии подписчики были переданы в рассылку "Как создать свой сайт и заработать?" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Информационный Канал Subscribe.Ru |
Программирование с нуля - это совсем просто!14) От калькулятора к компьютеруНастоящее программирование начинается там, где возникает возможность постоянного интерактивного взаимодействия программы с пользователем, получения от него различных данных и их оперативной обработки. Для организации такого процесса одной команды ожидания нажатия на клавишу не достаточно. В Delphi существуют самые разные способы ввода информации: например с клавиатуры или с помощью мыши. Но просто получить от пользователя какие-то данные мало. Надо также договориться о способе их хранения, причем так, чтобы эти данные были постоянно доступны в программе. Все данные программы, которые на протяжении ее работы разрешается изменять, хранятся в ней в так называемых переменных (переменных величинах). Переменная - основополагающая концепция любого языка программирования (это слово - не прилагательное, а существительное!). Для переменной отводится некоторое место в памяти компьютера на период работы программы. Только обращаться к ней для удобства можно по произвольному названию (символьно-буквенному идентификатору), выбранному самим программистом. Связывание названий переменных с конкретным местом в памяти выполняет компилятор, поэтому прикладному программисту можно не беспокоиться о том, как это происходит. Для того, чтобы повысить наглядность программы и упростить работу компилятора, система программирования обычно требует от разработчика явного указания названий всех переменных, которые будут использоваться в программе. Создание переменных Перед тем, как в программе произойдет первое обращение к некоторой переменной (области памяти), эту переменную необходимо создать (еще говорят - определить, описать, объявить или декларировать). Другими словами, надо выполнить резервирование памяти - это сделает компилятор, который отметит, что такое-то название переменной соответствует такой-то области памяти (какой - он решит сам :). Объявление переменных может выполнятся в разных местах программы, но лучше это делать где-нибудь в начале текста, чтобы потом не отыскивать нужное место. Некоторые языки программирования вообще разрешают объявлять переменные только в начале различных блоков, модулей текста. Создание переменной в программе на Паскале происходит с помощью команды var (variable), за которой следует одно или несколько названий переменных, перечисленные через запятую. Все эти названия не должны совпадать друг с другом, с определенным набором слов Delphi, которые уже применяются для других целей в самом языке (например, begin и end; такие слова называют служебными, ключевыми или зарезервированными; они, кстати, в редакторах подсвечиваются другим цветом), а также и с различными стандартными названиями функций, которые подключаются из библиотек. Отметим различие между понятием "команда" программы и "оператор" программы. Команда - понятие универсальное и представляет собой произвольную инструкцию компьютеру (а нередко - и компилятору) на выполнение некоторых действий. А оператор - это команда, которая отдается с помощью ключевых слов и некоторых символов конкретного языка программирования. Например, в Паскале команда вывода WriteLn() считается оператором языка, а вот в Си команда cprintf() не входит в список служебных команд языка, а считается функцией, вызываемой из библиотеки. Но операторы обычно предназначены прежде всего для управления логикой выполнения программы, а не для выполнения конкретных операций, поэтому подход Си более корректный. В некоторых языках все команды считаются операторами. В других есть разделение между операторами, командами описания и т. д. Так, var в Паскале, строго говоря, это не оператор, потому что резервирование места в памяти выполняет компилятор, и при выполнении программы команда var уже вообще не существует - все связи между переменными подготовлены заранее. То есть команда var на самом деле в готовой программе не выполняется. Нужна она для удобства нас с вами - чтобы явно видеть, какие переменные мы решили использовать. Но это тонкости, не очень важные. Главное, знать, что перед использованием переменных их надо объявить с помощью соответствующей команды языка программирования. А как, кем и когда она будет реализовываться, прикладному программисту знать не так важно. Название переменной представляет собой произвольную комбинацию букв, чисел и символов подчеркивания. Правда, такое название не может начинаться с цифры. В качестве букв можно использовать только символы английского алфавита. Вот допустимые примеры названия переменных Delphi:
Privet Следует учитывать, что в названии не различаются строчные и прописные буквы. Так, следующие названия переменных будут одинаковыми и обозначают одну и ту же переменную:
ADD После идентификатора - названия переменной - в команде var ставится двоеточие, после чего указывается вид (обычно называемый тип) данных, которые записываются и хранятся в этой переменной. В заключение ставится, как обычно, точка с запятой. В одних переменных могут храниться целые числа, в других - дробные, в третьих - строки и т. д. Сделано так, чтобы люди не пытались (по ошибке или умышленно :) складывать числа с, напрммер, строками. Точнее, люди-то могут пытаться, но их незаконные действия будут путем анализа типа хранимых данных быстро выявлены :) Каждому типу данных соответствует свое ключевое слово Delphi. Так, целому типу соответствует название Integer, дробному - Real, строке - String. А вот примеры их определений: Var Privet: Integer; Var i: Real; Var Agent007, Delphi_1234567: String; В последнем случае обе переменные Agent007 и Delphi_1234567 считаются имеющие тип "строка" (предназначены для хранения строк). После того, как переменная в программе определена, ее можно использовать - но только в тех командах, которые будут следовать после Var. Условно можно считать, что как только компилятор встретит команду Var Privet: Integer; он выделит в памяти некоторую область, и в дальнейшем будет автоматически заменять название этой переменной на обращение к данной области. Достаточно понимать, что в переменной (ячейке памяти) хранятся данные определенного типа, которые можно считывать из этой ячейки, обращаясь только к названию переменной, и таким же способом записывать в нее новые значения. Одно из важнейших предназначений переменных - хранение данных, полученных от пользователя. В дальнейшем эти данные можно обрабатывать в программе самыми разными способами. Способы занесения данных в переменные и считывания в следующем занятии. Вот как могут быть определены переменные в программе на Delphi: {$APPTYPE CONSOLE} Var Privet: Integer; Var i: Real; Var Agent007, Delphi_1234567: String; begin Write(2 + 2); ReadLn; end. В Delphi-программах команда описания переменных var должна располагаться вне пары ключевых слов begin / end ! Тем самым подчеркивается ее не-выполняемость, инструктивность, пассивность. Если запустить такую программу на выполнение, то окажется, что Delphi перед запуском выдаст несколько каких-то сообщений. Они будут видны в нижней части окна редактора: http://russianenterprisesolutions.com/sbo/im/61.gif Это сообщения компилятора, который обнаружил, что в исходном тексте не все так гладко, как было раньше. Компилятор вообще - инструмент очень интеллектуальный, он выявляет такие вещи и неточности в исходных текстах, которые человеку часто очень сложно заметить. Поэтому к его подсказкам всегда имеет смысл прислушиваться. Кстати, перед запуском программы можно предварительно скомпилировать исходный текст без выполнения - для этого надо нажать комбинацию клавиш Ctrl + F9. Это полезно, чтобы убедиться, нет ли в тексте каких-либо неточностей. В нашем случае серьезных ошибок не обнаружено. Все сообщения компилятора начинаются со слова hint - подсказка. Это значит, что программа работоспособна, только ее работа может отличаться от того, что программист задумал. Тексты всех подсказок практически одинаковы. Например: Variable Privet is declared but never used. Оно гласит: переменная Privet объявлена, но нигде не используется. То же и в отношении других переменных. Видите, какой умный компилятор! Бывают еще сообщения компилятора - warning (так и переводятся - сообщение :), для более подозрительных случаев. Ну а если ошибка выявлена (error), то готовая программа уже не создастся и не запустится, пока ошибку не исправить. Например, если в одной из команд var пропустить двоеточие Var i Real; то появится точное сообщение об ошибке: ", or : expected" - символ запятой или двоеточия пропущен! И т. д. Поэкспериментируйте с программой, позадавайте ей различные неверные варианты текста, два раза переменную объявите там, убедитесь, как метко компилятор находит ошибки. В идеале хороший код не должен содержать ни одного, как говорят программисты, хинта, не говоря уже о варнингах :) В Бейсике вместо слова var выбрано слово Dim. Вместо двоеточия после названия переменной ставится ключевое слово As. Целое так же Integer будет, строка - String. Только для дробных вместо Real надо указывать Double. Module Module1 Sub Main()
Dim i, Privet As Integer
Console.WriteLine("Hi. I am.") End Sub End Module Команду компиляции (без запуска на выполнение) можно выполнить в Visual Studio .NET комбинацей клавиш Ctrl + Shift + B.
В Си++ чуть-чуть посложнее. Здесь сначала указывается тип переменной, потом - она сама (список идентификаторов через запятую), и точка с запятой в конце. И никаких Var и Dim! Си вообще очень краткий. Кроме того, в нем делается разница между записью маленькими и большими буквами - переменные i и I считаются разными! Часто начинающие с этим путаются. Вроде переменная есть, а программа ее не понимает :) Целое обозначается ключевым словом int, дробное - float. #include "stdafx.h"
int i, Privet;
int main() { } Со строками посложнее. Типы данных, которые имеются в языке и не требуют подключения внешних библиотек для их использования, называются базовые. В Паскале Integer и String базовые типы, в Бейсике - тоже (по-моему :). А в Си++ базовые int и float, а вот строки - нет. Для работы со строками надо внешние библиотеки подключать. Например, есть в Си++ такой тип CString, для его использования нужна библиотека atlstr.h. Тогда программа, в которой можно создавать переменные, хранящие строковые данные (точнее, данные типа CString), так запишется: #include "stdafx.h" #include "atlstr.h" CString s;
int main() } Здесь s - переменная типа CString.
Что-то интернет не работает, вся работа парализована :) Никак не сделаю выпуск с заданиями и решениями. В следующий раз - точно! :) (c) 2004 Сергей Бобровский bobrovsky@russianenterprisesolutions.com
Школа программирования с нуля
Все предыдущие выпуски базового курса тут:
|
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.prognull |
Отписаться |
В избранное | ||