Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование в рисовании переменных величин. ⇐ ПредыдущаяСтр 6 из 6
Чтобы заставить Паскаль короткой программой рисовать множество элементов, необходимо применять циклы, используя в обращениях к процедурам вместо чисел переменные величины и арифметические выражения.
Задача 12. Нарисовать горизонтальный ряд окружностей радиусом 10 на расстоянии 100 от верхнего края экрана и с такими горизонтальными координатами центра: 50, 80, 110, 140,…, 290.
Программа.
USES Graph; VAR Device,Mode,x:Integer; BEGIN Device:=0; InitGraph(Device,Mode,'a:\TP\BGI'); x:=50; Repeat Circle(x,100,10); x:=x+30; Until x>290; ReadLn; CloseGraph END.
Задачи: 1.Нарисовать ряд точек по направлению из левого нижнего угла, в правый верхний. 2. Нарисовать "Круги на воде", т.е. нарисовать 20 концентрических окружностей, т.е. окружностей разного радиуса, но имеющих общий центр. 3. Разлиновать экран в линейку. 4. Разлиновать экран в клетку.
Использование случайных величин при рисовании. В обращениях к графическим процедурам вместо чисел можно применить случайные величины, используя функцию Random. Задача. Нарисовать "звёздное небо", т.е. в случайных местах экрана нарисовать 1000 разноцветных точек.
Фрагмент программы:
For i:=1 to 1000 do PutPixel (Random(640),Random(480),Random(16));
Задачи:
Движение картинок по экрану. Рассмотрим иллюзию движения, возникающую на экране кинотеатра. Если внимательно посмотреть на киноплёнку фильма, изображающего, скажем, движение автомобиля, то можно обратить внимание, что она состоит из множества неподвижных кадров, на каждом следующем из которых автомобиль находится чуть – чуть в другом месте, чем на предыдущем. Показывая эти кадры, один за другим с большой скоростью, создается иллюзия движения автомобиля. Точно так же поступают с созданием движения на экране компьютера.
Задача. Написать программу движения по экрану слева направо окружности.
Программа. Сначала нарисуем слева окружность и тут же сотрём её, для чего нарисуем её на том же месте, но чёрным цветом. Несмотря на то, что окружность тут же сотрём, она успеет мелькнуть на экране и глаз это заметит. Затем надо нарисовать и стереть такую же окружность чуть правее, затем ещё правее, и т.д. Так как в цикле окружность последний раз стирается, т.е. рисуется чёрным цветом, то после цикла необходимо её еще раз нарисовать белым цветом.
USES Graph; VAR Device,Mode,x:Integer; BEGIN Device:=0; InitGraph(Device,Mode,'a:\TP\BGI'); x:=40; Repeat SetColor(15); Circle(x,100,10); {рисуем белую окружность} SetColor(0); Circle(x,100,10); {рисуем чёрную окружность} x:=x+1; Until x>600; SetColor(15); Circle(x,100,10); {рисуем последний раз белую окружность} ReadLn; CloseGraph END.
Замечание. Изменить скорость движения можно, увеличив или уменьшив шаг движения. Если фигуры рисовать толстой линией, то движение сильно замедлится, так как толстая линия рисуется гораздо дольше тонкой, то же относится и к закрашенной окружности. Замедлить движение можно и с помощью оператора Delay, введя её между рисованием и стиранием фигуры.
Задачи:
МАССИВЫ
I. Переменные с индексами. Поскольку в алфавите Паскаля нет подстрочных букв и цифр, то индексированные переменные на Паскале обозначаются так: x [1], y [I], z [I, j]. Рассмотрим бесконечный ряд чисел Фибоначчи: 1 1 2 3 5 8 13 21 34 … Каждое из чисел Фибоначчи обозначается индексированной переменной таким образом: f [1] =1 f [2] =1 f [3] =2 f [4] =3 f [5] =5 … В этом ряду каждое из чисел является суммой двух предыдущих. В индексном виде это записывается так: f [1] = f [I-2] + f [I-1]. Задача. Запишите в индексном виде, как получается из предыдущего числа ряда последующее: а) 14 18 22 26 … f [I] = f [I-1] + 4 б) 6 12 24 48 … f [I] = f [I-1] * 2 в) 3 5 9 17 33 65 … f [I] = 2 * f [I-1] – 1
II. Определение массива.
Массив – это совокупность конечного числа элементов одного и того же типа, в которой каждый элемент имеет номер, а все элементы – общее имя.
Номер элемента массива назначается его индексом, причем индексов может быть несколько. Массив с одним индексом называют одномерным массивом, с двумя – двумерным и т.д. Если в программе используется массив, его следует описать в разделе описаний программы.
III. Одномерные массивы.
Описание одномерного массива имеет вид: VAR имя_массива: array [нач_инд.. кон_инд] of тип_данных; Здесь имя_массива выбирается в соответствии с обычными привилами Раскаля. Array – читается "эррэй"; переводится "массив" – зарезервированное слово, указывающее, что имя относится к массиву. Нач_инд и кон_инд – это целые числа, определяющие диапазон изменения индексов элементов массива: VAR temp: array [1..31] of Real; Нумерация массива не обязательно начинается с 1, но нижняя граница должна быть меньше верхней. Количество элементов в массиве можно найти по формуле: кон_инд – нач_инд + 1. Так, например, массив VAR sum: array [6..8] of Integer; состоит всего из трех элементов 8 – 6 + 1=3.
Обратимся к элементу массива как к обычной переменной можно, указав имя массива и индекс элемента в квадратных скобках [ ]. С элементами массива можно выполнять все операции, которые допускаются его типом. Пример задания одномерного массива: 1 способ (примитивное присваивание VAR a: array [1..4]\ of integer; BEGIN a [1]: = 8; a [2]: = 9; a [3]: = - 35; a [4]: = 2;
2 способ (с помощью клавиатуры) const n = 10; VAR a: array [1..n] of integer; I: integer;
BEGIN For I:1 to n do begin writeln (' Введите a [', I, '] '); Readhn (a [I]); end; for
Задача. Дана таблица чисел. Найти сумму положительных элементов. Программа const n =5; VAR a: array [1..n] of integer; S, I: integer; BEGIN For I = 1 to n do readln (a [I]); For I: 1 to n do write (a [I]; 1); writehn; S: = 0; For I = 1 to n do if a [I] > 0 then S: = S +U [I]; write ('S = ', S); END.
IV. Двумерные массивы.
Описание двумерного массива имеет вид: VAR имя_массива: array [номер_1столбца.. номер_посл_столбца] of тип_данных; Так, таблица сложения натуральных чисел может быть описана так: VAR Add: array [1..9,1..9] of Integer; Обратиться к элементу двумерного массива можно, указав номер строки (индекс I) и номер столбца (индекс I) в квадратных скобках после имени массива. Так, например, на пересечении сложения чисел стоит элемент Add [2,5], он равен 7. Пример задания двумерного массива: 1 способ (примитивное присваивание)
VAR t: array [1..3, 1..4] of Integer;
BEGIN t [1,1]: = - 8; … t [1,1]: = - 18; … t [3,1]: = 11; … t [3,4]: = 25;
2 способ (с помощью клавиатуры) VAR a: array [1..3, 1..4] of Integer; BEGIN For I = 1 to 3 do begin writehn ('Введите элементы ', I, ' строки '); For I: = 1 to 4 do Readhn (a [I, j]); end; for
Задача. В доме 3 подъезда по 6 квартир. Число жильцов в каждой квартире известно. Данные хранятся в виде таблицы: а) жильцов в каждом подъезде б) во всем доме. Программа VAR a: array [1..3, 1..6] of Integer; y: array [1..3] of Integer; e, j, f, n: Integer; BEGIN n: = 0l; количество жильцов всего дома For I = 1 to 3 do begin writeln ('Введите количество жильцов в ', I, ' подъезда ') y [I]: = 0; количество жильцов в I-ого подъезда for I: 1 to 6 do begin read (a [I, j]); y [I]: = y [I] + a [I, j]; end; n: = n + y [I]; end; For f: = 1 to 3 do writehn (' количество жильцов ', f, ' подъезда: ', y [f]); Writeln (' количество жильцов всего дома = ', n); END.
СТРОКОВЫЙ ТИП String. РАБОТА СО СТРОКАМИ.
Вспомним, что описание VAR a: String говорит о том, что переменная а обязана иметь строковое (текстовое значение). Чтобы сэкономить память, работая в квадратных скобках, после слова String, максимальную длину строки.
Например: VAR a: String [20]. В этом случае под символы переменной ав память будет отведено 20 байт. Если задана строка s: = ' Барка ', то считается автоматически заданным массив символов с тем же именем: s [1] = ' Б ', s [2] = ' a ', s [3] = ' н ', s [4] = ' к ', s [5] = ' а '. Тогда после выполнения оператора s [3]: = ' р ' мы получили s = ' Барка '. Строки можно сравнивать. Условие S1 = S2 считается выполненным, если обе строки абсолютно одинаковы, включая и пробелы. Сравнивание идет посимвольно слева направо. Поэтому считается, что ' панк ' < ' парк ', так как первый несовпадающий символ ' р ' имеет больший номер в алфавите, чем ' н '.
ПРОЦЕДУРЫ, ФУНКЦИИ И ОПЕРАЦИИ ДЛЯ РАБОТЫ НАД СТРОКАМИ.
|
||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 176; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.251.155 (0.038 с.) |