Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 301
от 13.06.2004, 17:20

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 495
Отправлено ответов: 1843
Активность: 372.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

CrackLab
Статус: Опытный
Общий рейтинг: 139.42
[Подробней >>]
rmf
Статус: Доверительный
Общий рейтинг: 127.71
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.68
[Подробней >>]
 
sir henry
Статус: Профессиональный
Общий рейтинг: 163.25
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 495. Добрый день Я готовлюсь к экзамену и у меня возникли вопросы 1)Структура языков програмирования(спо... (ответов: 4)

Вопросов: 1, ответов: 4


 Вопрос № 495

Добрый день
Я готовлюсь к экзамену и у меня возникли вопросы
1)Структура языков програмирования(способы определения языка)
2)Отладка программы(инструменты,компиляция)
3)конструкторы и деструкторы



Вопрос отправлен: 10.06.2004, 16:43
Отправитель: roman

[Следующий вопрос >>] [Список вопросов]

Отвечает CrackLab

Приветствую Вас, roman!
2)
На практике часто встречаются ситуации, когда в создаваемой нами программа появляется какая-то ошибка и нет возможности, просто узнать причину этой ошибки. Например программа не делает того, что мы хотим, или сообщает нам о том, что по такому-то адресу в памяти произошла ошибка (ну типа Access Viaolation и т.д.). В этом случае программу нужно отлаживать - т.е. искать и исправлять ошибку. Для отладки программы используются отладчики - специальные инструменты, которые представляют исполняемый код в виде набора команд ассемблера. Трассируя (выполняя) каждую ассемблерную инструкцию программист смотрит что происходит в программе изнутри - ведь когда программа представлена в виде ассемблерных программ - это есть ее вид изнутри. Так получается что когда программа представлена в ассемблерном виде, то найти ошибку гораздо проще. Потому что мы можем явно увидеть какая инструкция приводит к ошибке и попытаться ее исправить. На самом деле очень сложно обхъяснить процесс и преимущества отладки человеку, который ни разу ее не делал, это нужно показывать только на примере. Но в общем случае я об этом рассказал. Как я уже сказал для отладки используются отладчики =) Простейшие отладчики уже обычно встроены в среды программирования, например в Pascal, Delphi и т.д. Они конечно убогие, но для начала подойдут и они. Например вы можете попробовать написать какую-нибудь простейшую программу на Delphi, поставить точку прерывания на какой-нибудь строке программы и запустить программу. Когда программа прервется на точке прерывания, жмем правой кнопкой в окне кода и выбираем в меню Debug -> View CPU. Мы увидим ассемблерный листинг нашей программы и таким образом можем ее отлаживать при возникновении ошибки.
На деле же часто бывает что встроенного отладчика не хватает, потому что очень уж он убогий и простой, поэтому используются альтернативные мощные отладчики такие как:
SoftIce, IDA Pro, OllyDBG, TRW (это все для Windows) или SoftIce for DOS, AFD, CodeView (это все для DOS + многим все-таки нравится встроенный Turbo Debugger)
Ну вот вроде и все.
3)
При работе с классами и объектами классов необходима инициализация (выделение памяти, задания начальных значений). Для решения проблемы инициализации и деинициализации существуют функция-конструктор и функция-деструктор.
Конструктор обычно используется для задания начального значения переменных объекта, выделения памяти и т.д.
Деструктор обычно используется для освобождеия памяти занимаемой объектом.
функция конструктор объявляется в классе с помощью ключевого слова constructor, например
constructor Create(x, y : integer);
функция деструктор объявляется в классе с помощью ключевого слова destructor, например
destructor Destroy();
В С++ конструктор объекта вызывается при объявлении объекта. В Delphi же, такого не происходит, и инициализацию (вызов конструктора) приходится производить самому.
Например у нас есть такой класс MyClass:
type
MyClass = class
i,j,k : integer;
end;
Допустим что при работе с объектом класса MyClass нам всегда нужно задавать начальные значения i,j,k. Мы можем написать так:
var
MyObject : MyClass;
begin
MyObject := MyClass.Create; // Вызов родительского конструктора класса TObject для выделения памяти объекту
MyObject.i := 5;
MyObject.j := 10;
MyObject.k := 15;
А можем добавить в класс конструктор:
type
MyClass = class
i,j,k : integer;
constructor MyClass.Create(_i, _j, _k : integer);
end;
constructor MyClass.Create(_i, _j, _k : integer);
begin
i := _i; j := _j; k := _k;
end;
И проинициализировать наш объект так:
var
MyObject : MyClass;
begin
MyObject := MyClass.Create(5,10,15);
Думаю смысл конструкторов понятен, хотя мой пример слабо отражает необходимость конструкторов. Но тем не менее они необходимы всегда, как минимум для выделения памяти объекту.

Ответ отправлен: 11.06.2004, 16:28
Отправитель: CrackLab


Отвечает rmf

Здравствуйте, roman!
http://www.yandex.ru/yandsearch?text=%D1%F2%F0%F3%EA%F2%F3%F0%E0+%FF%E7%FB%EA%EE%E2+%EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%FF&stype=www
http://www.yandex.ru/yandsearch?text=%CE%F2%EB%E0%E4%EA%E0+%EF%F0%EE%E3%F0%E0%EC%EC%FB%28%E8%ED%F1%F2%F0%F3%EC%E5%ED%F2%FB%2C%EA%EE%EC%EF%E8%EB%FF%F6%E8%FF%29&stype=www
http://www.yandex.ru/yandsearch?text=%EA%EE%ED%F1%F2%F0%F3%EA%F2%EE%F0%FB+%E8+%E4%E5%F1%F2%F0%F3%EA%F2%EE%F0%FB&stype=www
Юзайте Yandex.Ru

Ответ отправлен: 10.06.2004, 17:05
Отправитель: rmf


Отвечает Ayl

Приветствую Вас, roman!
Ну ты и смешал! Сам-то понял, что спросил?
1. Структура языков программирования - это как понимать, поо каким критериям? И при чем здесь способы определения языка? Что под этим понимается? Описание синтаксиса?
Языки бывают следующих типов:
- последовательные (типа ранних версий Бейсика)
- блочно-ориентированные (программа разбивается на независимые блоки), среди них можно выделить:
* процедурно-ориентированные (Паскаль, Си)
* модульно-ориентированные (Ада)
- объектно-ориентированные (Си++)
- функциональные (Лисп)
- логические (Пролог)

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

2. Отладка программы - а при чем тут компиляция? Инструменты - либо встроенный в среду отладчик, либо универсальные, типа AFD Pro, Turbo Debugger, IDA Pro и т.п.
Для отладки в исходном коде необходимо, чтобы компилятор добавил в исполняемый модуль отладочную информацию.

3. Конструкторы и деструкторы - это специальные методы объекта, которые выполняют действия по созданию и удалению объекта соответственно.


Ответ отправлен: 11.06.2004, 16:18
Отправитель: Ayl


Отвечает sir henry

Здравствуйте, roman!
1. Язык определяется его синтаксисом. Т.е. есть определенные лексемы, с помощью которых и происходит решение заданной задачи в этом языке.
2. В Виндоусе - написание, компиляция и отладка, в 95% случаев, идет в Интегрированой Среде (оболочке), типа как в Паскале, СС++, Дельфи и т.п.. Скриптовый язык отлаживается без компиляции (РНР например) в той среде, где он должен работать (на сервере Апачи, например). Т.е. инструментом отладки и компилирования является оболочка языка.
В юникс-подобных системах(Free, Linux, Solaris, etс) отладка раньше велась с помощью отдельного инструмента - типа gdb. Т.е. сначала написание исходника в текстовом редакторе, потом компиляция или сразу сборка, если программа небольшая, потом отладка. Однако в последнее время и там чувствуется влияние Виндоус - появились Kylix, KDE development и т.п. интегрированиые оболочки, где все идет в рамках запущеной оболочки.
3. Конструктор - это создатель объекта в памяти, который вдобавок еще и проводит необходимые сопутствующие действия. Например инициализацию полей, свойств объекта.
Деструктор - это его противоположность :).

Ответ отправлен: 11.06.2004, 05:19
Отправитель: sir henry



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (21)
C / C++ (12)
Perl (1)
Builder / Delphi (17)
Pascal (22)
Basic / VBA (3)
Java / JavaScript (4)
PHP (14)
Криптография (9)
WinAPI (11)
Радиоэлектроника (8)
Пользователю
Windows 95/98/Me (34)
Windows NT/2000/XP (54)
"Железо" (30)
Поиск информации (15)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (11)
Юристу
Гражданское право (12)
Семейное право (8)
Трудовое право (11)
КоАП (7)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное