четверг, 10 ноября 2011 г.

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

вторник, 16 августа 2011 г.

Delphi Работа с твиттером

Привет уважаемый читатель моего блога!
Я сегодня расскажу как можно авторизовать в
твиттере и научимся отправить сообщения в твиттер
и читать пользователя. Мы не будем использовать  твиттер API а будем работать со страницей m.twitter.com то есть с мобильной версий сайта.

Авторизация
Нам понадобится сниффер HTTPFox, я проводил маленький обзор в этой статье там же и лежит ссылка на сниффер. И как раз мы проверим его на практики какой уж он удобный ;-). Заходим в наш браузер, заходим на страничку https://mobile.twitter.com/session/new тут же мы видим формы для заполнения.
Вот тут же и включаем сниффер, заполняем формы "Имя пользователя и Пароль" и жмем "Войти" и возвращаемся в сниффер на вкладку "POST Data" смотрим какие параметры нужно заполнить.
Это параметры username - имя пользователя, password - пароль, а параметр authenticity_token его нужно с парсить со странице он постоянно изменяется, не веришь? Это можно проверить, давайте попробуем опять зайти на страницу и войти.
 Вот смотрите сами значения поменялись. Так теперь ищем в коде странице значение "authenticity_token" будет разумно воспользоваться поиском.

Как вы видите значение "authenticity_token" в коде странице найдено, вот вся строчка кода.

<form action="https://mobile.twitter.com/session" method="post">

<div style="display: inline; margin: 0; padding: 0;">

<input name="authenticity_token" type="hidden" value="ef37b9fb28969820ad5a" /></div>

</form>

Теперь нужно вытащить все что хранится в value="" то есть то что нам нужно, и после заполнить параметр. Что бы вытащить все что хранится в
value=""
 мы воспользуемся  функциями pos/copy их будет достаточно. 

var

auth_t: string; // хранится значение authenticity_token

...

procedure TForm5.Button1Click(Sender: TObject);

var

get: String;

begin

get := IdHTTP1.get('https://mobile.twitter.com/session/new');

auth_t := Copy(get, Pos('type="hidden" value="', get) + 21, 20);

// Вытаскиваем значение authenticity_token

end;

Значение "authenticity_token" мы получили теперь нужно заполнить поля "Имя пользователя, Пароль" и по пробовать авторизироваться. 
var

auth_t: string; // хранится значение authenticity_token

...

procedure TForm5.Button1Click(Sender: TObject);

var

data: TStringList;

get: String;

begin

get := IdHTTP1.get('https://mobile.twitter.com/session/new');

auth_t := Copy(get, Pos('type="hidden" value="', get) + 21, 20);

// Вытаскиваем значение authenticity_token

data := TStringList.Create;

data.Add('authenticity_token=' + auth_t); 

data.Add('username=' + login.Text);

data.Add('password=' + pass.Text);

IdHTTP1.Post('https://mobile.twitter.com/session', data); 

 // Отправляем все параметры

get := IdHTTP1.get('https://mobile.twitter.com/');

if Pos('Home', get) <> 0 then

begin

ShowMessage('Авторизовались удачно!');

Button1.Enabled := False;

end

else

ShowMessage('Авторизовались не удачно!'); 

// Проверяем авторизовались или нет 

end;

Вводим значения в login.text и pass.text и пробуем авторизоваться. У меня все работает!
Отправка твита 
Ну вот пожалуй и все, мы авторизовались. Давайте научимся отправлять сообщение в твиттер. Заходим на страницу твиттера, только уже нужно будет войти в твиттер включаем сниффер пишим сообщение и отправляем. Заходим на вкладку "POST Data" смотрим какие параметры нужно заполнить.
 Параметр authenticity_token у нас уже есть нам нужно только вставить как мы делали с авторизацией, параметр tweet[text] тут хранится текст для отправки сообщения остальные параметры пустые мы их так и оставим.

procedure TForm5.Button2Click(Sender: TObject);

var

send: TStringList;

begin

send := TStringList.Create;

send.Add('authenticity_token=' + auth_t);

send.Add('tweet[text]=' + twit.Text);

send.Add('tweet[in_reply_to_status_id]=');

send.Add('tweet[lat]=');

send.Add('tweet[long]=');

send.Add('tweet[place_id]=');

send.Add('tweet[display_coordinates]=');

// Заполнили все поля

idHTTP1.Post('https://mobile.twitter.com/',send);

// Отправляем заполненые параметры

end;
Фолловинг
Вот и все, все очень легко! Сниффер нам очень помогает :) Теперь научимся читать пользователя не буду так же все подробно показывать тут почти тоже самое покажу только код.

procedure TForm3.Button5Click(Sender: TObject);

var

follow: TStringList;

begin

follow := TStringList.Create;

follow.Add('authenticity_token=' + auth_t);

follow.Add('last_url/=' + name.Text);

// Заполнили все поля

idHTTP1.Post('https://mobile.twitter.com/'+ name.Text +'/follow',follow);

// Отправляем заполненые параметры, то есть фолловим!

end;

Далее можете сами уже улучшать вашу программу. Ну вот и все написал долгожданную статью которую хотел написать очень давно, оцениваем:)
 

четверг, 11 августа 2011 г.

Работа с twitter'ом без использования API Twitter


Маленький обзор http сниффера

В данной статье я хочу показать сниффер с котором я более часто работаю. Кто не в курсе сниффер нужен для просмотра/изменения заголовков HTTP запросов. В моем случае сниффер нужен для просмотра параметров POST.
HTTPFox - Плагин для Firefox, на мой взгляд очень удобный без всяких лишних фантиков. Как установиться плагин я думаю знайте.

 
Открываем "Инструменты - HttpFox - Toggle HttpFox" и появляется окно в браузере.

 Открываем "Инструменты - HttpFox - Open In Own Window" и логируется уже все в отдельном окне.

Плагин вполне очень удобный и справляется со своей задачей очень хорошо. Большой  за удобство :)  А каким сниффером пользуешься ты?

понедельник, 23 мая 2011 г.

Пишем ICQ Бота-шпаргалку


Скоро у меня экзамены - заканчиваю 9 класс. Решил сделать ICQ-бота, который выступит в роли шпаргалки. Вдруг попадется билет, который я не знаю. Все билеты учить, разумеется, лень, а хорошую оценку ой как хочется. Итак, как же будет работать наша программа?
Принцип таков: Мы отправляем номер билета боту, он в соответствии с предварительно составленной «базой» отправляет нам ответ. Как полагается, начнем с интерфейса. Для начала нам потребуется компонент ICQClient. Наверняка у тебя его нет, поэтому скачиваем по этой ссылке.
Как его установить?
1) Открываем TICQClient.dpk;
2)Переходим в меню Tools -> Environment Options -> Library;
3)Жмем кнопку "..." напротив Library path;
4)Добавляем путь к папке, где лежит компонент;
5)Возвращаемся к окну с открытым .dpk, жмем Compile и Install по очереди;
На вкладке Samples палитры компонентов должен появится наш компонент.


Кидаем на форму компоненты:
  • 1 Memo с именем ICQLog;
  • 2 Edit с именами UINEdit и PasswordEdit;
  • 2 Button с «кепшинами» - «Онлайн» и «Оффлайн», и именами OnlineBtn и OfflineBtn соответственно;
  • 1 Label, переименованный в ICQStatus;
  • 1 Timer;
  • 1 ICQClient, переименованный в ICQ;
При нажатии кнопки «Онлайн» будем подключаться к серверу. Для этого в обработчике кнопки пишем следующее:

procedure TForm1.ICQOnlineClick(Sender: TObject);
begin
// Проверяем корректность введеных значений
if (UINEdit.Text = '') or (PasswordEdit.Text = '') then
// если поля пусты, то предупреждаем об этом пользователя
MessageDlg('Поля UIN и Пароль не должны быть пустыми!',mtError,[mbYes],0)
else
// Пытаемся подключиться
begin
ICQ.UIN := StrToInt(UINEdit.Text);
ICQ.Password := PasswordEdit.Text;
ICQ.Login();
ICQLog.Lines.Add('Соединение сервером ICQ... ');
end;
end;

Тут проверяем корректность введеных значений, если поля введены корректно то подключаемся и пишим в лог (ICQLog)  «Соединение сервером ICQ... »

Обработчик нажатия на кнопку «Оффлайн» довольно прост и понятен:

procedure TForm1.ICQOflineClick(Sender: TObject);
begin
ICQ.Disconnect;
end;

Далее мы проверяем подключились ли мы. Для этого у ICQ создаем обработчик события OnLogin.

procedure TForm1.ICQLogin(Sender: TObject);
begin
if ICQ.LoggedIn then
begin
ICQStatus.Caption := 'Онлайн'; // Меняем «статус» подключения
OnlineBtn.Enabled := False; // Отключаем кнопку Онлайн
OfflineBtn.Enabled := True; // Включаем кнопку Оффлайн
Timer1.Enabled := True; // ...и таймер
end
else
begin // Тут все, практически, наоборот
ICQStatus.Caption := 'Оффлайн';
OnlineBtn.Enabled := True;
OfflineBtn.Enabled := False;
Timer1.Enabled := False;
end;
end;


Если (ICQ.LoggedIn) равно True мы «Онлайн», False мы «Офлайн».

Для таймера у нас заготовлен такой код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ICQ.SendKeepAlive; // Даем знать серверу, чтомы все еще Онлайн
if ICQ.LoggedIn then // Дальше ты уже знаешь что происходит :-)
begin
ICQStatus.Caption := 'Онлайн';
OnlineBtn.Enabled := False;
OfflineBtn.Enabled := True;
Timer1.Enabled := True;
end
else
OfflineBtn.Enabled := False;
Timer1.Enabled := False;
end;
End;

SendKeepAlive нужно отсылать на сервер каждые 2 минуты чтобы давать знать что мы еще весим в «Онлайн»
В событие OnError все того же компонента ICQ суём вот такое:

procedure TForm1.ICQError(Sender: TObject; ErrorType: TErrorType;
ErrorMsg: String);
begin
ICQLog.Lines.Add('Ошибка при подключении. '); // Логируем событие
Timer1.Enabled := False; // Отключаем таймер
End;

Вот и дошли до самого главного - событие OnMessageRecv. Оно позволяет получать входящие сообщения. В папке, например, «Информатика» будут хранится *.txt-файлы, которые проименованы по номерам билетов.
Здесь мы обрабатываем входящее сообщение. Отправлять боту мы будем только номер билета. А бот, если существует файл с таким именем (номером вопроса), открывает нужный файл, считывает ответ на вопрос билета и отсылает обратно.
procedure TForm1.ICQMessageRecv(Sender: TObject; Msg, UIN: String);
var
f: TextFile; // Текстовый файл, который будем открывать
bilet: String; // Содержимое файла
begin
ICQLog.Lines.Add(UIN + ': ' + Msg); // Логируем входящее сообщение
if FileExists('Информатика\' + Msg + '.txt') then
begin // Если существует запрошенный файл...
AssignFile(f,'Информатика\' + Msg + '.txt');
Reset(f); // ...то открываем его для чтения
While not Eof(f) do // И до конца файла
ReadLn(f, bilet); // Считываем каждую строку
ICQ.SendMessage(StrToInt(UIN), bilet); // Посылаем готовое сообщение
ICQLog.Lines.Add(UINEdit.Text + ': ' + bilet); // и снова логируем
CloseFile(f); // Освобождаем файл, т.к. больше он нам не понадобится
end
else // А если запрошенного билета (файла) нет
begin
// Посылаем соответствующее сообщение клиенту
ICQ.SendMessage(StrToInt(UIN),'Такого билета не существует!');
// И логируем
ICQLog.Lines.Add(UIN + ' : Такого билета не существует!');
end;
end;

Вначале кода мы добавляем в лог уин того кто нам прислал сообщение, и содержимое. Далее мы проверяем на существования файла в папке «Информатике», если файл существует мы связываем переменную «f» с файлом, и открываем файл для чтения.И до конца строкмы добавляем в переменную «bilet» текст и предаем содержимое.Нам не нужно рыться в каком либо коде и изменять переменные где содержится информация о билета, нам придется всего лишь зайди в папку и добавить *.txt файл с номером билета. Программа откроет нужный файл при небходимости и отправит его содержимое.Вот и подходит к концу данная статья, мы рассмотрели компонент ICQClient и научилсь им пользоваться, сделали простенький бот который будет небольшой шпаргалкой на экзамене.

воскресенье, 1 мая 2011 г.

Delphi 7 Установка RxLib

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



 

Установка RxLib, библиотека компонентов
Качаем RxLib, и далее идем по инструкции.    
1. Открываем File - Open: "RxCtl7.dpk, RxBde7.dpk, RxDb7.dpk, DCLRX7.dpk, DCLRXDB7.dpk,               DCLRXBD7.dpk" В окне выбора Open выделите нужные обьекты, удерживая Crtl.
       

   2. У вас должно появится такие окна:

 

После Project - Compile All Project
3. DCLRX7.dpk  [install]
    DCLRXDB7.dpk [install]
    DCLRXBD7.dpk  [install]
Должно появится окно:


И еще добавьте в папку Borland\Delphi7\Lib файлы из папки rxLib\rxLib567\RX\Units формата ***.dcu.
Вот сами компоненты:


Расмотрим компонент RxGIFAnimator
Кинем на форму сам компонент:
 RxGIFAnimator1.Image := 'Image.Gif'; // Адрес изображения
 RxGIFAnimator1.Animate := True; // Воспроизводится анимация
Ну вот пожалуй и все, анимация воспроизводится то что нам и нужно!! 

воскресенье, 17 апреля 2011 г.

Работа с файлообменником Часть 2

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

Дизайн не многим отличается от предыдущего, но мы добавили компонент Gauge он будет отображать прогресс(%) и добавили информацию сколько закачено и, размера файла. Кнопка Скопировать URL  наверняка вам уже понятно что тут подразумевается(копирование ссылки на файл).

Создайте новый проект, далее создайте объект потока File - New - Other - Thread Object объект потока назовем NewThread. Теперь посмотрим на код созданного потока.

unit Unit2;

interface

uses
Classes;

type
NewThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;

implementation

{ Important: Methods and properties of objects in visual components can only be
used in a method called using Synchronize, for example,

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure NewThread.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }

{ NewThread }

procedure NewThread.Execute;
begin
{ Place thread code here }
end;

end.
 
В процедуре Execute должен быть написан наш код который мы хотим добавить в многопоточность. У меня получился такой код:
procedure NewThread.Execute;
var
Data: TIdMultiPartFormDataStream; // Сюда будут загружаться данные, которые нужно заполнить
Http: TidHTTP;
begin
// Денамически создаем компонент IdHTTP
Http := TIdHttp.Create(Nil);
Http.HandleRedirects := True;
Http.Request.Referer := 'http://realfile.ru/';
Http.Request.UserAgent := 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.62 Version/11.01';
Http.OnWork := HttpWork;
Http.OnWorkBegin := HttpWorkBegin;
Http.OnWorkEnd := HttpWorkEnd;
// Добавили события к созданому денамическому компоненту idHTTP
Data := TIdMultiPartFormDataStream.Create;
Data.AddFile('file', Form1.FilePath.Text, 'multipart/form-data'); // Заполняем файлом
Data.AddFormField('descr', form1.FileDescr.Text); // Описание
Data.AddFormField('password', form1.password.Text); // Пароль
S := Http.Post('http://realfile.ru/', Data); // ссылка и отправляем пос запрос
S := Copy(S, Pos('value="',S)+7, Pos('" size="36">',S) - Pos('value="',S)-7);
Synchronize(ShowUrl);//Чтобы передавать какие то значения в процедуру, она должна вводится методом Synchronize
Data.Free; // Удалаем переменную, (освобождаем память)
end;

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

uses
Classes, IdMultiPartFormData,IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP, SysUtils;

type
NewThread = class(TThread)
private
S: String; // Тут будет результат отправки запроса
protected
procedure Execute; override;
procedure ShowUrl;
procedure HTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer);
procedure HTTPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
procedure HTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);

end;

Мы добавили переменную S в раздел private для того что бы можно было работать с ней в дальнейшем, так как у нас процедура ShowUrl передает результат на основную форму(программу). Процедура ShowUrl выглядит так:

procedure NewThread.ShowUrl;
begin
Form1.Url.Text := S;
end;

Основу программы мы сделали, нам осталось добавить (сколько программа загрузила КБ, сколько всего КБ). В процедурах HTTPWorkBegin, HTTPWork, HTTPWorkEnd. Напишим следуещий код:

procedure NewThread.HTTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
Form1.Gauge1.Progress := AWorkCount; // Сколько уже загрузили КБ
form1.Label5.Caption := 'Закачено: ' + IntToStr(AWorkCount div 1024) + ' КБ';
end;

procedure NewThread.HTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
Form1.Gauge1.MaxValue := AWorkCountMax; // Получаем размер загружаемого файла, и добавляем в максимальное значения Gauge1
form1.Label6.Caption := ' из ' +IntToStr(AWorkCountMax div 1024)+ ' КБ';
end;

procedure NewThread.HTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
form1.Caption := 'Загрузка завершена!';
end;

Вроде все, код для многопоточности мы написали:

unit Unit2;

interface

uses
Classes, IdMultiPartFormData,IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP, SysUtils;

type
NewThread = class(TThread)
private
S: String; // Тут будет результат отправки запроса
protected
procedure Execute; override;
procedure ShowUrl;
procedure HTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer);
procedure HTTPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
procedure HTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);

end;

implementation

uses Unit1;

{ Important: Methods and properties of objects in visual components can only be
used in a method called using Synchronize, for example,

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure NewThread.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }

{ NewThread }

procedureNewThread.Execute;
var
Data: TIdMultiPartFormDataStream; // Сюда будут загружаться данные, которые нужно заполнить
Http: TidHTTP;
begin
Http := TIdHttp.Create(Nil);
Http.HandleRedirects := True;
Http.Request.Referer := 'http://realfile.ru/';
Http.Request.UserAgent := 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.62 Version/11.01';
Http.OnWork := HttpWork;
Http.OnWorkBegin := HttpWorkBegin;
Http.OnWorkEnd := HttpWorkEnd;
// Добавили события к созданому денамическому компоненту idHTTP
Data := TIdMultiPartFormDataStream.Create;
Data.AddFile('file', Form1.FilePath.Text, 'multipart/form-data'); // Заполняем файлом
Data.AddFormField('descr', form1.FileDescr.Text); // Описание
Data.AddFormField('password', form1.password.Text); // Пароль
S := Http.Post('http://realfile.ru/', Data); // ссылка и отправляем пос запрос
S := Copy(S, Pos('value="',S)+7, Pos('" size="36">',S) - Pos('value="',S)-7);
Synchronize(ShowUrl);//Чтобы передавать какие то значения в процедуру, она должна вводится методом Synchronize
Data.Free; // Удалаем переменную, (освобождаем память)

end;

procedure NewThread.HTTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
Form1.Gauge1.Progress := AWorkCount;
form1.Label5.Caption := 'Скачано: ' + IntToStr(AWorkCount div 1024) + ' КБ';
end;

procedure NewThread.HTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
Form1.Gauge1.MaxValue := AWorkCountMax;
form1.Label6.Caption := ' из ' +IntToStr(AWorkCountMax div 1024)+ ' КБ';
end;

procedure NewThread.HTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
form1.Caption := 'Загрузка завершена!';
end;

procedure NewThread.ShowUrl;
begin
Form1.Url.Text := S;
end;

end.

Переходим на основную форму, на кнопку 'Загрузить' пишем следующий код:

Var
Potok: NewThread;
begin
Potok := NewThread.Create(True); // Создаем поток
Potok.Resume; // Запускаем
Potok.Priority := tpLower; // Приоритет низкий
end;


Кнопка Копировать URL:

ClipBoard.SetTextBuf(PChar(Url.Text));

Не забываем добавить в uses модуль, ClipBrd.
Ну вот и пожалуй все, не буду описывать кнопку выбрать и т.п так как в предыдущий статьи это было описано! Еще не подписался на RSS feed? Подпишись, и всегда будете в курсе!

воскресенье, 10 апреля 2011 г.

Работа с файлообменником

Сегодняшняя статья будет на тему ‘Работа с файлообменником’, для начала покажу как будет выглядеть наша программа.


Вот такой будет интерфейс. Кинем на форму компоненты:
  • GroupBox
  • Edit – 4 шт
  • Label – 4 шт
  • Button – 2 шт
  • IdHTTP
  • OpenDialog
  • uses IdMultipartFormData;
Забыл сказать с каким файлообменником мы будем работать, так вот он RealFile.ru. Кому лень заходить, выкладываю скриншот, ну тут уже видно  что нужно заполнить поля, сам файл который нужно загрузить и по желанию, описание и пароль.
  

Включаем ‘сниффер’ и смотрим какие данные отправляет страничка и куда.
  

  1. File – файл.
  2. Descry – описание.
  3. Password  – пароль. 
Теперь мы узнали какие поля  нужно заполнить, перейдем к кодингу. 
В кнопке ‘Загрузить!’, в событии OnClick пишим:

var
Data: TIdMultiPartFormDataStream; // Загружаются данные, которые нужно заполнить и чем заполнить
S: String; // Результат отправки Post запроса
begin
Data := TIdMultiPartFormDataStream.Create;
Data.AddFile('file', FilePath.Text, 'multipart/form-data'); // Заполняем файлом
Data.AddFormField('descr', FileDescr.Text); // Описание
Data.AddFormField('password', password.Text); // Пароль
S := Idhttp1.Post('http://realfile.ru/', Data); // Отправляем Post запрос, результат записываем в переменную S
FileUrl.Text := Copy(S, Pos('value="',S)+7, Pos('" size="36">',S) - Pos('value="',S)-7); // Парсим ссылку на залитый файл
Data.Free; // Удаляем переменную
end;
Ну вот и все. Заполнили все поля, отправили Post запрос с данными которые нужно заполнить получили результат, спарсили ссылку на файл. Скачать проект. 

пятница, 1 апреля 2011 г.

Опрос программистов. Часть 1

Здраствуй уважаемый читатель! Наконец то я закончил свой опрос, откликнулись 15 программистов и на это им большое спасибо! Участвуют мои знакомые, друзья и сообщество vr-online. Опрос будет состоять из 5 вопросов, которые будут содержать:
  • Как вы начинали программировать?
  • На каком языке начинали? 
  • Ваши советы новичкам? 
  • Какой язык вы считаете лучшим для обучения?
  • Какую литературу вы читали? Какую посоветуйте, для обучения? 
Для чего сделал этот опрос? Наверное для того что бы просто услышать как, начинали другие, и взять полезное из уст программистов, если еще ты новичок в этой сфере для тебя будет более полезно.



Давайте начнем! На верху ответов, у нас будет ник того кто отвечал. Начнем с первого,  был "hX", пожалуй начнем с него...

hX
  1. Начал заниматься программированием с 10 лет наверное. Просто появился интерес, купил книгу, и понравилось. А с тех пор, как дома появился Интернет, стало намного проще учить что-то новое.
  2. С языка Pascal (хотя сейчас не считаю его лучшим языком для обучения).
  3. Я бы хотел, что не следует относится к программированию как к работе. Оно, можно сказать, в душе, ведь это так круто - дать компьютеру любую задачу, и он её выполнит. 
  4. Python - мой любимый, кстати, язык. Он прост и современен: на нём написано много программ и модулей, он активно развивается и применяется, в нём есть принципы современного программирования. 
  5. Читал литературу Фаронова по паскалю, Павловскую по c++. Советовал бы читать официальную документацию языка (PEPs или MSDN, например) - ведь её пишут его создатели, лучше всего в нём разбирающиеся. 
LeoN
  1. Начинал я с поступления в вуз, до этого не программировал, но вследствие того что моя будущая профессиональная деятельность связана с программированием приходилось что то где то узнавать читать учить много, и течением времени начало все получаться.
  2. Начинал с Турбо Паскаля 7.0. Алгоритмы логика математические вычисления, все это применяется в среде программирования. 
  3. Хотел бы посоветовать новичкам чтобы они так же начали с Турбо Паскаля либо бейсика, читали литературу по части программирования и больше, больше практики.
  4. Паскаль ABC на мой взгляд лучший для обучения новичкам, и вообще в целях понимания. 
  5. В основном я учился по лекциям, а так же читал много всего читал из интернета с разных источников сейчас уже всего не вспомнишь. Литературу я посоветую такую: С.Окулов Основы программирования, Иванова Г.С Основы программирования. 
]/[ /\ |-() }{ @
  1. Начинал как и все, наверное, в школе. Классе в 8-9 на информатике. Решал, как мне тогда казалось, бесполезные математические задачи, не имеющие никакого отношения к "настоящему" программированию. Но именно эти задачи помогали освоить язык алгоритмов, что оказалось очень важным. 
  2. Первый язык програмирования с которым познакомился - Бэйсик. В рамках школьной программы мало что объясняли поэтому приходилось искать литературу самому. Первая программа (на Qbasic'e, как ни странно) написанная самостоятельно решала квадратные уравнения. Сейчас кажется ничего сложного, но тогда был очень доволен. Вообщем, так и заинтересовался программированием.
  3. Начинающим могу посоветовать в первую очередь определиться с языком программирования. Подобрать литературу по выбранному языку. Не стоит браться сразу за ассемблер или за С++. Эти языки большой популярностью пользуются среди "новичков". Думаю потому, что большинство вирусов, "програм для взлома", "хакерских утилит" написано как раз на них. Многих поэтому и привлекает программирование.   
  4. Начинать я советую с того же паскаля. Несложный синтаксис, большое количество доступной литеатуры. Дальше в перспективе Object Pascal (т.е. Delphi). 
  5. Для себя я литературу искал в интернете. Может электронная литератра это не так удобно, зато практично. В первую очередь потому, что её там полно в общем доступе, можно выбрать то, что тебе подходит. Не понравилась книга - удалил, нашел следующую. Единственное, что могу посоветовать: не пользуйтесь книгами из серии "...для Чайников", от них вреда иногда больше чем пользы.  
  Va-Bank 
  1. Поступил в колледж. Там на втором курсе были допотопные компы. Проходили GWBasic. Я ничего в этом не понимал. Причем даже понимать не хотел. Но потом мне купили компьютер на процессоре 386SX (40 МГерц как сейчас помню ). Вот тогда я загорелся программированием на QBasic. В связи с этим проблем в колледже с компами и GWBasic'ом, как вы сами понимаете, проблем больше не возникало. Потом на информатике я сидел и ковырялся в системе, когда остальные слушали препода. Времена менялись. Я решил перейти на Visual Basic. Что-то пытался делать, но тут я понял, что возможности его очень сильно ограничены. Эта была версия 4.0. Сейчас наверняка много чего можно будет сделать на этом языке. Устроился на работу. Напарник мне посоветовал Delphi. На тот момент 7 версия делфи была самая последняя Он меня уламывал полгода. Потом дал книжку. Не помню как называется. Она тоненькая была, больше на справочник походила, там примеры были аля как при наведении курсора мышки на кнопку, заставить ее бегать. Тупо считай переписывал код, хотя что-то в голове оставалось. Самое главное отличие для меня это было наличие begin ... end, ну и синтаксис конечно. И вот я на одном сайте добыл электронную версию Библии делфи С этого пошло и поехало. Комп конечно дома уже был другой. В общем "официально" я начал изучать и программировать на делфи в 2004 году. По сей день я кого-то учу, а у кого-то (даже у тех кого учу) сам учусь и узнаю что-то новое для себя. Как говорится чем дальше в лес, тем больше дров Сайт тот уже не существует. Я перешел на VR, искал достойную замену. Но это другая история... 
  2. GWBasic, QBasic, Visual Basic, Delphi (параллельно VBA) - в порядке изучения.
  3. Читать литературу конечно же. Мне иногда задают такие вопросы... Я начинаю объяснять, но меня не понимают. И я посылаю читать матчасть. В общем чтобы практиковаться, нужно иметь хотя бы общее представление о том, что делаешь. Литература (учебники, мануалы, статьи на сайте...) по-моему мнению на первом месте, потом практика по пройденному материалу.
  4. Сейчас Delphi. Но я очень хочу изучить C#. Руки не доходят.
  5. Начинал с библии делфи, потом DelphiWorld. До сих пор у меня на компе, бывает захожу и подсматриваю. Но статьи на сайтах считаю на данный момент самым лучшим мануалом. А если еще прикреплены исходники и лучше с комментариями... Просто вкусняшка :-D
raxp
  1. Поступил в колледж. Там на втором курсе были допотопные компы. Проходили QBasic. Я ничего в этом не понимал. . Купил на стипендию МК-61 (был такой программируемый советский бульбулятор, в аудиториях еще увеличенные его копии стояли), ваял на нем, как бы это сейчас назвать - скрипты что-ли ...а у некоторых "крутых перцев" был бульбулятор (модель не помню) даже с "флешкой". Потом универ, началась практика, на папиной работе договорились, чтоб имел доступ в местный ВЦ. Заинтересованность сохранилась. Писал на листиках программы, компьютера личного не было, вплоть до момента пока не ушел с первой работы (долг по зарплате вернули  :-D), учился и параллельно работал.
  2. QBASIC, Паскаль, FoxPro ...Delphi познал на заводе (начал с игрушки, работающей с простейшей БД, считаю - это лучшим вариантом заинтересовать), потом ушел на фирму, углубился в Си под МК, FBD под SCADA, VHDL под ПЛИС.
  3. Большинство всего до нас уже придумано, уметь пользоваться поиском самому, уметь находить нужное не только в литературе.
  4. Паскаль был для меня проще, а лучшего языка - нет. Какой нравиться - такой учите, главное - не останавливаться на достигнутом.
  5. Вообще, первая купленная мной книжка была - книжка Архангельского по Delphi. Однако на тот момент шерстил и форум "Королевство Delphi", наткнулся и на Delphi-world. Совет: если вы работаете с аппаратурой (железом), читайте спецификации (да, да, в мануалах можно найти и примеры API под железо ), а значит - учите английский.
sd
  1. В 10ом классе в лицее у нас было программирование. Изучали Turbo Pascal. Тогда для меня очень бесило "синее окошко", понимать ничего не пытался, т.к. до массивов все итак было понятно. Когда начали массивы - я подумал, что бред все это и забил. Потом перешли на консольные приложения delphi, но лучше от этого не стало =). На летних каникулах, перед 11 классом я как-то осознал, что всю жизнь играть в WoW нельзя, и деньги мне за это платить никто не будет. Решил, что надо учиться. Начал с delphi, только используя GUI. Писал всякий бред, даже не писал, а находил в Сети какие-то простенькие статьи по delphi и переписывал с них код. Ну так и началось...уже к концу августа я понимал, что пишу, зачем пишу и что еще написать, чтобы было лучше. В 11 классе у меня проблем с программированием не было. Я сдал все работы, которые надо было сдать в течение года за четверть и был счастлив. Потом, не помню почему, я решил, что Pascal - дохлый бесперспективный язык, и начал изучать C++. Понакачал с Интернета каких-то книжек и пытался что-то сделать и ничего не понимал как и чем. Потом наткнулся на Borland C++ Builder и начал писать там. Начало было таким же как и с Delphi, потом все стало отлично. Скачала отличную (для начинающих) книгу по BCB и начал заново учить по ней. Потом перешел на чистый С++ (консольные приложения + MVS). Скачал еще одну отличную книгу по С++ и начал читать ее. В общем к первому курсу я хорошо знал базу С++ и проблем с программированием в универе у меня не было. Недавно решил изучать Java. Скачал книгу и прочитал там первые 7 глав, а потом записался на курсы для начинающих. Благодаря моим знаниям по С++ основы Java не оказались трудными. Далее планирую изучать Java и С++ дальше.  
  2. Pascal, но считаю, что нормально начала программировать на C++.
  3. Пытаться во всем разобраться самому. Терпение и труд все перетрут. Тем более, что сейчас в Интернете полно информации.
  4. Наверное Pascal. Хотя не важно на чем начинать. Главное что бы было желание и умение думать.
  5. "Либерти.C++ за 21 день" - я считаю, что это просто отличная книга для начала изучения. Все подробно расписано, после каждого раздела есть вопросы и упражнения. Потом можно почитать "Г. Шилдт. Самоучитель С++" - тоже отличная книга, но ее стоит читать обладая базовыми знаниями языка.
    По Java я бы посоветовал "Философия Java". Хотя отзывы об этой книге разные, мне она все же понравилась. Так же хорошая книга "П. Ноутон и Г.Шилдт. Полное руководство Java", но, как мне показалось, если бы я не знал С++, то было бы тяжело понять, про что пишут в этой книге. Ну и плюс ко всему Интернет.
AltaVista
  1. В очень раннем возрасте ко мне попал ноутбук, я тогда совсем малыш был, т.е. даже не подросток. На нем я научился работать в Paint Brush. Но как только я на нем смог воссоздать (на сколько это позволял паинт) значок из фильма Мортал Комбат (там дракон нарисован, кто помнит), я понял что мне надо больше. И вот тогда я и понял что хочу быть программистом (конечно я такого слова не знал, я просто знал что есть люди которые могут создавать программы, потом мне брат объяснил что такие люди это программисты). 
  2. Записывался на курсы по работе с офисными пакетами Ворд, Эксель. А потом записался на программирование на Turbo Pascal. Помимо того что давали на курсах читал и работал с книгой от издательства "питер", там есть серии книги "КомпАС", это была мега книга, все доступно и понятно! Тогда я еще не разбирался в языках программирования и для меня паскаль был единственным в своем роде. На нем я сидел очень долго! Прям очень очень долго!
    В итоге в паскале я насоздавал кучу модулей позволяющих рисовать на черном фоне как окна, кнопки, так и некоторые другие элементы управления. Чтобы сделать кнопки и окна типа объемными я высматривал как они отрисованны в виндоусе и все это копировал. Кнопки реагировали на нажатие мышки и т.д. т.е. был полноценный интерфейс.
    Но потом я понял что мне этого мало, и надо пересаживаться на что то посерьезней. Купил книгу по делфи (В.В. Фарнов Delphi 6), прочел и освоил за две недели! Без преувеличения. Просто работая в паскале и дойдя до предела, я как раз таки и понимал чего мне не хватает, чего не хватает самому паскалю, поэтому все то что было в делфи для меня было вполне логичным и ожиданным. Я так сказать именно все так себе и представлял. Потому и переход на делфи занял две недели (т.е. я просто две недели читал книгу).
     
  3.  Ставить задачи и решать их. Т.е. как ставить задачи? Придумай себе ту программу которая тебе нужна, так как ее проще будет делать, потому как тебе поможет энтузиазм. Я сам для себя писал очень много программ. И записные книжки, и информаторы, и базы телефонов переносил из телефонного справочника в электронный формат в свою программу и т.д. И даже игры писал. Словом надо ставить себе те цели которые будет интересно выполнять и которые ты не бросишь на пол пути.
  4. Нет лучшего языка для обучения. Везде надо стараться, практиковаться, изучать. По херу на каком языке. Но если бы я мог вернуться в прошлое, то выбрал бы не турбо паскаль, а языки С. Не потому что дефли хуже, я на нее не могу грешить так как она меня кормит, поит, дом построила, отдыхать позволяет, словом я с помощью делфи очень хорошо зарабатывал и зарабатываю, а просто потомц что на С очень много примеров кода на железо. Я сталкивался с такими железяками, и не умение читать код на С, очень плохо сказывался на моей работе, приходилось выкручиваться кое как. Но в идеале надо знать и тот и другой.
  5.  Ну по делфи я привел в тексте выше.

    А вообще еще дам рекомендации, прям такие которые жизненны. Вот как уже отмечал raxp это английский. Т.е. записаться на курсы и стремиться уметь читать, писать и свободно говорить на английском, на это ни каких денег жалеть не надо. Английский нужен не только для программирования, он просто нужен оп жизни. Я помню как школьные знания не раз приносили мне не солидную прибыль, но если бы я знал его, и умел хотя бы свободно разговаривать, то имел бы работу за границей, в очень престижном, в главное высокооплачиваемом месте!
    Так что учить английский по любому, можно русский не знать и писать не грамотно, можно не знать кто такой Лермонтов, а вот английский кровь из жопы, но НАДО!
    И второй совет житейский, всегда помни ради чего ты все это делаешь, ради чего ты изучаешь программирование, да и не только программирование, любая профессия, мы это делаем ради денег! Не надо продавать себя дешево. Программист способен упростить работу предприятия в двое, а то и более!
    Просто некоторые работодатели, говорят мол на кой хер платить программисту столько денег, он один хер типа два дня поработал, а потом не хера не делает. Это bлядь полная херня! Никогда не ведитесь на такой повод. То что шкодит программист и то что делает его программа в автоматическом режиме у работников в ручном режиме могут уйти недели, а то и месяца! Т.е. надо смотреть не по тому сколько программист в день сидит за компом, а на то сколько всего делается с помощью тех программ которые он делает!
    Еще совет - если у тебя заказывают программу, то требуй с них ТЗ. Иначе потом тебя заебут - "сделай нам это, сделай нам то". А так ты покажешь ТЗ и скажешь что все что в нем указано то и сделано, а остальные переделки за деньги! И составляй договор, никаких дружеских вариантов, только договор! Пусть самый простой. Но в нем должно быть указано сумма за работу, ее сроки, наказание в случае не исполнения программы в срок (этот пункт можешь не указывать в договоре, не опытные заказчики сами забывают поставить этот пункт, а тебе ни к чему самому проявлять инициативу в данном случае). Запомни - договор и ТЗ это твоя гарантия, и защита, твоя библия, твоя грааль и панацея от всех болезней! Да и когда требуешь договор и ТЗ клиент сразу смотрит на тебя как на профессионала.
    Будь в курсе новых технологий. Не обязательно их знать и изучать от и до. Надо просто быть в курсе что такие то и такие то технологии существуют. Это надо для того что бы если тебе поставили задачу, то мог сразу вспомнить что ее решить можно одним из новых удобных вариантов технологического решения. Это сильно упростит жизнь.
    Подытожим
    1. Английский
    2. Продать себя и свои умения как можно дороже.
    3. Составлять договора, требовать ТЗ!
    4. Не быть мудаком по жизни, но и не позволяй чтобы на тебе катались! (это относиться к любому человеку )
    5. Отдыхай. Не жмоть денег на хороший отдых, т.е. не надо конечно прожигать все деньги за раз, но работать как лошадь и не отдыхать тоже не следует, все в меру.
    6. Будь позитивен! )
    7. Не держи зла.
    8. Не дружи с теми кто огорчает тебя чаще, чем приносит радость.
    9. Анализируй ошибки (тогда в будущем ты сможешь делать более продвинутые ошибки из которых трудно будет найти выход ) )
    10. Выбери себе нищего на той улице по которой ходишь чаще всего и отдавай ему сколько не жалко денег, каждый раз когда его видишь.
    11. Дари радость и не жди в ответ спасибо.
    12. Не закрывай на зло глаза.
    13. Не бросай в беде никого!
    14. Найди себе врага которым ты мог бы гордиться!
    15. Не спи с кем попало без г*ндона.
    16. и т.д.
    17. и т.п.
    Короче как я и писал раньше просто не будь мудаком по жизни!
    Это только кажется что это не относится к программированию, но программист это способ мышления, это жизнь!
milice
  1.  В школе на уроках информатики.
  2. В школе программировали на советском алгоритмическом языке (АЛГОЛ по моему ...) + блок схемы, вообще ничего не было понятно ну и оценки за лабы то 2 то 3.
  3.  Читать, ОЧЕНЬ МНОГО читать всякие умные книжки, ну и практика нужна конечно. 
  4. В институте начинали с Turbo Pascal 7.0 ну мне нравилось и я считаю что лучше с него начинать, в МИНОБРе не дураки сидят рабочие программы для обучения создают... а потом Delphi. Хотел бы еще C++ и Java изучить но руки не доходят, ну и в принципе пока и не надо, Delphi за глаза хватает.
  5. Архангельский А.Я. вроде не плохо пишет. 
aka_GRAD
  1. А мне 8 классе брат компьютер подарил. До этого я пару раз садился за комп в школе и все. На компьютере игры играть не возможно было так, как драйвера не были установлены. В компьютер была записана игра Call of Duty 2, но я ни как ни старался не мог запустить ее. Единственным что оставалось это рисовать и печатать. В течении пол месяца я научился печатать вслепую. И наконец то я смог установить драйвера от видюхи и Ура!!! игра заработала. Поиграл я ее и в течении 2-х дней прошел. Потом интерес к играм пропал. В один день поехал я с братом на базар Photoshop покупать (это я тогда слышал про эту мега программу) и там я увидел диск программирование, на котором были почти все известные языки. 
  2. Но мне знакомый был QBasic (о ней слышал в школе), купили его и начал Бейсик изучать. И в один день я встретил бывшего препода по информатике и начал задавать ему вопросы про Бэйсик, он посоветовал мне оставить Бейсик и перейти на Делфи (заметьте не на паскаль, а на делфи). Только потом я узнал что надо было сначала изучить ПАСКАЛЬ. Так пошло поехало я начал изучать делфи.
  3. Отсутствует. 
  4. Отсутствует.
  5. Первая книжка была "Самоучитель по Delphi 7". Потом в инете нашел книгу Delphi глазами хакера я был восторге от этой книги. Потом уже Библию дельфи тоже прочитал (Жалко что Библию дельфи я прочитал после Delphi глазами хакера, а надо было наоборот).
    - Щас уже хочу переходить на C#.
    - Библия дельфи очень хорошая книга.
Кирилл Щербатов
  1. Помню как сейчас. На уроке информатики в 2 четверти 6 класса сидели с товарищем за одним компом, на рабочем столе увидели ярлык на интерпретатор... Товарищ сказал, что мол это круто, и мы такое только в конце года изучать будем... Открыли последнюю страницу учебника... До конца урока сделали "звёздное небо" - вручную (без цикла) поставленные 10 разноцветных точек... Ну дальше с графикой игрались, графити там всякие разные выводили... Учитель нас поддерживал, к концу четверти предложила перейти на Flash... Без литературы, без всего... Сначала всякой хренью страдали, но потом разобрались с простейшим Action Script(ом)... (Мол есть два фрейма, оба остановленны, и при нажатии на кнопку первого вклучается второй) За весенние каникулы сделал свою первую чентырёхуровневую игру (Ничего серьёзного, мол если нажать туда, запускается та анимация и т.п. Но смысл в ней был). В конце года получил кипу отксеренных листов про Паскаль. Взявшись за это дело, я мало что понимал... Но потом случилось озарение: я разобрался, что к чему, и уже на практике написал свою тестовую оболочку... Седьмой класс был просто экспериментами с Паскалем (Мечтал сделать СРЕДУ РАЗРАБОТКИ ТЕСТОВ, работающую, разумеется, с файлами), пустыми пробами пера в Delphi (Я делал программы из примеров, но не понимал их работы). На следующий год (8 класс) мне волею судьбы попалась электронная первая версия "Библии Delphi". Вот тут-то я и поразмыслил что к чему. К февралю 3 четверти сделал конкурсную работу на "Созвездие", где позже занял 4 место... Начало 9 класса (этого года) прошло в поисках реализации нужных мне идей: я создавал отдельно работающие программы (для воспроизведения видео и т.п.), чей код я в дальнейшем использовал в своей конкурсной работе этого года. Но ещё один IT-прорыв произошёл после регионального этапа олимпиады (в конце января). 
  2. Первым языком программирования у меня был QBasic.
  3. Отсутствует.
  4. Отсутствует. 
  5. Тогда-то я поднялся ещё на одну ступеньку (а может и на две). В любом случае, мой мозг теперь, ранее отрицающий существование DirectX и Windows API, готов к перевариванию информации по этой теме, а скорее даже не готов, а жаждет её.
    (На самом деле книг по Delphi я читал гораздо больше ("Delphi глазами хакера", "DirectX и Delphi. Искусство программирования", "Delphi 6. Учебный курс", "Программирование в Delphi 7", "Библия Delphi" (2 издание)), но повлияло сильно на меня именно ПЕРВОЕ издание "Библии...")
    (Очередное дополнение) Ещё в пятом классе я научился делать анимацию в презентациях (это было афигеть как круто) и с помощью Total Commander открывал архивы JAR (ява игр) и менял текстуры на чужеродные (менял текстуры в рамках одного производителя).
Fairhawk
  1.  Сначало кодил скрипты для игры TES 4: Oblivion, это был вообще мой первый опыт в программирование потом друг дал delphi..
  2. Delphi
  3. Читать, не много отдыхать, реализовывать прочитанное на примерах, найти то, что действительно интересно и т.п ИМХО конечно у каждого свой подход.
  4. Сначало паскаль. Он легкий, дает более или менее нормальное представление о программировании.
  5. Не помню, но много всего.
 WhiteP
  1. Тяга к прекрасному у меня от рождения . Поначалу в компьютерах интересовали только игры (начиная со Спектрума в детстве). Потом заинтересовало внутреннее устройство ящика, именуемого системным блоком. Почитал книг, разобрал, посмотрел. После того как разобрался с этим немного - стало интересно как работают и устроены собственно программы. Поступил после школы на специальность "Информационные системы". Там давали Delphi в основном, но у меня с ним как-то сразу не очень заладилось. Психологический барьер, так сказать. Когда не понятно как оно там реализовано - не очень интересно и понятно. В итоге пока все изучали Delphi, я приналег на архитектуру ЭВМ и ассемблер. Разобравшись до определенного уровня взялся за Си, а после и за Си++. 
  2. Формально - на Delphi. Фактически - на ассемблере.
  3. Да в принципе все уже посоветовали. Единственное, могу добавить - подналечь на математику. Мож кто-то скажет, что она нафиг не нужна и почти никогда не пригождается, но тем не менее, она формирует нужное программисту мышление (абстрактное и алгоритмическое). Того же Кнута (коего советовали выше) без твердых знаний математики (комбинаторики, дискретки, теорвера, теории чисел, немного матана...) осмысленно и эффективно читать оочень непросто (во всяком случае выполнить большую часть упражнений не удастся, я думаю).
  4. Зависит от склада ума, я считаю. Одним проще идти "снизу-вверх", другим наоборот. Но Си как раз то, что находится посередине .
  5. По Си - конечно K&R (это классика). После нее и нескольких написанных простых программ можно почитать Хэзфилда "Исскусство программирования на С" ("С Unleashed").
    По Си++ - Брюс Эккель "Философия С++" и, конечно, Страуструп. Вообще по Си++ очень много толковых книг...
    По асму - Кип Ирвайн (Ирвинг) "Язык ассемблера для процессоров Intel", Юров "Assembler. Учебник для вузов" и попутно мануалы от Intel. Неплохих книг по асму тоже море.
    По алгоритмам - для начала Ахо, Хопкрофт, Ульман "Структуры данных и алгоритмы", потом Кормена "Алгоритмы. Построение и анализ".
    По архитектуре ЭВМ - уже упомянутые выше мануалы от Intel, Таненбаум "Архитектура компьютера", Хамахер "Организация ЭВМ", Барри Брэй "Микропроцессоры Intel. Архитектура, программирование и интерфейсы".
krabche
  1. Классе в 8 записался на какие-то курсы по умнее чем компьютер для домохозяек. Там были базовые знание, скоропечатание, офис и входил небольшой курс Паскаля, с него и начал. Как то заинтересовался. Потом было немного Делфи. Сейчас С/С++. 
  2. На Паскале.
  3. Во первых это должно вас интересовать. Искать информацию самому, не ждать пока кто-то что-то объяснит. По началу пытаться изменять что-то в готовых примерах перепечатанных из книг или интернета и смотреть, что будет. Сам так часто делал.
  4. Паскаль, или можно Си. Думаю не стоит начинать с C# или Java.
  5.  Все известные книги по С/С++ Страуструп, Маейрс, Шилдт. Еще после освоения базовых знаний нужно почитать что-то по алгоритмам. Например, Кнута или других авторов - имена не помню. 
 Kastor
  1. Я первые программки тоже на Бейсике писал. Правда это был Турбо Бейсик, причем на ноутбуке дяди, у которого экран был черно-белым. Потом он мне подарил МК-85. Этакий КПК советский. На нем тоже писал (а больше просто списывал) программы на бейсике с одного журнала-книжечки выпущенной специально для него. Кстати, я этот МК-85 и книжечку отправил Spider_Net'y для Хабаровского компьютерного музея. Может, если у Игоря появится время, он отнесет его в музей и сделает заметку с фоткой
    Позже, я поспорил с одноклассником, что напишу прогу на бейсике не хуже, чем его брат на делфи. И я понял как был не прав. Появилась "Библия Делфи", начал вникать в этот язык. А после первого курса, мой одногруппник мне на день рождения подарил "С++ за 21 день". Я тогда подумал, что название у книги дурацкое и следовательно сама она, тоже. Но как же я был не прав! Это был один из лучших подарков. Теперь вот я больше С++ начал интересоваться.
Limonell 
  1.  Я программировать начал только в институте, до этого были попытки, но базовых знаний не хватало, и потому я ничего не мог понять. Лет в 16 купил книжку по Делфи от Бобровскго, но опять же, знаний не хватало, потому пришлось её отложить до лучших времён.
    В институте, на втором курсе нам С++ преподавали, но что-то не пошло у меня с ним, или же просто литературы я не мог подобрать нормальной под него, потому с 3го курса было решено серьёзно взяться за программирование на Delphi. Тут то я как раз и познакомился с Библией Делфи от Фленова. По началу всё же было не просто, но желание научиться программированию взяло своё, чему я только рад.
    Не могу сказать, что я супер программер, но мне этих знаний хватает чтобы уверенно себя чувствовать в решении элементарных лаб/курсовых, либо же каких то иных задач.
 
Заключение
Начинают все почти одинаково, и хотел бы сказать от себя, то что нужно уделять по больше внимания Матиматике. Ведь Матиматика для программиста очень важна, в каком то смысле слова программирование это та же матиматика... Ну вот пожалуй и все надеюсь опрос не прошел беследно для вас, и хотел сказать большое спасибо кто участвовал в опросе!!!

среда, 30 марта 2011 г.

Pascal (Паскаль) Random

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

var
i, s: Integer;
begin
randomize;
for i := 1 to 10 do
begin
s := random(10);
write(' ',s);
end;
end.

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

  • procedure Randomize(seed: integer);
    Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  • function Random(maxValue: integer): integer;
     Возвращает случайное целое в диапазоне от 0 до maxValue-1 

Что бы с генерировать к примеру от 22 до 64:

var
i, s: Integer;
begin
randomize;
for i := 1 to 64 do
begin
s := random(43)+22;
write(' ',s);
end;
end.

43 = 0..42
0 + 22 ... 42+22 = 22..64
Еще пример, от 100 до 200
var
i, s: Integer;
begin
randomize;
for i := 1 to 64 do
begin
s := random(101)+100;
write(' ',s);
end;
end.
101 = 0..100
0 + 100 ... 101 + 100 = 100 ... 200

понедельник, 28 марта 2011 г.

Паскаль Логика. Логические операции

Сегодня разберем что такое логика и какие операции существуют. В паскале, переменные логического типа описываются зарезервированным словом Boolean. Значение логического типа может принимать  False(Ложь) = 0 и True(Истина) = 1.
Логическое умножение (Конъюнкция)
Образованное в результате логического умножения (конъюнкции) истинно тогда, когда истины все входящие в него высказывания.  And - логическое  <И>.

A
B
T = A and B
0
0
0
1
0
0
0
1
0
1
1
1

То есть просто умножаем (1 * 0 = 0, 1 * 1 = 1, и т.д.) не забываем что 0 = False а 1 = True.
Логическое умножением означает не только And но и еще ^, &, *.

Логическое сложение (Дизъюнкция)
Образованно в результате логического сложения (дизъюнкции) истинно тогда или только когда, когда истинно хотя бы одно из входящих в него высказываний. Or (||, +, |,  ) - логическое <Или>.

A
B
T = A Or B
0
0
0
0
1
1
1
0
1
1
1
1

 Можно просто прибавлять (0 + 0 = 0, 1 + 0 = 1, и т.д.).

Логическое отрицание (Инверсия)
Присоединяется частица "НЕ (Not)". Логическое отрицание делает истинное высказывание ложным, а ложное истинно, то есть наоборот... 

A
T = Not A
1
0
0
1

Логическое следование (Импликация)
Ложно тогда или только тогда, когда из истинной предпосылки (первого высказывания) следует ложный вывод (второе высказывание) “Если A, то B

A
B
T = A -) B
0
0
1
1
0
0
0
1
1
1
1
1