Упр. 6. Стр. 34

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

uses GraphABC;
const slovo = 'Андрей';
begin
SetFontColor(clRed);
SetFontSize(15);
SetFontName('Arial');
SetFontStyle(fsBold);
SetBrushColor(clSilver);
writeln(slovo);
end.

В программе мы изменили шрифт на Arial, размер символов установили на значение 15, фон стал серым, а начертание букв — жирным.

2. Измените программу примера 6.11 так, чтобы выполнялись указанные условия.

1.  Каждое слово должно выводиться случайным цветом.

Воспользуемся функцией random(255), которая будет генерировать случайные числа от 0 до 255, и функцией rgb(), которая принимает три аргумента с диапазоном от 0 до 255 и возвращает цвет. Таким образом, в цикле мы обновляем наш случайный цвет каждую итерацию.

uses GraphABC;
const sl = 'Программирование';
var n: integer;
begin
writeln ('Введи n ');
read(n); writeln (n);
for var i := 1 to n do
begin
SetFontColor(rgb(random(255), random(255), random(255)));
writeln(sl);
end
end.

2*. Расстояние между словами должно быть 50 пикселей.

Чтобы между словами было 50 пикселей, воспользуемся командой TextOut(), которая выводит текст в прямоугольнике с заданной координатой левого верхнего угла. Переменная m будет являться верхним отступом для каждого слова. В каждой итерации цикла мы увеличиваем переменную m на 50 (пикселей).

uses GraphABC;
const sl = 'Программирование';
var n, m: integer;
begin
m := 0;
writeln ('Введи n ');
read(n); writeln (n);
for var i := 1 to n do
begin
SetFontColor(rgb(random(255), random(255), random(255)));
m := m + 50;
TextOut(0, m, sl);
end
end.

3*. Каждое новое слово должно выводиться шрифтом на 5 пунктов больше, чем предыдущее. Отрегулируйте расстояние между словами так, чтобы слова при выводе не перекрывали друг друга.

Воспользуемся командой SetFontSize() для изменения размера шрифта. Отрегулируйте расстояние между словами изменением команды TextOut() — к каждому отступу m добавляем новое значение размера шрифта s.

uses GraphABC;
const sl = 'Программирование';
var n, m, s: integer;
begin
m := 0;
s := 0;
writeln ('Введи n ');
read(n); writeln (n);
for var i := 1 to n do
begin
SetFontColor(rgb(random(255), random(255), random(255)));
m := m + 50;
s := s + 5;
SetFontSize(s);
TextOut(0, m + s, sl);
end
end.

3. Запустите программу из примера 6.12 несколько раз. Какие результаты получили?

При запуске программы несколько раз вывод меняется случайным образом (разное количество слов Pascal и Python), т.к. используется фунцкия random().

uses GraphABC;
const sl1 = 'Pascal';
sl2 = 'Python';
var n, k1, k2, x: integer;
begin
writeln ('Введи n ');
read(n);
writeln (n);
k1 := 0; k2 := 0;
for var i := 1 to n do
begin
x := random(2);
if x = 0 then
begin
writeln(sl1);
k1 := k1 + 1;
end
else
begin
writeln(sl2);
k2 := k2 + 1;
end
end;
writeln('Cлово ',sl1,' - ',k1);
writeln('Cлово ',sl2,' - ',k2);
end.

4. Измените программу из примера 6.12 так, чтобы случайным образом выбиралось одно из трех слов. Выводите каждое слово своим цветом (например, первое — красным, второе — синим, третье — зеленым).

Для начала добавим возможность вывода трёх слов вместо двух. Для этого создадим константу для третьего слова sl3 = 'PHP' и объявим переменную для счётчика количества повторений var n, k1, k2, k3, x: integer;, обнулим переменную k3 := 0;, а в конце программы добавим строку для вывода результата для третьего слова writeln('Cлово ',sl3,' - ',k3);. Также нужно добавить ещё одно условие в цикле for (просмотрите внимательно на изменения в этом цикле). С помощью команды SetFontColor() установим цвет для каждого слова, а после завершения цикла восстановим цвет текста на чёрный.

uses GraphABC;
const sl1 = 'Pascal';
sl2 = 'Python';
sl3 = 'PHP';
var n, k1, k2, k3, x: integer;
begin
writeln ('Введи n ');
read(n);
writeln (n);
k1 := 0; k2 := 0; k3 := 0;
for var i := 1 to n do
begin
x := random(3);
if x = 0 then
begin
SetFontColor(clRed);
writeln(sl1);
k1 := k1 + 1;
end
else if x = 2 then
begin
SetFontColor(clBlue);
writeln(sl2);
k2 := k2 + 1;
end
else
begin
SetFontColor(clGreen);
writeln(sl3);
k3 := k3 + 1;
end
end;
SetFontColor(clBlack);
writeln('Cлово ',sl1,' - ',k1);
writeln('Cлово ',sl2,' - ',k2);
writeln('Cлово ',sl3,' - ',k3);
end.