Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы 40-50.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
315.9 Кб
Скачать
  1. Фреймы в Delphi.

Разведение программистов, к сожалению, связано с большими первоначальными затратами. Вам понадобятся:  - персональный компьютер с процессором не ниже Реntium II;  - стол и стул;  - пепельница;  - большое количество сарделек и пиво для прикармливания;  - кофейная чашечка вместимостью 0,5 л.

'Frames' - на мой взгляд чрезвычайно полезная компонента. Если откинуть условности, то это форма в форме. Грубо говоря, можно наделать таких форм и менять, например, функциональность и вид Вашей программы в зависимости от определенных условий(Это не то-же, что менять кожу - не перепутайте.).

И раз уж я назвал его формой, то отсюда и начальный шаг по его созданию должен быть как у формы, а не как у компоненты. Точнее даже два в одном.

Вообщем так. Через меню 'File/New/Frame' создаем фрейм - появляется до боли знакомое окно форы, с разве что немного другими свойствами. Далее можно делать на нем все, что угодно. Однако, не забываем, что пока создан всего сам фрейм и он у нас ни к чему не привязан. И тут нужен второй шаг - теперь берем компоненту и ложем ее на форму Вашего основного проекта. Сразу появляется окно выбора фрейма- 'Select frame to insert'. Причем, если Вы наделали, несколько фреймов, то, соответственно, Вам их все и предложат.

Итак, из всего вышесказанного можно подчеркнуть лишь одно - прежде чем пользоваться компонентой Frame нужно создать сам фрейм.

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

Еще одна полезность этой компонеты в том, что она позволяет организовать скролл(как вертикальный, так и горизонтальный) для целого набора инструментов. Т.е. если Вам необходимо разместить на форме очень много всего, а места не хватает, то фрейм - идеальное решение. Примером может служить настройка сортировщика писем в известной почтовой программе 'TheBat'

  1. Циклы с параметром и циклы с заданным числом повторений. Приведите пример.

  2. for <параметр цикла> := <S1> to <S2> do <оператор> ; for <параметр цикла> := <S1> downto <S2> do <оператор> ; где S1, S2 – выражения, определяющие соответственно начальное и конечное значения параметра цикла. Если значение параметра цикла возрастает, то есть S2>S1, используется зарезервированное слово to. Если значение параметра цикла убывает, то есть S2<S1, используется зарезервированное слово downto.

  3. Оператор повтора for состоит из заголовка и тела цикла:  for ... do – это заголовок цикла (он определяет диапазон изменения значений параметра цикла и одновременно число повторений оператора, содержащегося в теле цикла); <оператор> - тело цикла. 

  4. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного. Шаг изменения параметра цикла при использовании оператора for – единица.

  5. Следует подчеркнуть, что цикл с заданным числом повторений представляет собой соединение линейной структуры (начало цикла), структуры цикл-ПОКА (условие в нем заменено на противоположное) и снова линейной (последовательной) структуры в теле цикла.

  6. Прочитать этот алгоритм можно следующим образом: «Меняя параметр от начального значения до конечного значения, повторять тело цикла».

  7. Алгоритм, приведенный на рис. 16, принято называть развернутой схемой цикла с заданным числом повторений. Такая схема удобна для анализа алгоритма и поиска ошибок. Однако при написании алгоритма можно использовать и компактную запись. В псевдокодах она выглядит так:

  8. Цикл по параметр от начальное значение

  9. до конечное значение шаг приращение;

  10. операторы тела цикла;

  11. Конец-цикла.

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

  13. #include <stdio.h>

  14.  

  15. int main(void) {

  16.     int a1, an, x, sum = 0;

  17.     unsigned n;

  18.     scanf("%u%d%d%d", &n, &a1, &an, &x);

  19.     for (an = (an - a1) / n; a1 < x; a1 += an)

  20.         if (a1 & 1)

  21.             sum += a1;

  22.     printf("%d", sum);

  23.     return 0;

  24. }