Помощни алгоритми с аргументи. Алгоритми-процедури и алгоритми-функции в idol Аргумент на реални числа чертожник idol

Помощни алгоритми с аргументи.  Алгоритми-процедури и алгоритми-функции в idol Аргумент на реални числа чертожник idol
Помощни алгоритми с аргументи. Алгоритми-процедури и алгоритми-функции в idol Аргумент на реални числа чертожник idol

Задачите са предназначени за група от 10 души. Всяка карта съдържа 2 задачи с различна трудност.

Опция 1

1.

2.

Вариант 2

1. Напишете алгоритъм с аргументи за начертаване на фигурата, показана на фигурата. Размерите на фигурата, посочени на фигурата, действат като аргументи.

2.

Вариант 3

1. Напишете алгоритъм с аргументи за начертаване на фигурата, показана на фигурата. Размерите на фигурата, посочени на фигурата, действат като аргументи.

2. Начертайте формата, показана на фигурата, като използвате помощен алгоритъм с аргументи, за да нарисувате един елемент. Броят на повторенията на спиралните завои се задава от потребителя.

Вариант 4

1. Напишете алгоритъм с аргументи за начертаване на фигурата, показана на фигурата. Размерите на фигурата, посочени на фигурата, действат като аргументи.

2. Начертайте формата, показана на фигурата, като използвате помощен алгоритъм с аргументи, за да нарисувате един елемент. Броят на повторенията на спиралните завои се задава от потребителя.

Вариант 5

1. Напишете алгоритъм с аргументи за начертаване на фигурата, показана на фигурата. Размерите на фигурата, посочени на фигурата, действат като аргументи.

2. Начертайте формата, показана на фигурата, като използвате помощен алгоритъм с аргументи, за да нарисувате един елемент. Броят на повторенията на елементите и броят на повторенията на правоъгълниците в рамките на един елемент се задава от потребителя.

Вариант 6

1. Напишете алгоритъм с аргументи за начертаване на фигурата, показана на фигурата. Размерите на фигурата, посочени на фигурата, действат като аргументи.

2.

Вариант 7

1. Напишете алгоритъм с аргументи за начертаване на фигурата, показана на фигурата. Размерите на фигурата, посочени на фигурата, действат като аргументи.

2. Начертайте формата, показана на фигурата, като използвате помощен алгоритъм с аргументи, за да нарисувате един елемент. Броят на повторенията на елементите и броят на повторенията на правоъгълниците в рамките на един елемент се задава от потребителя.

Вариант 8

1. Напишете алгоритъм с аргументи за начертаване на фигурата, показана на фигурата. Размерите на фигурата, посочени на фигурата, действат като аргументи.

2. Начертайте формата, показана на фигурата, като използвате помощен алгоритъм с аргументи, за да нарисувате един елемент. Броят на повторенията на елементите и броят на повторенията на квадратите в рамките на един елемент се задава от потребителя.

Методика за изучаване на спомагателни алгоритми Основни цели:    Въвеждане на концепцията за спомагателен алгоритъм. Запознаване с изграждането на алгоритми по метода на последователното усъвършенстване. Да се ​​запознаят с правилата за писане и изпълнение на помощни алгоритми с аргументи. Основни понятия:  спомагателен алгоритъм; - основният алгоритъм;  извикване на спомагателен алгоритъм. В училищния курс по информатика идеята за структурно програмиране е залегнала в темата „Помощни алгоритми“. С право се счита за една от основните теми в раздела "Алгоритми", тъй като тук е отразена идеята за системен анализ, структуриране и проектиране. Систематичното и целенасочено прилагане на идеите на структурния подход (по-специално метода на последователното детайлизиране) е един от начините за рационално обучение на учениците на техниката на алгоритмизация. Полезен е и от гледна точка на обучението на учениците, тъй като развива способността да планират действията си при решаване на сложни проблеми, способността за общуване и колективна дейност. Способността за структуриране е основно свойство на човешкото мислене. Тя се крие в способността да се използва това, което вече е направено преди. Например, когато решаваме геометрична задача, ние използваме теореми, които са доказани по-рано. Декомпозиция на проблема, т.е. разделянето му на по-прости подзадачи е най-важният метод за алгоритмизиране и програмиране. Алгоритмите за решаване на такива подзадачи се наричат ​​спомагателни, а програмите, които ги реализират, се наричат ​​подпрограми (процедури). Спомагателният алгоритъм трябва: - да има име, което може да се използва за извикване от главния или друг спомагателен алгоритъм - да връща контрола на алгоритъма, от който е извикан - да е относително малък Основният алгоритъм определя реда, в който се извикват спомагателните алгоритми за решаване на проблема. alg ALG 1 стартира серия от команди основен алгоритъм ALG 2 извикване на команда серия от команди край alg ALG 2 стартира спомагателен алгоритъм серия от команди край ефективни техники за програмиране. Същността на този метод е, че всеки алгоритъм, като правило, не може да бъде незабавно посочен в командите, които са част от командната система на изпълнителя. Следователно е удобно да започнете да компилирате алгоритъма в по-"големи" команди, които не са включени в системата от команди на изпълнителя, но разбираеми за автора на алгоритъма. Тези „големи“ команди са написани като извиквания към спомагателни алгоритми, които след това се усъвършенстват, докато се състоят от команди, разбираеми за изпълнителя. Програмирането в този случай започва със запис на основната програма, от която се осъществява достъп до спомагателни алгоритми. Много е важно учениците ясно да си представят цялата сложна схема на действията на изпълнителя, когато се позовават на спомагателния алгоритъм с конкретни аргументи и се връщат към основния алгоритъм с получените резултати. Предимствата от използването на спомагателни алгоритми трябва да се демонстрират чрез примери, в които спомагателният алгоритъм се извиква многократно. Например, да създадете алгоритъм за рисуване на числото "1919" за художника "Drafter". Учениците вече знаят как да изпълняват такива задачи и съставянето на дълъг линеен алгоритъм няма да им е интересно. В тази ситуация може би самите ученици ще стигнат до идеята за спомагателен алгоритъм, като обърнат внимание на факта, че цифрите „1“ и „9“ присъстват два пъти на фигурата. Можете отделно да опишете алгоритмите за изчертаване на тези числа и след това да ги използвате, за да получите числото "1919". Способността за използване на спомагателни алгоритми трябва да се развие в учениците възможно най-рано, вече на примери. линейни алгоритми. На първия етап трябва да се разгледат спомагателни алгоритми без параметри. След това преминете към изучаване на алгоритми-функции и спомагателни алгоритми с параметри. Учениците трябва да имат ясно разбиране кои параметри на спомагателния алгоритъм са входни и кои изходни (резултатът на спомагателния алгоритъм). Студентите трябва да разбират разликата между формалните и действителните параметри. Примери за компилиране на спомагателни алгоритми на SHAYA. 1. Алгоритъм функция, която определя по-голямото от двете числа естествено число N алг цяло число факт (арг цяло число N) първоначално цяло число I, P P:= 1 nc за I от 1 до N P:= P * I kc стойност:= P край 3. Допълнителен алгоритъм, който изчислява хипотенузата на правоъгълен триъгълник по неговата крака хипотенуза (арг реф A, B, res реф C) е даден! A, B - необходими са крака! C = хипотенуза nach C:= SQRT(A ** 2 + B ** 2) con Примери за задачи за използване на спомагателни алгоритми 1. Изчислете a! +b! (използвайки спомагателен алгоритъм за изчисляване на факториела на естествено число) 2. Намерете най-голямото от числата A, B, C (използвайки спомагателен алгоритъм за избор на по-голямото от две числа) 3. Намиране на най-малкото от числата A, B, C, D (използвайки спомагателен алгоритъм за избор на по-малкото от две числа) 4. Два триъгълника са дадени от катетите си. Определете кой има по-голям периметър (използвайки помощен алгоритъм, който изчислява хипотенузата на правоъгълен триъгълник от неговите катети)

Опция 1

1.

2. Напишете програма за запълване на правоъгълник, чиито размери се въвеждат от потребителя от клавиатурата. Въвеждането на данни може да се извърши по всякакъв начин.

Вариант 2

1. Направете програма за рисуване на посочените клетки. Броят на клетките във всеки ред или колона се определя от променлива, чиято стойност се променя в програмата преди всеки цикъл. Първоначалната позиция на робота е отляво горен ъгълполета.

2. Напишете програма за попълване на квадрат, чиято дължина на страната се въвежда от потребителя от клавиатурата. Въвеждането на данни може да се извърши по всякакъв начин.

Вариант 3

1. Направете програма за рисуване на посочените клетки. Броят на клетките във всеки ред или колона се определя от променлива, чиято стойност се променя в програмата преди всеки цикъл. Първоначалната позиция на робота е в горния ляв ъгъл на полето.

2. Напишете програма за начертаване на фигура под формата на буквата "G". Вертикалните и хоризонталните размери се въвеждат от потребителя от клавиатурата. Въвеждането на данни може да се извърши по всякакъв начин.

Вариант 4

1. Направете програма за рисуване на посочените клетки. Броят на клетките във всеки ред или колона се определя от променлива, чиято стойност се променя в програмата преди всеки цикъл. Първоначалната позиция на робота е в горния ляв ъгъл на полето.

2. Напишете програма за начертаване на фигура под формата на буквата "Т". Вертикалните и хоризонталните размери се въвеждат от потребителя от клавиатурата. Въвеждането на данни може да се извърши по всякакъв начин.

Вариант 5

1. Направете програма за рисуване на посочените клетки. Броят на клетките във всеки ред или колона се определя от променлива, чиято стойност се променя в програмата преди всеки цикъл. Първоначалната позиция на робота е в горния ляв ъгъл на полето.

2. Напишете програма за начертаване на фигура под формата на буквата "P". Вертикалните и хоризонталните размери се въвеждат от потребителя от клавиатурата. Въвеждането на данни може да се извърши по всякакъв начин.

Вариант 6

1. Направете програма за рисуване на посочените клетки. Броят на клетките във всеки ред или колона се определя от променлива, чиято стойност се променя в програмата преди всеки цикъл. Първоначалната позиция на робота е в горния ляв ъгъл на полето.

2. Напишете програма за начертаване на фигура под формата на буквата "W". Вертикалните и хоризонталните размери се въвеждат от потребителя от клавиатурата. Въвеждането на данни може да се извърши по всякакъв начин.

Вариант 7

1. Направете програма за рисуване на посочените клетки. Броят на клетките във всеки ред или колона се определя от променлива, чиято стойност се променя в програмата преди всеки цикъл. Първоначалната позиция на робота е в горния ляв ъгъл на полето.

2. Напишете програма за начертаване на фигура под формата на буквата "H". Вертикалните и хоризонталните размери се въвеждат от потребителя от клавиатурата. Въвеждането на данни може да се извърши по всякакъв начин.

Вариант 8

1. Направете програма за рисуване на посочените клетки. Броят на клетките във всеки ред или колона се определя от променлива, чиято стойност се променя в програмата преди всеки цикъл. Първоначалната позиция на робота е в горния ляв ъгъл на полето.

2. Напишете програма за рисуване на фигура под формата на кръст. Вертикалните и хоризонталните размери се въвеждат от потребителя от клавиатурата. Въвеждането на данни може да се извърши по всякакъв начин.

Вариант 9

1. Направете програма за рисуване на посочените клетки. Броят на клетките във всеки ред или колона се определя от променлива, чиято стойност се променя в програмата преди всеки цикъл. Първоначалната позиция на робота е в горния ляв ъгъл на полето.

2. Напишете програма за начертаване на фигура под формата на диагонален кръст. Вертикалните и хоризонталните размери се въвеждат от потребителя от клавиатурата. Въвеждането на данни може да се извърши по всякакъв начин.

Вариант 10

1. Направете програма за рисуване на посочените клетки. Броят на клетките във всеки ред или колона се определя от променлива, чиято стойност се променя в програмата преди всеки цикъл. Първоначалната позиция на робота е в горния ляв ъгъл на полето.


Команди за абсолютно и относително отместване (x и y се броят от началото на координатите 0,0) преместване към точка (x, y) преместване по вектор (a, b) (a и b се броят от началото на вектора) абсолютно команда за преместване относително преместване a към x y




Тип стойност arg - декларация на стойностите на аргумента (входни или изходни данни) - показва типа на променливите, т.е. как се използва стойността в алгоритъма 6.9, 6.0, 7.9, 3.0) int - описание на стойност на цяло число тип (Пример: 2, 0, 8, 9).


Извикване на VA с аргументи Точно име на VA (числови стойности на аргументите според техните типове, разделени със запетаи в същия ред като в заглавката на VA) Пример. Заглавие: alg Ex 1(arg thing a, b, s, integer, k) Извиквания: Ex 1(0, 4, 8.2, 8, 0) ; Пример 1(4, 2, 5, 3, 9); Pr 1(6, 7, 4.5, 0, 7)


Пример за използване на VA с аргументи за изпълнителя Drawer alg detail start ro(7, 2, 3); ro(7, 3, 2); po(7, 4, 1) con algro (arg x, y, a) начало cm до точка (x, y); спуснете писалката cm върху вектора (2 * a, a); cm на вектор (-2*a, a) cm на вектор (-2*a, -a); виж вектор(2*a, -a) повдигане на писалка con Основен алгоритъм Спомагателен алгоритъм Извикване на VA Заглавие VA


Използване на VA с аргументи в конструирането на изображение Използване на метода за последователно усъвършенстване и анализирано в дадено изображениеможете да изберете стандартен детайл - ромб, началото на неговия чертеж, параметри и количество. Оттук следва, че за да се получи тази фигура, е необходимо да се запишат четири извиквания на VA в основния алгоритъм и едно VA, за да се начертае ромб с три параметъра x, y, a ro(0, 7, 3); ro(4, 7, 1); ro(9, 4, 2) con algro (arg x, y, a) начало cm до точка (x, y); спуснете писалката cm върху вектора (2 * a, a); cm на вектор (2*a, -a) cm на вектор (-2*a, -a); cm на вектор(-2*a, a) повдигане на писалка кон

За да начертаем два квадрата с различни страни, да речем 2 и 3, трябваше да напишем два различни помощни алгоритъма. Но какво ще стане, ако трябва да нарисувате много различни квадрати с различна дължина на страните? Не пишете свой собствен алгоритъм за всеки! Оказва се, че алгоритмите могат да имат аргументи, възможно е да се състави алгоритъм за начертаване на квадрат с произволна дължина на страната.

Вече се запознахте с понятието аргумент в математиката. В математиката аргументът на функцията е независима променлива, от чиито стойности зависят стойностите на функцията.
Например функцията f(x) = x 2 +1 има един аргумент. За различни стойности на аргумента ще получим различни значенияфункции - за x=2 получаваме f(x)=5, за x=3 получаваме f(x)=10 и т.н.

Необходимият спомагателен алгоритъм (който чертае квадрат с определена дължина) може да бъде написан по следния начин:

алг квадрат (арг w)
рано
. спуснете писалката
. изместване по вектор(0,а)
. изместване по вектор(a,0)
. изместване по вектор(0,-а)
. изместване по вектор(-a,0)
. повдигнете писалката
кон

Нотацията "alg square(arg w)" означава, че алгоритъмът "square" има един аргумент (arg) "a", който може да бъде произволно реално (реално) число.
За да извикате този алгоритъм, трябва да напишете например "квадрат (2)" - получаваме квадрат със страна 2 или "квадрат (3)" - получаваме квадрат със страна 3 и т.н. .
Някаква конкретна стойност "a" ще получи само докато програмата работи по време на съответния спомагателен алгоритъм. И навсякъде вместо "а" това число ще бъде заменено с компютъра.

Програмата за рисуване на тази картина може да бъде така:

използвайте чекмеджето
алг квадрати
рано
. придвижете се до точка(1,1)
. квадрат (2)
. придвижете се до точка(4,1)
. квадрат (3)
. придвижете се до точка(8,1)
. квадрат (4)
. придвижете се до точка(13,1)
. квадрат (5)
. придвижете се до точка(0,0)
кон
алг квадрат (арг w)
рано
. спуснете писалката
. изместване по вектор(0,а)
. изместване по вектор(a,0)
. изместване по вектор(0,-а)
. изместване по вектор(-a,0)
. повдигнете писалката
кон

Нека научим чертожника на нови команди. Нека една от командите се нарича " линия (арг th x1,y1,x2,y2)» – за начертаване на линия от точка (x1,y1) до точка (x2,y2).


рано
. придвижете се до точка(x1,y1)
. спуснете писалката
. придвижете се до точка(x2,y2)
. повдигнете писалката
кон

Нека втората команда се нарича " правоъгълник (arg th x1,y1,x2,y2)', за да начертаете правоъгълник. Точката (x1,y1) е една точка от AC диагонала на правоъгълника, точката (x2,y2) е срещуположната. Преди да напишете алгоритъма, трябва да разберете какви са координатите на другите две точки.

Помощен алгоритъм може да изглежда така:


рано
. придвижете се до точка(x1,y1)
. спуснете писалката
. придвижете се до точка(x2,y1)
. придвижете се до точка(x2,y2)
. придвижете се до точка(x1,y2)
. придвижете се до точка(x1,y1)
. повдигнете писалката
кон

Сега с помощта на тези команди ще начертаем къща:


използвайте чекмеджето
алг къща
рано
. правоъгълник (2,1,8,5)
. правоъгълник (3,2,5,4)
. правоъгълник (6,1,7,4)
. линия (1,4,5,8)
. линия (5,8,9,4)
кон
alg линия (arg th x1, y1, x2, y2)
рано
. придвижете се до точка(x1,y1)
. спуснете писалката
. придвижете се до точка(x2,y2)
. повдигнете писалката
кон
alg правоъгълник (arg th x1, y1, x2, y2)
рано
. придвижете се до точка(x1,y1)
. спуснете писалката
. придвижете се до точка(x2,y1)
. придвижете се до точка(x2,y2)
. придвижете се до точка(x1,y2)
. придвижете се до точка(x1,y1)
. повдигнете писалката
кон

Забележка: разбира се, заедно с тези команди, можем да използваме стандартните команди на чертожника (преместване в точка, преместване във вектор ...).

Задача 1. Използвайки алгоритмите за помощна линия и правоъгълник, създайте чертеж.

Задача 2. Опитайте се да пренапишете алгоритмите за линия и правоъгълник, така че чертането да се извършва от командата shift vector.

Задача 3. Напишете алгоритъм "правоъгълник (arg w x, y, a, b)", който чертае правоъгълник с дължини на страните a и b, започващ от и завършващ в точката (x, y).

Задача 4. Начертайте сами това, което чертожникът ще нарисува, като изпълните алгоритъма:

използвайте чекмеджето
alg спирала
рано
. придвижете се до точка(3,3)
. спуснете писалката
. намотка (1); намотка (3); намотка (5); намотка (7); бобина (9)
. повдигнете писалката
кон
alg turn(arg w)
рано
. изместване по вектор(a, 0)
. изместване по вектор(0, -а)
. изместване по вектор(-a-1.0)
. изместване по вектор(0, a+1)
кон