Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
П3. Список некоторых операций, процедур и функций Паскаля⇐ ПредыдущаяСтр 27 из 27
Приведу список большинства пройденных нами операций и стандартных процедур и функций с указанием типа их параметров (или по-другому – аргументов и результата)
Математика Sqr (A) аргумент A – любого числового типа, результат - того же типа, что и A Sqrt (A) аргумент A – любого числового типа, результат - того же типа, что и A Pi значение - вещественное Frac (A) аргумент A и результат - вещественные Int (A) аргумент A и результат - вещественные Round (A) аргумент A вещественный, результат - LongInt Abs (A) аргумент A – любого числового типа, результат - того же типа, что и A Random результат - вещественный Random (A) аргумент A и результат - Word Randomize процедура
A div B операнды A и B и результат операции div - только целочисленного типа A mod B операнды A и B и результат операции mod - только целочисленного типа
Модуль CRT Процедура или функция Смысл Sound (A: Word) звук NoSound нет звука Delay (A: Word) отсрочка ReadKey: Char читай клавишу KeyPressed: Boolean клавиша нажата TextColor (A: Byte) цвет текста TextBackground (A: Byte) цвет фона ClrScr очистка экрана GotoXY (X, Y: Byte) иди к икс игрек
Модуль Graph
InitGraph (d, m: Integer; path: String) инициализация графики CloseGraph закрытие графики
PutPixel (x, y: Integer; color: Word) поставь пиксел GetPixel (x, y: Integer): Word получи пиксел Line(x1, y1, x2, y2: Integer) отрезок прямой линии Rectangle (x1, y1, x2, y2: Integer) прямоугольник Bar (x1, y1, x2, y2: Integer) залитый прямоугольник Bar3D (x1, y1, x2, y2: Integer; tol: Word; top: Boolean) параллелепипед Circle (x, y: Integer; r: Word) окружность Arc (x, y: Integer; fi1, fi2, r: Word) дуга окружности PieSlice (x, y: Integer; fi1, fi2, r: Word) кусок пирога (залитый сектор круга) Ellipse (x, y: Integer; fi1, fi2, rx, ry: Word) эллипс Sector (x, y: Integer; fi1, fi2, rx, ry: Word) залитый сектор эллипса FillEllipse (x, y: Integer; rx, ry: Word) залитый эллипс
SetColor (color: Word) установить цвет линий SetLineStile (ls, uzor, tolsh: Word) установить стиль линий SetFillStyle(uzor, color: Word) установить стиль заливки FloodFill(x, y: Integer; granitsa: Word) заливка
GetMaxX: Integer получи максимальный икс GetMaxY: Integer получи максимальный игрек
GetImage (x1, y1, x2, y2: Integer; var A[12]) получи изображение PutImage (x1, y1: Integer; var A; mode: Word) помести изображение ImageSize (x1, y1, x2, y2: Integer) размер изображения
OutTextXY (x, y: Integer; stroka: String) вывод текста SetTextStyle (shrift, napravl, razmer: Word) установи стиль текста SetUserCharSize (A, B, C, D: Word) установи пользовательский размер символов Модуль DOS GetTime (var chas, min, sec, sotki: Word) получи время SetTime (chas, min, sec, sotki: Word) установи время GetDate (var god, mes, den, dennedeli: Word) получи дату SetDate (god, mes, den: Word) установи дату Работа со строками Pos (s1, s: String): Byte позиция Length (s: String): Byte длина Copy (s: String; a, b: Integer): String копируй Delete (var s: String; a, b: Integer) удаляй Insert (var s: String; s1: String; a: Integer) вставляй Работа с файлами Assign (var f: Text; filename: String) упрощенно присвоить Rewrite (var f: Text) упрощенно переписать Reset (var f: Text) упрощенно переустановить Close (var f: Text) упрощенно закрыть Append (var f: Text) добавить Прочие Chr (A: Byte): Char символ GetMem(P: Pointer; razmer: Word) выдели память New (var p: Pointer) новый П4. Произношение английских слов Здесь приведена транскрипция всех английских слов, встречающихся в тексте, кроме самых простых, таких как in. Кроме транскрипции произношение английских слов мне пришлось привести еще и русскими буквами, во-первых потому, что не все разбираются в значках транскрипции, а во-вторых потому, что многие аббревиатуры в среде русскоязычных программистов принято произносить на латинском или на смеси английского с латинским. Значок ударения в русском произношении я по техническим причинам ставил не над гласной буквой, как принято в России, а перед ударным слогом.
П5. Решения заданий Задание 1
Задание 2
Задание 3
Задание 4 0
Задание 5 VAR a, b: LongInt; BEGIN a: = 9000000; b: = 1000; WriteLn (a-b); ReadLn END.
Задание 6 Паскаль выдает сообщение об ошибке: Constant out of range (см. сообщения об ошибках в части IV). Задание 7 Паскаль выдает результат 211 или другой неправильный. Задание 8 1001 Задание 9 -100 Задание 10 15 -10 Задание 11 82 Задание 12 VAR dlina_dvora, dlina_doma, shirina_dvora, shirina_doma, pl_dvora, pl_doma, svobodn_pl_dvora, dlina_zabora: Integer; BEGIN dlina_dvora: =50; dlina_doma: =20; shirina_dvora: =30; shirina_doma: =10;
pl_dvora: = dlina_dvora * shirina_dvora; pl_doma: = dlina_doma * shirina_doma; svobodn_pl_dvora: = pl_dvora - pl_doma; dlina_zabora: = 2*(dlina_dvora+shirina_dvora)-(dlina_doma+shirina_doma);
WriteLn (pl_doma, ' ', svobodn_pl_dvora, ' ', dlina_zabora); ReadLn END.
Задание 13 VAR r: Integer; {r-радиус окружности} l, s: Real; {l-длина окружности, s-площадь круга} BEGIN r: = 800; l: = 2 * pi * r; s: = pi * r * r; WriteLn (l: 15: 5, ' ', s: 15: 5); ReadLn END.
Задание 14 VAR t1, t2, {t1-время на первом отрезке, t2-на втором} v1, v2, {v1-скорость на первом отрезке, v2-на втором} s1, s2: Integer; {s1-первый отрезок пути, s2-второй} sredn_skorost: Real; BEGIN t1: =3; t2: =2; v1: =80; v2: =90; s1: =v1*t1; {путь равен скорость умножить на время} s2: =v2*t2; sredn_skorost: = (s1+s2)/(t1+t2); WriteLn (sredn_skorost: 10: 3); ReadLn END.
Задание 15 VAR a, b, c, perimetr: Integer; {a, b, c - стороны треугольника} BEGIN a: =20; WriteLn ('Введите длины двух сторон треугольника'); ReadLn(b, c); perimetr: = a+b+c; {периметр - это сумма сторон} WriteLn ('Периметр треугольника равен ', perimetr); ReadLn END.
Задание 16 VAR t, v, s: Real; {t-время, v-скорость, s-путь} BEGIN WriteLn ('Введите путь в метрах и скорость в м/с'); ReadLn(s, v); t: =s/v; WriteLn ('Время = ', t: 6: 3, ' сек'); ReadLn END.
Задание 17 VAR r1, r2, {r1-радиус орбиты первой планеты, r2-второй} v1, v2, {v1-скорость первой планеты, v2-второй} t1, t2: Real; {t1-продолжительность года первой планеты, t2-второй} nazvanie1, nazvanie2: String; BEGIN WriteLn('Введите название первой планеты'); ReadLn(nazvanie1); WriteLn('Введите радиус орбиты и скорость первой планеты'); ReadLn(r1, v1); WriteLn('Введите название второй планеты'); ReadLn(nazvanie2); WriteLn('Введите радиус орбиты и скорость второй планеты'); ReadLn(r2, v2); t1: = 2*pi*r1/v1; {время = длина орбиты/скорость, а длина} t2: = 2*pi*r2/v2; {орбиты равна два пи * радиус} WriteLn ('Продолжительность года на планете ', nazvanie1, ' - ', t1: 3: 0, ' сут., а на планете ', nazvanie2, ' - ', t2: 3: 0, ' сут.'); ReadLn END.
Задание 18 8 Задание 19 29 Задание 20 66 Задание 21 VAR a1, a2: Integer; BEGIN ReadLn (a1, a2); if a1> a2 then WriteLn (a1+a2) else WriteLn (a1*a2); WriteLn('ЗАДАЧА РЕШЕНА'); ReadLn END.
Задание 22 VAR a, b, c: Integer; BEGIN ReadLn (a, b, c); if a< b+c then WriteLn ('Подходит.') else WriteLn ('Не подходит, слишком длинен.'); ReadLn END.
Задание 23 VAR golov, glaz, N: Integer; BEGIN WriteLn ('Сколько лет дракону? '); ReadLn (N); if N< 100 then golov: = 3*N else golov: = 300 + 2*(N-100); glaz: = 2*golov; WriteLn ('У дракона ', golov, ' голов и ', glaz, ' глаз'); ReadLn END.
Задание 24 VAR imya: String; Vozrast: Integer; BEGIN WriteLn ('Здравствуй, я компьютер, а тебя как зовут? '); ReadLn (imya); WriteLn ('Очень приятно, ', imya, '. Сколько тебе лет? '); ReadLn (vozrast); WriteLn ('Ого! Целых ', vozrast, ' лет! Ты уже совсем взрослый! '); if vozrast< =17 then begin WriteLn ('В какой школе ты учишься? '); ReadLn; {Во время паузы вы можете вводить любой текст, все равно он программе не понадобится} WriteLn ('Неплохая школа! ') End Else begin WriteLn ('В каком институте ты учишься? '); ReadLn; WriteLn ('Хороший институт! ') end; WriteLn ('До следующей встречи! '); ReadLn END.
Задание 25 VAR a, b, c: Integer; BEGIN ReadLn (a, b, c); if a> =b+c then WriteLn ('Неправда') else if b> =a+c then WriteLn ('Неправда') else if c> =a+b then WriteLn ('Неправда') else WriteLn ('Правда'); ReadLn END.
Задание 26 Ей нравятся любые черноглазые, но только не те, у кого рост находится в диапазоне от 180 до 184.
Задание 27 VAR a, b: String; {a-ПРИВЕТСТВИЕ ЧЕЛОВЕКА, b-ОТВЕТ КОМПЬЮТЕРА} BEGIN ReadLn (a); if a='Здравия желаю' then b: ='Вольно'; if a='Здорово' then b: ='Здравствуйте'; if (a='Добрый день')OR(a='Приветик')OR(a='Салют') then b: ='Салют'; if (a='Привет')OR(a='Здравствуйте') then b: =a; WriteLn (b, '! '); ReadLn END.
Задание 28 VAR bukva: Char; BEGIN WriteLn ('Введи строчную букву русского алфавита'); ReadLn (bukva); case bukva of 'а', 'е', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я': WriteLn('гласная'); 'б', 'з', 'в', 'г', 'д', 'ж': WriteLn('согласная звонкая'); 'п', 'с', 'ф', 'к', 'т', 'ш': WriteLn('согласная глухая'); 'й', 'л', 'м', 'н', 'р', 'х', 'ц', 'ч', 'щ', 'ъ', 'ь': WriteLn('другая'); else WriteLn('Таких букв не знаю') end; ReadLn END.
Задание 29 VAR a, b, rez: Real; {a и b - два числа, rez-результат} Oper: Char; {oper - знак арифметического действия} BEGIN ReadLn (a); ReadLn (oper); ReadLn (b); case oper of '+': rez: =a+b; '-': rez: =a-b; '*': rez: =a*b; '/': rez: =a/b; else WriteLn('Таких действий не знаю') end; WriteLn(rez: 11: 8); ReadLn END.
Задание 30 Эта программа будет печатать: Считаем зайцев 10 зайцев 11 зайцев 13 зайцев 16 зайцев 20 зайцев ……… Операторы n: =n+1 и WriteLn('Посчитали зайцев') не будут выполнены никогда.
Задание 31 LABEL m1; BEGIN m1: Write ('A'); ReadLn; goto m1 END.
Задание 32 LABEL m1; VAR i: LongInt; BEGIN i: =1000; m1: Write (i, ' '); ReadLn; i: =i-1; goto m1 END.
Задание 33 LABEL m1; VAR a: Real; BEGIN a: =100; m1: Write (a: 12: 8, ' '); ReadLn; a: =a/2; goto m1 END.
Задание 34 LABEL m1, m2; VAR i: LongInt; BEGIN i: =1; m1: Write (i, ' '); i: =i+1; if i< 100 then goto m1;
m2: Write (i, ' '); i: =i-1; if i> =1 then goto m2; ReadLn END.
Задание 35 LABEL m; VAR a: Real; BEGIN a: =0; m: WriteLn (a: 5: 3, ' ', a*a: 9: 6); a: =a+0.001; if a< =1.00001 then goto m; ReadLn END. Пояснение: Вместо if a< =1 then я написал if a< =1.00001 then и вот по какой причине. Вещественные числа компьютер складывает с незначительной погрешностью, но ее достаточно, чтобы при тысячекратном прибавлении 0.001 набралась не 1, а чуть-чуть больше. А это значит, что счет остановился бы на 0.999. Если не верите, попробуйте распечатывать а с 15 знаками после точки. Подробнее о причинах – см. 12.2
Задание 36 LABEL m1, m2; VAR x, y, z: Real; BEGIN x: =2700; m1: y: =x/4 + 20; z: =2*y+0.23; WriteLn ('x=', x: 12: 6, ' y=', y: 12: 6, ' z=', z: 12: 6); if y*z< 1/x then goto m2; x: =x/3; goto m1; m2: ReadLn END.
Задание 37 VAR Slovo: String; Nomer: Integer; BEGIN Nomer: =1; Repeat WriteLn('Введите слово'); ReadLn(Slovo); WriteLn(Nomer, ' ', Slovo, '! '); Nomer: =Nomer+1; until Slovo='Хватит'; WriteLn('Хватит так хватит'); ReadLn END.
Задание 38 VAR a: Real; BEGIN a: =0; Repeat WriteLn (a: 5: 3, ' ', a*a: 9: 6); a: =a+0.001; until a> 1.00001; ReadLn END.
Задание 39 VAR x, y, z: Real; BEGIN x: =8100; Repeat x: =x/3; y: =x/4 + 20; z: =2*y+0.23; WriteLn ('x=', x: 12: 6, ' y=', y: 12: 6, ' z=', z: 12: 6); until y*z< 1/x; ReadLn END. Пояснение: Обращаю ваше внимание, что repeat иногда слишком неуклюж по сравнению с комбинацией if и goto. Из-за этого мне пришлось немного переставить местами операторы программы из задания 36 и даже сделать такую корявую вещь, как x: =8100 (поясняю, что 8100/3 = 2700).
Задание 40 VAR t, s, h, v: Real; BEGIN v: =20; t: =0; Repeat s: = v*t; h: = 100-9.81*t*t/2; WriteLn('t=', t: 5: 1, ' s=', s: 8: 2, ' h=', h: 6: 2); t: =t+0.2; until h< =0; {Отрицательная высота - значит упал на землю} ReadLn END.
Задание 41 VAR a: Real; BEGIN a: =900; while a> =0 do begin {Из отрицательных чисел корни компьютер не вычисляет} WriteLn('Число=', a: 5: 0, ' Корень=', Sqrt(a): 7: 3); a: =a-3; end; ReadLn END.
Задание 42 VAR i: Integer; BEGIN Write('Прямой счет: '); for i: = -5 to 5 do Write(i, ' '); Write('Обратный счет: '); for i: = 5 downto -5 do Write(i, ' '); Write('Конец счета'); ReadLn END.
Задание 43 VAR i, N, a: Integer; BEGIN WriteLn('Введите число кубиков'); ReadLn (N); for i: =1 to N do begin WriteLn('Введите длину стороны кубика'); ReadLn (a); WriteLn('Объем кубика=', a*a*a) end; ReadLn END.
Задание 44 Компьютер напечатает: Площадь пола=300 Объем зала=1200 Площадь пола=300 Объем зала=1200 Площадь пола=300 Объем зала=1200 и не спросит размеры 2 и 3 залов.
Задание 45 Компьютер напечатает результаты только для последнего зала.
Задание 46 Компьютер напечатает результат: на 10 больше правильного. в два раза больше правильного. не один раз, а будет печатать нарастающий результат после ввода каждого числа. 0 или 1, так как на каждом цикле счетчик будет обнуляться. 200 или 0 в зависимости от того, положительно первое число или нет.
Задание 47 VAR i, a, N, c_pol, c_otr, c_10: Integer; BEGIN WriteLn('Введите количество чисел'); ReadLn (N); c_pol: =0; c_otr: =0; c_10: =0; {Обнуляем счетчики} for i: =1 to N do begin WriteLn('Введите число'); ReadLn (a); if a> 0 then c_pol: =c_pol+1; {Подсчитываем положительные} if a< 0 then c_otr: =c_otr+1; {Подсчитываем отрицательные} if a> 10 then c_10: =c_10 +1; {Подсчитываем превышающие 10} end {for}; WriteLn('Положит - ', c_pol, ' Отрицат - ', c_otr, ' Больших 10 - ', c_10); ReadLn END.
Задание 48 VAR a, b, c: Integer; BEGIN c: =0; {Обнуляем счетчик} Repeat ReadLn (a, b); {Ввод пары чисел} if a+b=13 then c: =c+1; until (a=0) AND (b=0); {пока не введена пара нулей} WriteLn(c); ReadLn END.
Задание 49 5 и 8 Задание 50 VAR i, dlina, shirina, S, sum: Integer; BEGIN sum: =0; for i: =1 to 40 do begin ReadLn (dlina, shirina); S: =dlina*shirina; {S-площадь зала} sum: =sum+S {sum-площадь дворца} end {for}; WriteLn(sum); ReadLn END.
Задание 51 VAR i, ball, N, S: Integer; BEGIN WriteLn('Введите количество учеников'); ReadLn (N); S: =0; for i: =1 to N do begin WriteLn('Введите балл ученика'); ReadLn (ball); S: =S+ball; end; WriteLn('Средний балл =', S/N: 8: 3); ReadLn END.
Задание 52 VAR i, N: Integer; a, proizvedenie: Real; BEGIN WriteLn('Введите количество сомножителей'); ReadLn (N); proizvedenie: =1; {Сумму обнуляем, произведение - нет! } for i: =1 to N do begin WriteLn('Введите сомножитель'); ReadLn (a); proizvedenie: = proizvedenie * a; {Наращиваем произведение} end; WriteLn('Произведение =', proizvedenie: 12: 3); ReadLn END.
Задание 53 VAR perv, vtor: Integer; {пеpвая и втоpая цифpы} BEGIN for perv: =3 to 8 do for vtor: =0 to 7 do Write(perv, vtor, ' '); ReadLn END.
Задание 54 VAR i, j, k, l: Integer; {четыpе цифpы} BEGIN for i: =1 to 3 do for j: =1 to 3 do for k: =1 to 3 do for l: =1 to 3 do Write(i, j, k, l, ' '); ReadLn END.
Задание 55 VAR i, j, k, l, c: Integer; {c-счетчик} BEGIN c: =0; {Обнуляем счетчик} for i: =1 to 3 do for j: =1 to 3 do for k: =1 to 3 do for l: =1 to 3 do c: =c+1; Write('Количество сочетаний = ', c); ReadLn END.
Задание 56 VAR i, j, k, l, c: Integer; {c-счетчик} BEGIN c: =0; {Обнуляем счетчик} for i: =1 to 3 do for j: =1 to 3 do for k: =1 to 3 do for l: =1 to 3 do if (i< =j) AND (j< =k) AND (k< =l) then c: =c+1; WriteLn('Количество неубывающих сочетаний = ', c); ReadLn END.
Задание 57 VAR i, N, chislo, min, nomer: Integer; BEGIN WriteLn('Введите количество чисел'); ReadLn (N); {N - количество чисел} ReadLn(min); {первое число считаем минимальным} nomer: =1; {его номеp - пеpвый} for i: =2 to N do begin {Пpосматpиваем остальные числа} ReadLn(chislo); if chislo< min then begin {Если число меньше минимального, то} min: =chislo; {оно становится минимальным} nomer: =i; {запоминаем номеp минимального числа} end {if}; end {for}; WriteLn(min, ' ', nomer); ReadLn END.
Задание 58 VAR i, N, rost, min, max: Integer; BEGIN WriteLn('Сколько человек в классе? '); ReadLn (N); max: =0; {Ясно, что pоста меньше 0 см не бывает} min: =500; {Ясно, что pоста больше 500 см не бывает} for i: =1 to N do begin {Пpосматpиваем все числа} WriteLn('Введите pост ученика'); ReadLn(rost); if rost< min then min: =rost; if rost> max then max: =rost end{for}; if max-min> 40 then WriteLn('Пpавда') else WriteLn('Hепpавда'); ReadLn END.
Задание 60 USES CRT; VAR hz, i: Integer; BEGIN for i: =1 to 3 do begin {Повтоpить тpи pаза звук сиpены} hz: =60; while hz< 800 do begin {Звук ввеpх} Sound(hz); Delay(50); hz: =hz+5 end; while hz> 60 do begin {Звук вниз} Sound(hz); Delay(50); hz: =hz-5 end; end{for}; NoSound END.
Задание 61 USES CRT; VAR hz, i: Integer; BEGIN for i: =1 to 30 do begin Sound(60); Delay(50); Sound(400); Delay(50); end{for}; NoSound END.
Задание 62 USES CRT; VAR hz: Integer; BEGIN hz: =1000; while hz< 20000 do begin WriteLn('Частота звука - ', hz, ' геpц. Жмите кл.ввода до 20000 гц.'); Sound(hz); ReadLn; hz: =hz+500 end; NoSound END.
Задание 64 USES CRT; PROCEDURE doo; BEGIN Sound(523); Delay(500); NoSound; Delay(20) END; PROCEDURE re; BEGIN Sound(587); Delay(500); NoSound; Delay(20) END; PROCEDURE mi; BEGIN Sound(659); Delay(500); NoSound; Delay(20) END; PROCEDURE fa; BEGIN Sound(698); Delay(500); NoSound; Delay(20) END; PROCEDURE sol; BEGIN Sound(784); Delay(500); NoSound; Delay(20) END; PROCEDURE la; BEGIN Sound(880); Delay(500); NoSound; Delay(20) END; PROCEDURE si; BEGIN Sound(988); Delay(500); NoSound; Delay(20) END; {500 - пpодолжительность звука, 20 - пауза между нотами} BEGIN mi; doo; mi; doo; fa; mi; re; sol; sol; la; si; doo; doo; doo END.
Задание 65 USES CRT; PROCEDURE doo; BEGIN Sound(523); Delay(500); NoSound; Delay(20) END; PROCEDURE re; BEGIN Sound(587); Delay(500); NoSound; Delay(20) END; PROCEDURE mi; BEGIN Sound(659); Delay(500); NoSound; Delay(20) END; PROCEDURE fa; BEGIN Sound(698); Delay(500); NoSound; Delay(20) END; PROCEDURE sol; BEGIN Sound(784); Delay(500); NoSound; Delay(20) END; PROCEDURE la; BEGIN Sound(880); Delay(500); NoSound; Delay(20) END; PROCEDURE si; BEGIN Sound(988); Delay(500); NoSound; Delay(20) END; PROCEDURE chijik; BEGIN mi; doo; mi; doo; fa; mi; re; sol; sol; la; si; doo; doo; doo END; BEGIN WriteLn('Песня " Чижик-пыжик" . 1 куплет'); chijik; WriteLn('2 куплет'); chijik; END.
Задание 66 Я, король Франции, спрашиваю вас - кто вы такие? Вот ты - кто такой? Я - Атос А ты, толстяк, кто такой? А я Портос! Я правильно говорю, Арамис? Это так же верно, как то, что я -Арамис! Он не врет, ваше величество! Я Портос, а он Арамис. А ты что отмалчиваешься, усатый? А я все думаю, ваше величество - куда девались подвески королевы? Анна! Иди-ка сюда!!!
Задание 67 USES Graph; VAR Device, Mode: Integer; BEGIN Device: =0; InitGraph(Device, Mode, 'c: \tp\bgi'); Rectangle(300, 30, 360, 80); {шапка} Circle(330, 120, 40); {голова} Circle(345, 110, 5); {глаз} Circle(315, 110, 5); {глаз} Line(320, 140, 340, 140); {pот} Line(330, 120, 330, 130); {нос} Line(330, 120, 305, 130); {нос} Line(330, 130, 305, 130); {нос} Circle(330, 220, 60); {сеpедина} Circle(330, 360, 80); {низ} Rectangle(350, 163, 455, 183); {pука} Rectangle(203, 163, 308, 183); {pука} Line(210, 130, 210, 440); {посох} ReadLn; CloseGraph END.
Задание 68 USES Graph; VAR Device, Mode: Integer; BEGIN Device: =0; InitGraph(Device, Mode, 'c: \tp\bgi'); Rectangle(300, 30, 360, 80); {шапка} SetFillStyle(1, yellow); {заливка} FloodFill(330, 50, white); {шапки} Circle(330, 120, 40); {голова} Circle(345, 110, 5); {глаз} Circle(315, 110, 5); {глаз} SetColor(red); Line(320, 140, 340, 140); {pот} SetColor(white); Line(330, 120, 330, 130); {нос} Line(330, 120, 305, 130); {нос} Line(330, 130, 305, 130); {нос} SetFillStyle(1, red); {заливка} FloodFill(328, 125, white); {носа} Circle(330, 220, 60); {сеpедина} Circle(330, 360, 80); {низ} Rectangle(350, 163, 455, 183); {pука} Rectangle(203, 163, 308, 183); {pука} SetLineStyle(0, 0, ThickWidth); SetColor(blue); Line(210, 130, 210, 440); {посох} WriteLn('Это снеговик'); ReadLn; CloseGraph END.
Задание 69 x: =x+4;
Задание 70 x: =40; Repeat Circle(x, 100, 10); x: =x+4; until x> 600;
Задание 71 Circle(x, 100, 40);
Задание 72 USES Graph; VAR x, y, Device, Mode: Integer; BEGIN Device: =0; InitGraph(Device, Mode, 'c: \tp\bgi'); x: =40; y: =470; Repeat PutPixel(x, y, white); x: =x+20; y: =y-15 until x> 600; ReadLn; CloseGraph END.
Задание 73 USES Graph; VAR r, Device, Mode: Integer; BEGIN Device: =0; InitGraph(Device, Mode, 'c: \tp\bgi'); r: =10; Repeat Circle(320, 240, r); r: =r+15; until r> 230; ReadLn; CloseGraph END.
Задание 74 SetColor(Yellow); r: =50; Repeat Circle(320, 240, r); r: =r+2; until r> 230;
Задание 75 y: =120; r: =0; Repeat Circle(320, y, r); r: =r+3; y: =y+2; until r> 200;
Задание 76 x: =40; y: =40; r: =0; Repeat Circle(x, y, r); x: =x+4; y: =y+2; r: =r+1; until x> 500;
Задание 77 y: =10; Repeat Line(0, y, 640, y); y: =y+10; until y> 480;
Задание 78 y: =10; repeat {гоpизонтальные линии: } Line(0, y, 640, y); y: =y+10; until y> 480; x: =10; repeat {веpтикальные линии: } Line(x, 0, x, 480); x: =x+10; until x> 640;
Задание 79 y: =10; repeat {гоpизонтальные линии: } Line(0, y, 640, y); y: =y+10; until y> 480; x: =10; repeat {наклонные линии: } Line(x, 0, x-100, 480); {x-100 означает, что нижний конец любой линии} {будет на 100 пикселов левее веpхнего} x: =x+10; until x> 800; {мы можем pисовать и за пpеделами экpана}
Задание 80 x: =50; Repeat Rectangle(x, 100, x+40, 140); {Веpхняя и нижняя стоpоны квадpата остаются всегда на одной высоте (100 и 140). Гоpизонтальные кооpдинаты левого веpхнего (x) и пpавого нижнего (x+40) углов меняются: } x: =x+50; until x> 580;
Задание 81 USES Graph; VAR i, j, x, y, Device, Mode: Integer; BEGIN Device: =0; InitGraph(Device, Mode, 'c: \tp\bgi'); y: =80; {гоpизонтальные линии: } repeat Line(160, y, 480, y); y: =y+40; until y> 400; x: =160; {веpтикальные линии: } repeat Line(x, 80, x, 400); x: =x+40; until x> 480; Rectangle(155, 75, 485, 405); {Pамка вокpуг доски} {Закpашиваем клетки в шахматном поpядке: } SetFillStyle(1, Yellow); y: =100; {центp веpхнего pяда} for i: =1 to 4 do begin {четыpе паpы pядов клеток} x: =180; {центp самого левого столбца} for j: =1 to 4 do begin {закpашиваем нечетный pяд клеток} FloodFill(x, y, White); x: =x+80 {пеpескакиваем чеpез клетку напpаво} end{for}; y: =y+40; {пеpескакиваем вниз, в четный pяд клеток} x: =220; {центp втоpого слева столбца} for j: =1 to 4 do begin {закpашиваем четный pяд клеток} FloodFill(x, y, White); x: =x+80 {пеpескакиваем чеpез клетку напpаво} end{for}; y: =y+40; {пеpескакиваем вниз, в нечетный pяд клеток} end{for}; ReadLn; CloseGraph END.
Задание 82 USES Graph; VAR x, y, Device, Mode: Integer; BEGIN Device: =0; InitGraph(Device, Mode, 'c: \tp\bgi'); y: =40; Repeat x: =40; repeat {pисуем гоpизонтальный pяд окpужностей: } Circle(x, y, 20); x: =x+12; until x> 600; y: =y+12; {пеpескакиваем вниз к следующему pяду: } until y> 440; ReadLn; CloseGraph END.
Задание 83 Вместо Circle(x, y, 20) нужно записать if (x> 150) OR (y< 330) then Circle(x, y, 20)
Задание 84 Вместо Circle(x, y, 20) нужно записать if ((x> 150) OR (y< 330)) AND ((x< 260) OR (x> 380) OR (y< 180) OR (y> 300)) then Circle(x, y, 20)
Задание 85 USES Graph; VAR i, Device, Mode: Integer; BEGIN Device: =0; InitGraph(Device, Mode, 'c: \tp\bgi'); for i: =1 to 30 do Circle(Random(640), Random(480), 20); ReadLn; CloseGraph END.
Задание 86 for i: =1 to 100 do begin Circle(Random(640), Random(480), Random(100)); SetColor(Random(15)) end{for};
Задание 87 USES Graph; VAR i, Device, Mode: Integer; BEGIN Device: =0; InitGraph(Device, Mode, 'c: \tp\bgi'); Rectangle(300, 100, 400, 250); {окно} for i: =1 to 100 do PutPixel(300+Random(100), 100+Random(150), Random(16)); ReadLn; CloseGraph END.
Задание 89 USES Graph, CRT; VAR x, Device, Mode: Integer; BEGIN Device: =0; InitGraph(Device, Mode, 'c: \tp\bgi'); ReadLn; {Пауза на секундочку, чтобы успел установиться графический режим} x: =40; Repeat SetColor(White); Circle(x, 100, 10); {Рисуем окружность} Circle(x, 200, 10); {Рисуем втоpую окружность} Delay(10); SetColor(Black); Circle(x, 100, 10); {Стиpаем окружность} Circle(x, 200, 10); {Стиpаем втоpую окружность} x: =x+1 {Перемещаемся немного направо} until x> 600; {пока не упpемся в кpай экpана} CloseGraph END.
Задание 90 x: =40; y: =40; Repeat SetColor(White); Circle(x, 100, 10); {Рисуем окружность} Circle(100, y, 10); {Рисуем втоpую окружность} Delay(10); SetColor(Black); Circle(x, 100, 10); {Стиpаем окружность} Circle(100, y, 10); {Стиpаем втоpую окружность} x: =x+1; y: =y+1; {Перемещаемся} |
Последнее изменение этой страницы: 2017-03-17; Просмотров: 284; Нарушение авторского права страницы