Урок 21 Немного общих сведений.Типы данных.
April 14, 2006
в колонках играет Deep Purple-Soldier of fortune
Вы наверное думаете, что я немного дурак...То выкладываю статью, как изменить цвет у лэйбела, то рассказываю о написании граф.просмотровщиков.Скачу от простого к сложному и наоборот...Это наверно из-за того, что раньше я не писал подобные статьи и опыта у меня в этом деле мало. Сегодня я просмотрел свою писанину(я имел ввиду статьи, а не то что вы подумали:) ) и кое-что понял - у меня не хватает объяснения самых элементарных понятий.Кто до этого программировал в других языках, тот с лёгкостью понимает всякие условные операторы, типы данных и прочие мелочи.А вот новичок с ума сойдёт и наложит на себя руки от всего этого многообразия.Со временем я буду добавлять общие сведения на разные темы.Раньше я их пропускал, так как считал демагогией и ересью, но потом удостоверился что это нужно для написания нормальных программ.Общие принципы примерно те же, что и во всех языках высокого уровня, а вот синтаксис разный.Наверное, начну..
ТИПЫ ДАННЫХ ----------------------------------------------------------------------------------------------
int -(integer)целочисленная переменная, может принимать любые целые значения в каком-то диапозоне(что-то не помню в каком)
long int -если вы использовали int, а компилятор вам говорит, что вы ему присвоили нездорово большое число, то используйте этот тип переменных.То же самое что int, тока диапозон значений побольше.
float -число с плавающей точкой, простым языком - десятичная дробь(ex. 1234.55)
char - символьная переменная, содержит одно значение(буква, цифра и т.д.), имеет код от 0 до255
bool - логическая переменная, может принимать только два значения: истина(true) или ложь(false)В программах можно использовать 1 и 0 вместо true и false
AnsiString - строка, состоящая из набора символов из ANSI, пришла на замену неудобному массиву char[xxx]
String -практически то же самое, что и AnsiString
УСЛОВНЫЕ ОПЕРАТОРЫ, ЦИКЛЫ ----------------------------------------------------------------------
1)if,else - условный оператор
Структура:
if(условие)
{
если условие истинно, то выполняются следующие действия
;
}
else
{
если условия не верны, то выполняются действия в этих фигурных скобках
}
2)for -циклический оператор
for(int i=0;i<100;i++)
{
выполняемые действия ;
}
3)while -циклический оператор
i=0;
j=100;
while(i<j)
{
действия;
i++;
}
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ ----------------------------------------------------------------------------
Поначалу эта вещь бывает непонятна, но она очень важна в программировании.
Сейчас попробую объяснить.Возьмём две переменные: типа int и String.
Теперь присвоим переменной типа String какое-нить число. Давайте используем функцию StrToIntr, которая преобразует строку символов в число.
int num;
String s="1234567890";
num=StrToInt(s) ;
Эта функция преобразует переменную s в число и заносит это значение в num.
Можно конечно написать и StrToInt(s); , но тогда преобразование выполнится, но ничему не присвоится, т.е будет бесполезно.
Держите клавишу Ctrl нажатой и кликните в .то время по StrToInt.
Должен открыться файл SysUtils.hpp и курсор будет мигать на строке
extern PACKAGE int __fastcall StrToInt(const AnsiString S);
int - означает какое значение возвращает данная функция
const AnsiString -
показывает параметры функции, т.е. что писать в скобках(параметров может быть много и тогда они пишутся через запятую)
Просмотрите этот файл на досуге, там много интересных функций, а если вы знакомы с английским языком, то без труда поймёте, что делают некоторые из них...Чем мне нравится билдер- переводишь название функции на русский и становится сразу понятно, для чего она нужна.
Продолжу эту тему..Сейчас покажу, как создать свою функцию с параметрами.
до обработки функцией:
Fuck!
после:
Fuck!
Fuck!Fuck!Fuck!Fuck!
листинг unit1.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
AnsiString Fuck(int count,AnsiString text) //собственна наша функция
{
String s="";
for(int i=0;i<count;i++){s=s+text;}
return s;
}
//не забудьте на форму кинуть button1
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(Fuck(5,"Fuck!"));
}
ИНФОРМАЦИЯ О #INCLUDE, *.H, *.CPP, *.BPR
Пограмма написанная на C++ Builder содержит исходный файл(с расширением cpp) и заголовочный файл.
В основном файле лежит весь наш код программы.В заголовочном файле указаны библиотеки, которые мы подключили(#include "xxx") и объявляются переменные, функции и компоненты.
ПОЛЕЗНЫЕ СОВЕТЫ -------------------------------------------------------------------------------------
1)Используйте try и catch в тех кусках программы, где программа может выдать ошибку, а корректной её обработки вы не знаете.Очень удобно, особенно при разработки интернет-приложений и работой с NMHTTP и NMFTP.
конструкция:
try
{
здесь пишите действия, которые хотите выполнить и программа честно пытается это сделать
}
catch(...)
{
если не получилось выполнить действия или возникла ошибка, то здесь можно об этом сообщить пользователю(ShowMessage("FATAL ERROR!Die!");) либо выполнить другие действия
}
======================================================================
2)Относительне пути к файлу хорошо использовать при работе с html, но в билдере это иногда может привести к неработоспособности приложения, особенно, если ипользовался FileListBox .
Поэтому в секции private:
в заголовочом файле(по умолчанию unit1.h) напишите String dir;
А в событии формы onCreate напишите:
dir=ExtractFilePath(Application->ExeName);
======================================================================
3) комментарии очень полезны в здоровенных программах, которые вы потом будете писать
Их можно представить двумя способами
//тут немного
//комментариев
и
/*многострочный комментарий
----
----
вот так вот*/
======================================================================
4)параметры командной строки.Вы наверно задумывались - почему когда из проводника открываешь текстовый файл - открывается не просто блокнот с пустым поле, а имеено нужный нам файл.Так вот, там ипользуют эти самые параметры командной строки, в которых указано имя файла.
Как получить параметры командной строки?
Самый простой вариант - использовать ParamCount() и ParamStr(int Index).
Работает это так: функция ParamCount() возвращает количество параметров,
функция ParamStr(int Index) - значение соответствующего параметра,
ParamStr(0) - путь к программе, включая имя диска и имя самого исполнимого файла (который, кстати, можно получить еще так: Application->ExeName)
Пример:
for (int y=0;y<=ParamCount();y++)
{
ShowMessage(ParamStr(y));
}
Если есть вопросы по этому материалу или вопросы в принципе, пишите на мыло,
ответы постараюсь выложить в последующих уроках.
Author of article - MA F*CKA CREW 2006
www.builderhelper.3dn.ru
builder.helper@rambler.ru