Урок  2          "Еще немного о  Delphi"                                   

  by Frank Fortino (ffortino@svn.net)     Copyright 1999

Перевод на русский язык   Руденко Е.В.  janerev@hotmale.ru


   Содержание:


Привет,

Чем больше вы прочитали программных кодов, тем больше стали разбираться во внутренней структуре Delphi Pascal.
Когда я только начал изучать коды  Delphi , то знал , что означает всего несколько линий кода; все остальное я не понимал (например, что означает (Sender : TObject) )
Когда вы действительно изучите  Delphi, то начнете понимать КАЖДУЮ ЛИНИЮ кода


Для начинающих программистов, имеющих книгу  'Mastering Delphi 2,3 or 4',  я  рекомендую прочитать сначала 

следующие части:

    1   Форма - это окно ( Form is a Window)
    2   Окружение Delphi (Delphi Environment)
    4   Язык Паскаль (Pascal Lang).
    8   Основные компоненты (Tour of Basic Comps)
    13 Множественные формы (Multiple Forms $ Dialog Boxes)
    16 Построение приложений баз Данных (Building DB Apps)
         ...а только потом  другие части.


OK Давайте продолжим изучение  Delphi.

Что есть объект (компонент)?

Запомните - компонент это объект в вашей "палитре" компонентов
    -Объект может быть компонентом в вашей "палитре",
    -или чем-то еще , полностью состоящим из кода

-Таким образом  ОБЪЕКТ более общая вещь, чем КОМПОНЕНТ
-Все компоненты являются объектами
    -Но не все объекты являются компонентами (например, TStringList - объект , но не компонент)

Иногда я забываюсь и называю Компоненты Объектами (так же делают и некоторые другие люди).


-Что есть СВОЙСТВО (PROPERTY)?

- Свойство это просто Переменная  (например,  word, string,...) , которая имеет встроенные Методы (функции) 

для чтения и записи переменной

КОММЕНТАРИЙ:
Я иногда использую эти слова для обозначения одной и той же вещи (но они различны):
    -Процедура (Procedure) (кусок кода, который что-то делает)
    -Функция    (Function) (процедура, которая возвращает значение  (например, Result:=1 )
    -Метод  (Method) (процедура или функция , встроенная в компонент)
    -Подпрограмма (Subroutine) (термин из языка BASIC)


-Что есть МЕТОД ( METHOD)?

- Метод  это функция , связанная с Объектом
Например:
    a ListBox (который может содержать массив строк) имеет Метод (Clear) , который очищает (делает пустыми) все строки          

в  ListBox.

CLEAR это  Метод компонента ListBox.

begin
  ListBox1.Clear; // Очищает строки  ListBox
end;
Заметим, что Свойства компонента могут иметь свои собственные Методы
(например, Items это свойство  of ListBox)
    Items имеет тип TStrings
    Тип TStrings имеет  Метод  'LoadFromFile' , который Открывает, Считывает и Закрывает файлы :

ListBox1.Items.LoadFromFile('c:\Data1.txt');


-Что есть СОБЫТИЕ ( EVENT)?

- Событие  это действие пользователя  (щелчок мышью, нажатие кнопки , ...)
Имена всех событий обычно начинаются с  'On'

--------------------------------
    OnClick ..                      Button1Click(Sender : TObject)
    OnKeyDown ..                Button1KeyDown(Sender : TObject)
    OnMouseMove ..             Button1MouseMove(Sender : TObject)

События  это место , где вы пишете код вашей программы на  Delphi.


Простой эксперимент для лучшего понимания Delphi (.dfm/Form):

-Создайте новую форму (Form1)
-Добавьте  кнопку  (Button1)
-Щелкните  на  Form1
-Alt F12 (переключение к  Unit1.dfm - то же самое , что и  View As Text)

    Заметим: Вы можете использовать  Alt F12 для  Переключения  между формой (Form1) и кодом (Unit1.dfm)

Что вы видите?

    Unit1.dfm файл  (в виде текстового файла  - хотя он им и не является)

object Form1: TForm1 // Здесь определяется форма  Form1 
  Left = 200
  Top = 108
  Width = 696
  Height = 480
  Caption = 'Form1'
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton // Здесь определяется кнопка  Button1  (на форме Form1)
    Left = 220      // Форма Form1 является Предком(и Собственником) кнопки Button1
    Top = 120
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
  end
end
OK !

    -Щелкните  на тексте Unit1.dfm 
    -Alt F12 (чтобы снова увидеть Form1  - или то же самое  View As Form)

    -Добавьте панель (Panel1)
    -В  Инспекторе Объектов  измените цвет панели Panel1 на красный ( RED)

    -Щелкните  на форме  Form1
    -Alt F12 (View As Text)

Что вы видите?

object Form1: TForm1
  Left = 200
  Top = 108
  Width = 696
  Height = 480
  Caption = 'Form1'
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 220
    Top = 120
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
  end
  object Panel1: TPanel // Определение панели Panel 
    Left = 284
    Top = 204
    Width = 185
    Height = 41
    Caption = 'Panel1'
    Color = clRed    // Да , цвет красный (RED)
    TabOrder = 1
  end
end

Вы видите что сделала  Delphi .

Когда вы добавляете компоненты на форму  Form1 и изменяете Свойства, Delphi создает псевдокод (в файле Unit1.dfm) ,который определяется тем, что вы сделали.

Обычно  ВЫ НЕ МЕНЯЕТЕ  файл Unit1.dfm ;  Вы работаете только с визуальной формой Form1.


А теперь немного совсем о другом.

Как  Delphi и ваши Delphi - программы работают с  Windows 95

(Нижеследующее - не очень технично, это просто попытка объяснить простыми словами, как это работает)

Что такое Delphi?
- Delphi (IDE) это визуальный интерфейс между вами ( User) и вашим компьютером (на котором запущена Windows 95).

-Delphi преобразует визуальные компоненты (Buttons, Panels,..) на вашей форме (ваша форма обычное окно в Win95)  во внутренний псевдоязык (в Unit1.dfm), который определяет , как строится Форма и Компоненты, а также определяет Свойства Компонентов.

Когда вы компилируете вашу программу , что происходит?
    -Delphi обращается к  .dpr файлу (файл вашего проекта)
    -Delphi спрашивает - Какие программные модули есть в проекте?
    -.dpr файл отвечает:

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1}; //  Unit1 и Form1


-Delphi спрашивает - Что я должна делать сначала?
    -.dpr файл отвечает:
-------------

begin
  Application.Initialize; // Initializes stuff
  Application.CreateForm(TForm1, Form1);   // Создается Form1
// используется файл Unit1.dfm 
  Application.Run;                        // Запускается программа
end.
-------------

Теперь вы находитесь внутри программы и ждете Событий (User Actions) , посланных от  Win95.

МАСТЕР (Win95) запущен на вашем компьютере и каждый раз, когда пользователь щелкает кнопкой мыши или нажимает клавишу  Win95 (с помощью встроенного интерфейса Win API)) посылает вашей программе Сообщение.
    - Помните  Application.ProcessMessages (из  Урока 1)

 'Application.ProcessMessages' возвращает отклик  Win95, так что  Win95 может , например, обрабатывать нажатия клавиш и отображать окна (ваша форма - окно)

Помните, что ваш компьютер - это ТОЛЬКО ОДИН  "славный парень"  (Pentium...) , пытающийся делать много вещей одновременно (Многозадачность).

Какие задачи выполняет  Win95 ? (Только несколько вещей , которые она делает):
    -Проверяет клавиатуру
    -Проверяет мышь
    -Рисует "окошки" на вашем мониторе (экран)
    -Запускает вашу программу 
    -Запускает другие программы

Win95 выполняет одновременно много задач, контролируя ваш компьютер, запуская каждую задачу на короткий период времени  (скажем  50 мсек) затем переключаясь к следующей задаче (50 мсек) , затем переключаясь к следующей задаче ... и снова возвращаясь к первой задаче.

Таким образом  Win95 осуществляет многозадачность.

НО ЗАПУЩЕННЫЕ ПРОГРАММЫ НЕ РАБОТАЮТ ОДНОВРЕМЕННО!

Они только выполняются по замкнутому кругу друг за другом.

Именно поэтому вы должны использовать 'Application.ProcessMessages' внутри вашего События Button Click Event. (как описывалось в Уроке 1).

Вы возвращаете отклик  Win95 в середине процедуры Button Click ; так что  Win95 может увидеть нажатые клавиши и нарисовать вашу форму.


Установки вашего ПРОЕКТА и Опции Окружения

    (ниже приведены используемые мною в  Delphi 3 Pro установки)

-Project(menu)
-Options
-Compiler(tab)

    Code gen.                                         Runtime ...
    X Aligned record...                             ALL CHECKED

    Syntax ...                                           Debugging ...
    X Stack -                                               ALL CHECKED
    X Extended -
    X Open -
    X Huge -                                            Messages
    X Assembler-                                     ALL CHECKED

----------------------

-Tools(menu)
-Environment Options
-Preferences

    X Desktop Only             X Editor files
    X Desktop

Form Designer                                    sizeX     4
  ALL CHECKED                                sizeY     4
 

    Debugging                                 Compiling ...
    X Integrated-                                 X Show-
    X Break -                                         X Minimize-
    X Hide-
--------------------------------------------------

-Library
    X Show Hints
    X Show Messages
--------------------------------------------------

-Code Insight
    X Code Completion
    X Code Params
    X Tool tip Expression Eval.

--------------------------------------------------

-Colors

Select Colors for:                                // выбор цвета для :
    Comment (Red)                             //  комментарии  (красный)
    Reserved word (Blue)                    //  зарезервированные слова (голубой) 
    String (Pink)                                  //  строки () 


Недоработки Delphi :

1) Файлы .dpr и .pas НЕ МОГУТ иметь одно и то же имя. Почему?
        Один файл -  FSysSet.dpr
        и другой     -  FSysSet.pas // НЕЛЬЗЯ

Именно поэтому я всегда в конец имени файла проекта добавляю символ  'P' :
        FSysSetP.dpr

2) Вы НЕ МОЖЕТЕ изменить цвет кнопки ( Button )

Большинство компонентов позволяют вам изменить цвет, но не кнопка.
Почему?
Потому что  (по некоторой причине) Delphi не рисует кнопку Button, это делает Windows 95 и именно Windows использует цвет кнопки по умолчанию  (определяется установками Windows ).

3) Delphi (в зависимости от требований ) использует:
        -FLOAT, REAL, SINGLE, DOUBLE и NUMBER - все для действительных переменных, 
        -CURRENCY и  MONEY  - для типа  "currency"

4) Примеры помощи (Help) Delphi разбросаны по различным главам, вероятно для сохранения места.
    Например: Если вы ищете помощь по пункту  'FORMAT FUNCTION' , то получаете один единственный пример, тогда как формат ( Format) имеет 8 различных типов.
Они должны были показать нам пример использования всех 8 типов.


Компоненты сторонних производителей

Это другой ресурс увеличить число ваших инструментов для  Delphi .
Я "скачал" сотни действительно полезных компонентов, конечно не все из них можно купить.

Это не значит , что вы не можете "скачивать" ( Download) свободно распространяемые компоненты.

Вы должны "скачивать" все , что найдете.

Вот примеры свободно распространяемых (Free) Компонентов, которые могут улучшить DELPHI:
    - Цветные кнопки
    - Расширенные  DBGrids 
    - Компоненты для работы с Базами данных
    - RS232 компоненты 
    -...

Лучшие сайты в INTERNET, которые я нашел и использую все время:

    DELPHI SUPER PAGE
        http://sunsite.icm.edu.pl/delphi/

    TORRY"S DELPHI PAGES
        http://www.torry.ru/index.htm is.

На обоих сайтах  Компоненты рассортированы по Категориям.


Установка новых Компонентов

Это более сложно, чем должно быть.

Во-первых, вы должны создать Новый Пакет (Package)
    Все компоненты располагаются в пакетах.

Вы НЕ ХОТИТЕ инсталлировать Новые Компоненты в Пакеты, которые предлагает нам  Borland  (обычно, по крайней мере).

Вы не хотите разрушать уже инсталлированные пакеты  Delphi .

Создав новый пакет , вы хотите инсталлировать Новый Компонент в него.
    (мы хотели бы создать новый пакет перед добавлением нового компонента, но мы не можем)

Создание нового пакета  (и инсталляция Компонента)
    -Component(Menu)
        -Install Component
            -Into New Package(Tab)
                -Введите имя пакета (PACKAGE FILE NAME) например, 'Test1'
                -Browser(Button)
                    -Выберите  .pas или  .dcu файлы  (для нового компонента)
                            (который вы "скачали" с ВЕБа)
                -Open
                -OK
                -Нажмите  OK ...
                -Exit (X внизу формы диалога (Dialog Form)

Заметим: Вы можете инсталлировать компонент  a .pas или  a .dcu
Если у вас есть только файл  a .dcu (скомпилированный в  Delphi3),то DELPHI4  его не инсталлирует. Если у вас есть файл .pas то, возможно DELPHI4 сможет его инсталлировать.


Инсталляция нового компонента в существующий пакет:
    -Component(menu)
    -Install Component
    -Выберите имя файла пакета ( PACKAGE NAME FILE) (например, 'Test1')
    -Browse (для  UNIT FILE NAME) (как .pas или .dcu)
    -Выберите файл
    -Open
    -OK
    -Скажите  YES
--------------

Позже я покажу вам как убрать компонент.


Следующая заметка:

Я смотрел некоторые другие обучающие материалы по  Delphi !   В них либо многого нет, либо они слишком детальны  и , поэтому медленны.

Когда я изучал  Delphi, то получил немного помощи от них.

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

Надеюсь, что когда я все это сделаю, то дам вам: 

    -Список того, ЧТО НАДО ДЕЛАТЬ и ЧТО НЕ НАДО ДЕЛАТЬ

    - Философию программирования (Стиль и Принципы)
    - Библиотеку важных подпрограмм (кусочков кода)
    - Понимание работы DELPHI
    - Некоторые полезные способы вашего самообучения
    - Некоторые хорошие примеры
    - И места , где можно найти помощь

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

Мои Уроки нельзя читать как книгу, они не включают множество деталей. 

Что я хочу дать вам, так это другой путь к постижению Delphi.


Небольшой экзамен

1) Когда вы начинаете Новый Проект , что вы делаете прежде всего?

    Тик, Tак, ... ЗВОНОК  Время вышло!

    ДА, вы переименовываете форму, модуль и проект и сохраняете их в уникальной директории.

2) Когда вы размещаете кнопку Button на форме Form, что вы делаете в первую очередь?

    ДА, переименовываете кнопку Button (например, ReadBtn)

3) Что такое  SENDER?

    Ответ - это параметр(переменная , связанная с процедурой)
        (используется в Событиях Delphi )

    -Какого типа этот параметр?

        Отв. - он имеет тип  TObject (ДА)

Да - это  TObject; ВСЕГДА - TObject; ну и что?
Это не скажет нам много.

-Почему он имеет тип  TObject?

    Отв. - Потому что он может быть любым компонентом (Button, ListBox, Edit , ...)

4) Как вы можете сделать копию формы Form (различными путями)?

    -Копирование форм :

            1) Используйте  Win Explorer для копирования файлов  .pas .dfm     (ДА)
            2) Добавить форму  Form в Репозиторий (Repository) (смотри Урок 1)     (ДА)
            3) Открыть Менеджер Проекта (Меню)
                    -Выбрать  ADD
                    -Найти нужный файл  .pas  
                    -Копируемая форма добавляется к проекту (НЕПРАВИЛЬНО)

                Модуль Unit и форма Form добавлены к Проекту, но НЕ СДЕЛАНА КОПИЯ  оригинальных  модуля и формы,
                так что любые сделанные вами изменения , изменят оригинальную форму  Form.

                Ничего не будет скопировано до тех пор, пока вы не сделаете :

                    - File(Меню)
                    - Save As (с новым именем файла)


Философия программирования Франка  101

    1) Во-первых сделать это работоспособным
            Затем сделать это привлекательным :
                -Организовать
                -Минимизировать

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

Таким образом, что самое важное при написании программы?

ДА  - ДЕЛАТЬ ЕЕ ЛЕГКОЙ ДЛЯ ОТЛАДКИ (Делать ее работоспособной)

Как сделать программу легкой для отладки - спросите вы?

    Шаг 1) Напишите сначала внутренний код процедур, не обращая пока внимания на их вызовы из основного кода программы.

    Шаг 2) Используйте компактные имена, но проясняющие , что вы делаете.

    Шаг 3) Тестируйте вашу программу
                    (вспомните Закон Мерфи: Если что то может сломаться, это обязательно сломается)

    Шаг 4) Используйте все известные вам пути, чтобы сделать код вашей программы легко читаемым; чаще используйте Глобальные переменные.

Я не верю этому!  Он сказал: использовать Глобальные переменные!  Oх , НЕТ!

Комментарий:

    Сегодняшний заголовок  'ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ - Небеса или Ад'

    Огромное непонимание.

    Большинство людей не знает как использовать Глобальные переменные ПРАВИЛЬНО .
    Они пытаются полностью от них устраниться.

    Однако в некоторых случаях просто необходимо их использовать.
            -Когда это делает вашу программу легкой для понимания и отладки.

    Большинство людей не понимают  ГДЕ и КАК их использовать.

С  Глобальными переменными вы можете:
    -Иметь доступ ко  ВСЕМ  переменным с  ЛЮБОГО МЕСТА  (во всех ваших формах (модулях))
    -Вызывать процедуры без параметров или с минимальным числом  параметров

Трудности с Глобальными переменными
    -Кто-нибудь еще может изменить ваши переменные в общем проекте (несколько программистов)
    -Модуль не может быть самостоятельным, если он использует Глобальные переменные, определенные в другом модуле.

Правила для использования Глобальных переменных:
    1) Используйте их экономно
    2) Учитывайте их расположение
            -Располагайте их в Одном Месте
            -Привязывайте их к одному месту: Основная программа (main) или общий модуль Unit
                    например,  (в модуле  MainUnit1.pas)
    3) Именуйте их начиная имя символом  X или каким-то другим уникальным способом.
            Например :

XFileName : string[100];
XCountyStr : string[32];
XDate : TDate;
XCnts : array[0..255] of byte;


Где вы разместите декларацию Глобальных переменных?

    Ответ:  В секции  interface :

var
  Form1: TForm1;
  XFileName : string[64];      // Глобальная
  XDate : TDate;               // Глобальная

implementation

В последующих уроках я приведу некоторые примеры программ, которые показывают 

как использовать Глобальные переменные.


КОММЕНТАРИЙ:

    Все , что я рассказал вам, не всегда полностью корректно , но достаточно близко к действительности.
    Для получения реального результата просмотрите эти вещи в помощи Delphi  (нажав F1) и в книгах.

    Мои Уроки только направляют вас к материалу и иногда  показывают вещи под другим углом.

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

    Вдобавок, не программируйте только на компьютере.
    Я использую еще  карандаш  и  бумагу  (правда немного).

    


Внутренности DELPHI, которые я использую в моих уроках
    (нет какого-то специального порядка)

Детально я рассмотрю некоторые из этих вопросов в следующих Уроках.

Когда вы создаете примеры простых программ для себя
сохраняйте их и в дальнейшем мы будем их использовать в процессе этого обучения.


Посмотрите на стиль моих Уроков:
    -свободная форма
    -резкие изменения темы
    -при встрече чего-то нового тут же дается объяснение.

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

Так что , может быть, это - новый способ обучения..


ВЕРНЕМСЯ К  DELPHI

Использование Точек Останова (Breakpoints) показывает работу Delphi :

Большинство программистов редко используют Точки Останова(B.P.),в основном, при возникновении каких то проблем. Они не используют другое большое достоинство Точек Останова , видеть как работает Delphi и ваш код.

Точки останова:

    -New Form
    -Добавьте  Button1
    -Двойной щелчок на  Button1
    -Добавьте  следующий код  (в Событие кнопки  OnClick Event)

 

procedure TForm1.Button1Click(Sender: TObject);
var x,y : word;
    s : string;
begin
  s:='15';
  x:=StrToInt(s);
  x:=x+1;
end;


    -Компилируйте (Build All)

-Вы увидите  небольшие Голубые точки слева на каждой линии (в модуле Unit1.pas) , на которые вы можете наложить Точки останова .

-Щелкните на  Голубой точке на линии :    x:=StrToInt(s);

-Эта линия теперь подсвечена  Красным
    Это обозначает, что вы добавили здесь  Точку Останова (B.P.) .

-Щелкните на  КРАСНОЙ точке ( Голубая  точка также становиться  Красной)
     Точка Останова  убрана и точка снова   Голубая

-Щелкните на  Голубой точке снова
     Точка Останова  установится снова

-Теперь запустите программу и щелкните на кнопке  Button1
-программа остановится на линии с Точкой Останова.
-Также  Зеленая Стрелка  появится напротив линии;
    Это говорит вам , что программа здесь  ( НО КОД  ДАННОЙ ЛИНИИ ЕЩЕ НЕ СРАБОТАЛ)

Отметим 3 "горячих" клавиши для использования :
    F8  Пошаговое (по 1 линии кода) выполнение программы.

    F9  Запуск  программы до следующей  Точки Останова
        Если других  Точек Останова  больше нет, то программа нормально выполнится.

Ctrl F2  Остановка (Stop) вашей программы

-Когда программа остановилась на вашей Точке Останова.

-Наведите курсор на переменную  's'
    Что случилось?

Во вспомогательном окошке вы увидите значение  s='15'
Что происходит?

Delphi дает вам возможность увидеть значения всех  переменных программы , с помощь простого наведения курсора на переменную.

Просмотрите  'x' (наведя на нее курсор)
    Мы увидим    x=3462     // или любое другое число

Почему     x=3462   ,   а не     x=0?



ВАЖНО:

    Delphi АВТОМАТИЧЕСКИ ИНИЦИАЛИЗИРУЕТ каждую Глобальную переменную перед запуском программы.
    Integers приравниваются  0     x=0
    String обнуляются      s=''
    arrays становятся ALL nulls или равными  0

    Так что вам  НЕТ НЕОБХОДИМОСТИ  инициализировать Глобальные переменные  0 или NULL

    Локальные переменные НЕ  инициализированы.  А  x - это  Локальная переменная.



OK

-Теперь нажмем F8
    -и  Зеленая Стрелка  передвинется к следующей линии

Просмотрим  x
    -мы должны увидеть     x=15     (в вспомогательном окошке)

Теперь ОСТАНОВИМ ВАШУ ПРОГРАММУ
    -Как остановить программу?
       Ответ: Нажмите  Ctrl F2
                или  - Run(Menu)
                        - Program Reset

Остановите вашу программу и вернитесь в редактор  Delphi 

Теперь, запустите программу снова  (Нажмите  F9)

-Щелкните на кнопке  Button1 снова

И поиграйтесь с  F8, F9 и просмотром Переменных.
    До тех пор, пока вы не будете понимать, что происходит.

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

Позже я раскрою  работу Точек Останова и Технику Отладки детально, а пока этого достаточно.

Пишите больше кода и добавляйте Точки Останова.


Frank's ФИЛОСОФИЯ

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

    Гениальность (но и тяжелый труд) в  Элегантном, Простом  проекте.
    Спасибо  Delphi.

    Однако , не делайте код хитрым или слишком простым.
    Помните , что ваш код должен легко читаться и пониматься.

Что легче читать : (A or B?)

A                                                     B
-------------------------         --------------------

xxxxxxxxxxxxx                         xxxxxxxxxxx
xxxxxxxxx                                xxxxxx
xxxxxxxxxxxxx                         xxxxxxxxxxxxxxxx
xxxxxxx
xxxxxxxxxxxxxxx                     xxxxxxxxxxxx
xxxxxxxxxxx                            xxxxxxxx
xxxxxxxxxxxxx                        xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx                       xxx
xxxxxxxx
xxxxxxxxxxx                            xxxxx
xxxxxxxx                                 xxxxxxxxxx

Я думаю  "B"  легче для чтения  (это более структурно)

Вы должны использовать пропуски (пустые строки) для разделения вашего кода в функциональные блоки.


Пока это все .

Frank



Возврат в список переводов
Lesson 1
 Lesson 3
 Lesson 4