Первый урок первая программа 8 Сохранение и запуск проекта на выполнение 11 Сохранение проекта 11

Вид материалаУрок

Содержание


Как выполнить движение по диагонали?
Примерные задания для шестого урока
Вопросы для самоконтроля
Седьмой урок – цикл с параметром (For)
Вопросы для самоконтроля
Восьмой урок – цикл с предусловием (While … do)
Dо выполняется один
Подобный материал:
1   2   3   4   5   6   7   8   9

Как выполнить движение по диагонали?



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

Примерные задания для шестого урока



Нарисовать картину на форме или панели (минимум из 6-и Shapes) и выполнить движение:
  1. направо, затем вверх из левого нижнего угла формы;
  2. налево, затем вверх из правого нижнего угла формы;
  3. вниз, затем вправо из левого верхнего угла формы;
  4. вниз, затем влево из правого верхнего угла формы
  5. Нарисовать в Paint:
  • Бабу Ягу в ступе,
  • космический корабль;
  • автомобиль;
  • вертолёт

и

а) выполнить движения как в вариантах 1 – 4;

б) выполнить движение по диагонали в направлении:
  • левый нижний – правый верхний;
  • левый верхний угол – правый нижний;
  • правый нижний угол – левый верхний;
  • правый верхний угол – левый нижний



Вопросы для самоконтроля




  1. Какие новые компоненты Вы узнали?
  2. Расскажите алгоритм движения картинки сверху вниз.
  3. Почему параметр Enabled в Timer должен быть true при движении?
  4. Зачем при достижении конца движения нужно выключить (сделать неактивным) Timer?
  5. Сколько таймеров Вы будете использовать для первого варианта задания?
  6. Как выполнить движение графического объекта из правого нижнего угла в левый верхний?
  7. Опишите алгоритм программы движения графического объекта по периметру.

Седьмой урок – цикл с параметром (For)


Познакомимся с новым конструкцией – цикл с параметром:

For <1> := <2> to | downto <3> do

<4>;

1 – переменная порядкового типа;

2 – начальное значение переменной;

3 – конечное значение переменной;

4 – оператор;

to – шаг +1;

downto – шаг -1.


Нужно решить следующую задачу: сколько трехзначных чисел имеют удвоенную сумму цифр равную произведению цифр? Напечатать эти числа.

Пусть наша форма будет иметь следующий вид:


Label4

Label6



Код процедуры Click для кнопки определить


procedure TForm1.Button1Click(Sender: TObject);

begin

n := 0; { счетчик количества цифр }

s := ''; { строковая переменная для вывода результата }

for a := 1 to 9 do { цифра сотен }

for b := 0 to 9 do { цифра десятков }

for c := 0 to 9 do { цифра единиц }

if 2*(a + b + c) = (a * b * c) then

begin

n := n + 1;

if n mod 7 = 0 then { для вывода по семь чисел в

строке }

s := s + inttostr(100*a + 10*b + c) + #13

{ можно и chr(13) }

else

s := s + inttostr(100*a + 10*b + c) + ' ';

end;

Label4.Caption := inttostr(n);

label6.Caption := s;

end;

Вопросы для самоконтроля




  1. Какую новую конструкцию языка Pascal Вы узнали?
  2. Почему в первом цикле переменная a начинается с 1, а переменные b и c с ноля.
  3. Какие переменные и для чего используются в процедуре?
  4. Как и где можно объявить переменные, встречающиеся в процедуре?
  5. Зачем используется #13?
  6. Почему в процедуре использовали три цикла с параметром?
  7. Сколько циклов с параметром Вы запишете в алгоритме для пятизначных чисел?
  8. Для чего после вывода числа добавляли два пробела?



Восьмой урок – цикл с предусловием (While … do)


Познакомимся с новым оператором – цикл с предусловием:

While <1> do // делать, пока условие верно

<2>;

1 – логическое выражение (условие);

2 – оператор;

 – цикл выполняется до тех пор, пока логическое выражение истинно;

 – после ключевого слова выполняется один оператор. Если нужно выполнить более одного оператора, то их заключают в операторные скобки Beginend;

 – в теле цикла обязательно должно произойти событие, которое сделает логическое выражение ложным.


Нам надо решить следующую задачу:

Два жадных медвежонка нашли по головке сыра разного веса и стали спорить кому какая достанется. В это время рядом бежала лиса и, увидев это, предложила свою помощь:

а) она откусывает от большей головки столько, сколько весит меньшая головка;

б) если они окажутся не равными, то повторит откусывание для большей головки;

в) иначе - закончит дележ.

Если найденные головки сыра весят M и N гр., то сколько будут весить они после дележа, сколько раз будет лиса откусывать и сколько грамм сыра она съест?

Пусть наша форма будет иметь следующий вид:


Label7

Label8, Label9


Вывод результатов будем производить в три объекта Label.

Код процедуры Click для кнопки подсчитать


Procedure TForm1.Button1Click(Sender: TObject);

var

a, b, z, n : integer; // локальные переменные

begin

a := strtoint(Edit1.Text); // вес первой головки сыра в граммах

b := strtoint(Edit2.Text); // вес второй головки сыра в граммах

n := 0; // количество откусываний

z := a + b; // вес двух головок сыра до дележа

While a <> b do

begin

inc(n);

If a > b then

a := a - b

Else

b := b - a;

end;

Label7.Caption := inttostr(a) + ' гр.';

Label8.Caption := inttostr(z - 2*a) + ' гр.';

Label9.Caption := inttostr(n) + ' раз.';

end;