На прошлом уроке мы познакомились с большим количеством графических процедур, но апробировать еще не успели. Сегодня займемся именно этим. Для самостоятельного задания предлагаю написать программу, рисующую вашего любимого мультгероя. Вот примеры подобных картинок...
Желательно под героем написать его имя. Познакомиться со всеми графическими процедурами можно ЗДЕСЬ.
Текст программы вставляем в комментарий к этому сообщению, в теме указываем Фамилию и Имя. Удачи!
Сегодня во первых начинаем графику, а во вторых в среде Lazarus! Итак, начнем! План на первый урок: 1. Скачать установочный файл системы Lazarus с официального сайта (https://lazarus-rus.ru/download/) 2. Установить систему на свой компьютер. 3. Познакомиться с графическими возможностями языка Паскаль, просмотрев видео:
На протяжении почти полувека остаётся актуальной и востребованной символьная графика (ASCII-графика). Для создания произведений в этой области не требуется специального программного обеспечения, достаточно иметь фантазию, пространственное мышление и усидчивость. Примеры простых символьных изображений приведены ниже...
... хотя в сети можно найти и более сложные примеры.
На одном из прошлых уроков мы строили графики функций. А как мы заставляли точку двигаться по синусоиде? Создавали цикл, в котором координата Х точки изменялась как параметр цикла, а координата Y точки менялась как синус от Х. А если координату Х заставить изменяться с использованием функции COS от параметра цикла? Если вы хорошо знаете математику, то должны догадаться, что точка будет двигаться по окружности. Для эксперимента давайте возьмем программу-образец для построения графиков функций, поставим в цикл окружность, у которой координаты центра Х и Y зависят от SIN и COS.
Program planeta;
Uses Graph;
Var Gd, Gm : SmaLLInt;
x, A, B, C: integer;
Begin
Gd:=Detect;
InitGraph(Gd,Gm,'');
A:=100;
B:=80;
C:=20;
for x:= 0 to 1000 do Circle(round(A*cos(x/B))+GetMaxX div 2, round(A*sin(x/B))+GetMaxY div 2,14);
Readln;
CloseGraph;
End.
На прошлом занятии многие из вас справились с построением стандартных графиков функций. Сегодня попробуем нестандартные. Ниже находятся рисунки нескольких графиков. На каждом рисунке указана изменяемая в пределах диапазона переменная. Зависимость координат точки от параметра цикла тоже описана. Осталось собрать всё в программу и готово. Графика выстроены по возрастанию сложности. Выберите, какой график вам понравился и вперед!
Давно мы не строили графики функций. Давайте сегодня этим и займёмся. Предлагаю рассмотреть образец программы...
Program sinus;
Uses Graph;
Var Gd, Gm : SmaLLInt;
x, A, B, C: integer;
Begin
Gd:=Detect;
InitGraph(Gd,Gm,'');
A:=100;
B:=80;
C:=20;
for x:= -100 to 1000 do begin
Putpixel(x+C, round(A*sin(x/B))+GetMaxY div 2,14);
end;
Readln;
CloseGraph;
End.
Попробуйте изменяя значения коэффициентов A, B и C понять, как они влияют на внешний вид синусоиды. Думаю с доведением до ума синусоиды у вас проблем не будет. Затем по аналогии строим графики функции COS, TG и CTG. Надеюсь вы помните, что тангенс это отношение синуса к косинусу, а котангенс - отношение косинуса к синусу. Все графики разного цвета рисуем на одной координатной плоскости. В углу экрана укажите легенду. Разметка на осях желательна. Ниже образцы графиков функций.
Текст программы вставляем в комментарий к этому сообщению, в теме указываем Фамилию и Имя. Удачи!
Продолжаем тему вложенных циклов в графике. Сегодня мы рисуем шахматную доску с шашками. Примерно это может выглядеть так:
Постарайтесь сделать программу оптимальной, т.е. с минимальным количеством циклов. Фигуры шашек на ваше усмотрение. Пример работы образца программы можете увидеть в приложенном ЕХЕ файле.
Продолжаем знакомиться с графическим режимом. 16 апреля 2020 г. восьмым классам было дано задание - строительство многоэтажного дома в GameLogo. Это был некий итог темы создания орнамента. Предлагаю вам подключится к выполнению этого задания, правда вместо GameLogo делаем в Lazarus.
Уровни сложности задания: 1. Дом из оконных плит без заливки рисуется сверху вниз 2. Дом из оконных плит без заливки рисуется снизу вверх 3. Дом из оконных плит с заливкой (плита и окно залита разным цветом) рисуется снизу вверх (смотри GIF-образец) 4. Дом из балконных плит с заливкой (плита, балкон и окно залита разным цветом) рисуется снизу вверх 5. Дом из оконных и балконных плит (чередуются по вашему правилу) с заливкой (плита, балкон и окно залита разным цветом) рисуется снизу вверх 6. Дом из оконных и балконных плит (чередуются по вашему правилу) с заливкой (плита, балкон и окно залита разным цветом) рисуется снизу вверх со случайно включенным или выключенным цветом. Дополнительное задание: крыша (дизайн на ваше усмотрение) Рекомендую для плит использовать процедуры пользователя.
На прошлом уроке мы познакомились с большим количеством графических процедур, но апробировать еще не успели. Сегодня займемся именно этим. Для самостоятельного задания предлагаю написать программу, рисующую вашего любимого мультгероя. Вот примеры подобных картинок...
Желательно под героем написать его имя. В помощь вам прилагаю PDF документ с описанием графических процедур.
Текст программы вставляем в комментарий к этому сообщению, в теме указываем Фамилию и Имя. Удачи! А это результат Вики Сторожук, Евгения Чернова, Анны Черепановой, Олега Калашина, Анны Изибаевой:
На прошлом занятии мы разобрались как в Паскале использовать текстовые файлы. Сегодня давайте попробуем совместить известные нам методы сортировки массивов и работу с файлами. Рассмотрим решение этой проблемы на примере следующей задачи: Задача. В файле записано не более 100 целых чисел. Вывести в другой текстовый файл те же числа, отсортированные в порядке возрастания. Для сортировки данных из файла нужно будет их все занести в массив, для этого его нужно описать:
const MAX=100;
var A: array[1..MAX] of integer;
Следующая задача - заполнение массива из файла. Вот пример, как это сделать...
var N: integer; Fin: Text;
...
Assign(Fin,'input.txt');
Reset(Fin);
N:= 0;
while (not Eof(Fin)) and (N < MAX) do
begin
N:= N + 1;
readln(Fin, A[N]);
end;
Close(Fin);
Процесс сортировки не изменился, у вас есть достаточно примеров сортировки массивов разными способами. И последняя задача, вывод отсортированного массива в файл.
var Fout: Text;
...
Assign(Fout, 'output.txt');
Rewrite(Fout);
for i:= 1 to N do writeln(Fout, A[i]);
Close(Fout);
Задания для самостоятельного выполнения:
«A»: В файле записано не более 100 чисел. Отсортировать их по возрастанию последней цифры и записать в другой файл. «B»: В файле записано не более 100 чисел. Отсортировать их по возрастанию суммы цифр и записать в другой файл. Используйте функцию, которая вычисляет сумму цифр числа. (эту функцию мы уже неоднократно использовать) «C»: В двух файлах записаны отсортированные по возрастанию массивы неизвестной длины. Объединить их и записать результат в третий файл. Полученный массив также должен быть отсортирован по возрастанию.
Обращаю ваше внимание, что метод сортировки не указан, поэтому это на ваш выбор.
Текст программы вставляем в комментарий к этому сообщению, в теме указываем Фамилию, Имя и уровень задачи. Удачи! Внимание! Работы принимаю сегодня до 20.00!
Здравствуйте, юные программисты! Вздохните с облегчением, сегодня вы не услышите мой "приятный" голос в прилагаемом видео. Как я обещал в одном из видео сегодня мы займемся строительством панельного дома. Если внимательно посмотреть на прилагаемый GIF-файл можно догадаться, что дом это тот же орнамент у которого основной элемент узора - плита. Для реализации этого проекта вам понадобится программа со вложенными циклами, реализованная вами на прошлом уроке.
Уровни сложности задания: 1. Дом из оконных плит без заливки рисуется сверху вниз 2. Дом из оконных плит без заливки рисуется снизу вверх 3. Дом из оконных плит с заливкой (плита и окно залита разным цветом) рисуется снизу вверх (смотри GIF-образец) 4. Дом из балконных плит с заливкой (плита, балкон и окно залита разным цветом) рисуется снизу вверх 5. Дом из оконных и балконных плит (чередуются по вашему правилу) с заливкой (плита, балкон и окно залита разным цветом) рисуется снизу вверх Дополнительное задание: крыша (дизайн на ваше усмотрение)
Надеюсь вы понимаете, что чем выше уровень тем выше оценка. Надеюсь, в этот раз я не увижу большое количество списанных друг у друга работ, как это было на предыдущих наших уроках. Уровней много, степеней свободы много (размер плиты, вид плиты, цвета и т.д.), поэтому вероятность получить на самоизоляции 2 одинаковых дома практически равна 0.
Требования: алгоритм должен быть оптимальным, т.е. содержать систему вложенных циклов. Переведу на "русский язык": не нужно рисовать каждый этаж в отдельном цикле. Количество этажей рекомендую 9, но это не принципиально, так как их легко можно изменить, поменяв количество повторов в вертикальном цикле.
Для того, чтобы сдать практическую работу войдите на сайт под своим аккаунтом и добавьте к этому сообщению комментарий, поместив в Тему сообщения свои фамилию, имя и класс. В сам комментарий вставьте скопированный текст программы из среды GameLogo. Не пугайтесь, ваши сообщения не будут отображаться, пока все не сдадут работу. Внимание! Работы принимаю ДО 17 АПРЕЛЯ (до 20.00 местного времени)! Удачи! PS Вопросы лучше направлять на poznanie-gym@list.ru
Здравствуйте! Сегодня пришло время закрепить знания, полученные по теме "Массивы", решением задач из ЕГЭ. На очереди задачка "В19 - Обработка массивов". Мы уже разбирали подобные задачи, но для повторения предлагаю посмотреть следующий видео-обзор этого типа задач:
«A»: Напишите программу, которая находит среднее арифметическое всех чисел, записанных в файле в столбик, и выводит результат в другой файл.
«B»: Напишите программу, которая находит минимальное и максимальное среди чётных положительных чисел, записанных в файле, и выводит результат в другой файл. Учтите, что таких чисел может вообще не быть.
«C»: В файле в столбик записаны целые числа, сколько их – неизвестно. Напишите программу, которая определяет длину самой длинной цепочки идущих подряд одинаковых чисел и выводит результат в другой файл.
Текст программы вставляем в комментарий к этому сообщению, в теме указываем Фамилию и Имя. Удачи! Внимание! Работы принимаю сегодня до 20.00!
Здравствуйте, юные программисты! Сегодня мы продолжаем работать над оригинальным орнаментом, но уже используя систему вложенных циклов. Кстати, прошлые орнаменты некоторые уже реализовали используя эту систему. Честь и хвала им!
План на урок: 1. Просмотреть обучающее видео.
2. Апробировать в среде программирования систему вложенных циклов. 3. Реализовать в среде GameLogo предложенный в видео алгоритм создания орнамента.
ДЗ. Разработать АВТОРСКИЙ ОРНАМЕНТ, соответствующий следующим требованиям: - орнамент должен быть размещен по центру экрана (горизонталь и вертикаль); - орнамент не должен выходить за пределы области построения (800х600).
И помните, если ваш алгоритм является копией алгоритма из видео работа может претендовать только на 3.
Для того, чтобы сдать практическую работу войдите на сайт под своим аккаунтом и добавьте к этому сообщению комментарий, поместив в Тему сообщения свои фамилию, имя и класс. В сам комментарий вставьте скопированный текст программы из среды GameLogo. Не пугайтесь, ваши сообщения не будут отображаться, пока все не сдадут работу. Внимание! Работы принимаю сегодня до 20.00! Удачи!
PS популярные проблемы прошлых работ: - списанная у одноклассника работа; - программа не запускается; - неверная кодировка вставленного текста; - отсутствие оригинальности (копия из видео); - нет регистрации ученика на сайте; - отправляют работу на другие ресурсы (почтовые ящики, эл. журнал и т.д.).
Тема "Перебор элементов матрицы" Главная и побочная диагональ при работе с двумерными матрицами в Pascal
Главная диагональ квадратной матрицы nxn (т.е. той, у которой количество строк равно количеству столбцов) проходит с верхнего левого угла матрицы (элемент 1,1) до правого нижнего угла матрицы (элемент n,n). Побочная диагональ квадратной матрицы n x n проходит с нижнего левого угла матрицы (элемент n,1) до правого верхнего угла матрицы (элемент 1,n). Формулу поиска элементов диагоналей проще всего искать, нарисовав элементы матрицы:
Учитывая, что первая цифра будет соответствовать счетчику i, а вторая — счетчику j, то из таблицы можно вывести формулы:
Главная диагональ матрицы имеет формулу: i=j Побочная диагональ матрицы имеет формулу: n=i+j-1 (или j=n-i+1) где n — размерность квадратной матрицы
Здравствуйте! Сегодня мы вернемся к изучению массивов. Одномерные массивы мы подробно рассмотрели, на очереди - матрицы. С самим понятием матрицы мы знакомы из темы "Графы".
Тема "Программирование событий клавиатуры в GameLogo" Здравствуйте, юные программисты! Сегодня мы познакомимся с программированием событий. Если мы хотим, чтобы наша программа реагировала на нажатие какой-либо клавиши на клавиатуре, то мы можем воспользоваться программированием событий клавиатуры. Каждая клавиша на клавиатуре имеет свой код. Например, клавиша "стрелка вверх" имеет код 38. Попробуем написать программу, реагирующую на нажатие этой клавиши.
событие нажата клавиша 38
вперед 5
конец события
Запустим программу и попробуем нажать на клавиатуре клавишу "стрелка вверх". Черепаха продвинется вперед на 5 шагов.
Здравствуйте! Сегодня продолжаем работать со строками. Поговорим о сравнении срок. В этом году на одном из уроков мы подробно изучили кодовую таблицу ASCII. Мы знаем, что все символы хранятся в кодовых таблицах под определенными номерами. При сравнении символов происходит сравнение именно их кодов, чем больше код (порядковый номер в таблице), тем больше символ. На слайде ниже указано под какими кодами хранятся в разных кодовых таблицах арабские цифры и буквы латиницы.
Здравствуйте, мои дорогие! Сегодня мы продолжаем программировать в нашей любимой среде GameLogo. План на урок: 1. Просмотреть обучающее видео.
2. Апробировать новые команды КРУГ и ЗАКРАСЬ. 3. Реализовать в среде программирования предложенный в видео алгоритм создания простого орнамента.
ДЗ. Разработать АВТОРСКИЙ ОРНАМЕНТ, соответствующий следующим требованиям: - орнамент должен быть размещен по центру экрана (горизонталь и вертикаль)
Пример орнамента:
Для того, чтобы сдать практическую работу войдите на сайт под своим аккаунтом и добавьте к этому сообщению комментарий, поместив в Тему сообщения свои фамилию, имя и класс. В сам комментарий вставьте скопированный текст программы из среды GameLogo. Не пугайтесь, ваши сообщения не будут отображаться, пока все не сдадут работу. Внимание! Работы принимаю сегодня до 20.00! Удачи!
Тема "Преобразования «строка» – «число» и обратно" Сегодня изучаем две процедуры, которые важны при подготовке к ЕГЭ по информатике. Но сначала, пройдем тестирование на тему "Символьные строки". Регистрируйтесь ОБЯЗАТЕЛЬНО под своими именами (Петросян Артем, это для тебя...). Ссылка на тест
Преобразование числового значения осуществляется посредством процедуры Str:
Str(<числовая величина>, <строка>);
Пример программы:
program stroki;
uses crt;
var s: string;
c: integer;
begin
c:=1000;
str(c, s);
write(s); {s = ‘1000’}
end.
Сегодня закрепляем тему "Символьные строки" Задание на урок
«A»: Ввести с клавиатуры символьную строку и заменить в ней все буквы «а» на «б» и все буквы «б» на «а» (заглавные на заглавные, строчные на строчные).
«B»: Ввести с клавиатуры символьную строку и определить, сколько в ней слов. Словом считается последовательности непробельных символов, отделенная с двух сторон пробелами (или стоящая с краю строки). Слова могут быть разделены несколькими пробелами, в начале и в конце строки тоже могут быть пробелы.
Пример:
Введите строку: Вася пошел гулять
Найдено слов: 3
«C»: Ввести с клавиатуры символьную строку и найдите самое длинное слово и его длину. Словом считается последовательности непробельных символов, отделенная с двух сторон пробелами (или стоящая с краю строки). Слова могут быть разделены несколькими пробелами, в начале и в конце строки тоже могут быть пробелы.
Пример:
Введите строку: Вася пошел гулять
Самое длинное слово: гулять, длина 6
Текст программы вставляем в комментарий к этому сообщению, в теме указываем Фамилию и Имя.
Строка в Pascal – это последовательность символов заключенных в апострофы. Переменную строкового типа данных определяет слово string:
Var <имя_переменной>: string[<длина строки>];
Длина строки может и не указываться, тогда она будет равна максимально возможному количеству символов — 255.
Для вывода строки указывается строка без скобок и их содержащего:
write(sing);
Объединить строки можно при помощи операции +, а также воспользовавшись функцией Concat. Следующая программа сначала выводит строку, в которой объединены две другие, а затем выводит все три имеющиеся строковые переменные посредством функции Concat.
«A»: Заполнить массив случайными числами и отсортировать его. Ввести число X. Используя двоичный поиск, определить, есть ли в массиве число, равное X. Подсчитать количество сравнений. Пример:
Массив: 1 4 7 3 9 2 4 5 2
После сортировки: 1 2 2 3 4 4 5 7 9
Введите число X: 2
Число 2 найдено.
Количество сравнений: 2
Задачи на урок: «A»: Массив содержит четное количество элементов. Напишите программу, которая сортирует первую половину массива по возрастанию, а вторую – по убыванию. Каждый элемент должен остаться в «своей» половине.
«A»: Заполнить массив случайными числами и выполнить циклический сдвиг элементов массива вправо на 1 элемент. Пример:
Массив: 1 2 3 4 5 6
Результат: 6 1 2 3 4 5
«B»: Массив имеет четное число элементов. Заполнить массив случайными числами и выполнить реверс отдельно в первой половине и второй половине. Пример:
Массив: 1 2 3 4 5 6
Результат: 3 2 1 6 5 4
«C»: Заполнить массив случайными числами в интервале [-100,100] и переставить элементы так, чтобы все положительные элементы стояли в начала массива, а все отрицательные и нули – в конце. Вычислите количество положительных элементов. Пример:
«A»: Заполните массив случайными числами в интервале [0,100] и найдите среднее арифметическое его значений.
Пример:
Массив: 1 2 3 4 5
Среднее арифметическое 3.000
«B»: Заполните массив случайными числами в интервале [0,100] и подсчитайте отдельно среднее значение всех элементов, которые <50, и среднее значение всех элементов, которые ≥50.
Пример:
Массив: 3 2 52 4 60
Ср. арифм. элементов [0,50): 3.000
Ср. арифм. элементов [50,100]: 56.000
«C»: Заполните массив из N элементов случайными числами в интервале [1,N] так, чтобы в массив обязательно вошли все числа от 1 до N (постройте случайную перестановку).
Задания на урок: «A»: Напишите рекурсивную функцию, которая вычисляет НОД двух натуральных чисел, используя модифицированный алгоритм Евклида. Пример:
Введите два натуральных числа: 7006652 112307574
НОД(7006652,112307574)=1234
«B»: Напишите рекурсивную функцию, которая раскладывает число на простые сомножители. Пример:
Введите натуральное число: 378
378 = 2*3*3*3*7
«C»: Дано натуральное число N. Требуется получить и вывести на экран количество всех возможных различных способов представления этого числа в виде суммы натуральных чисел (то есть, 1 + 2 и 2 + 1 – это один и тот же способ разложения числа 3). Решите задачу с помощью рекурсивной функции. Пример:
Введите натуральное число: 4
Количество разложений: 4
«A»: Напишите логическую функцию, которая определяет, является ли переданное ей число совершенным, то есть, равно ли оно сумме своих делителей, меньших его самого.
Пример:
Введите натуральное число: 28
Число 28 совершенное
Пример:
Введите натуральное число: 29
Число 29 не совершенное
Задание на урок: «A»: Напишите процедуру, которая переставляет три переданные ей числа в порядке возрастания. Пример:
Введите три натуральных числа: 10 15 5
5 10 15
«B»: Напишите процедуру, которая сокращает дробь вида M/N. Числитель и знаменатель дроби передаются как изменяемые параметры. Пример:
Введите числитель и знаменатель дроби: 25 15
После сокращения: 5/3
«C»: Напишите процедуру, которая вычисляет наибольший общий делитель и наименьшее общее кратное двух натуральных чисел и возвращает их через изменяемые параметры. Пример:
Введите два натуральных числа: 10 15
НОД(10,15)=5
НОК(10,15)=30