Асистентът и вашият C#
В Модул 1 пишете програми на C#. Същият асистент, с който разговаряхте в урок 28, чете и пише код — и то доста добре, защото в обучението му има огромно количество програми. Днес го ползваме за три неща:
| Употреба | Какво искаме | Пример за реплика |
|---|---|---|
| Обяснение | да разберем чужд или непознат код | „Обясни ред по ред какво прави тази програма.“ |
| Генериране | решение на задача, която можем да опишем | „Напиши програма на C#, която…“ |
| Тестове | входове с очакван изход, с които да проверим | „Предложи пет тестови входа с очакван изход.“ |
Какво ускорява и къде подвежда
| Ускорява | Подвежда | |
|---|---|---|
| Код | шаблонен код, четене на вход, форматиране на изход | задача с особено условие, което не сте описали |
| Обяснение | позната конструкция — цикъл, метод, масив | твърди уверено какво извежда кодът, без да го е пуснал |
| Грешки | разчита съобщение на компилатора | грешка, която зависи от вход, който не е видял |
| Стил | имена, подредба, коментари | ползва конструкции, които още не сте учили (LINQ, ламбда) |
| Отговорност | — | винаги на човека |
Как се пита за код
Заданието за код има същите пет части като в урок 28, но с програмистка конкретика. Липсва ли някоя — асистентът ще япредположи, обикновено погрешно.
| Какво казвате | Защо е нужно | Пример |
|---|---|---|
| Език и среда | иначе може да даде Python или уеб приложение | C#, конзолно приложение, както в Модул 1 |
| Вход | откъде идват данните и в какъв вид | чете N от клавиатурата, после N цели числа, по едно на ред |
| Изход | точният вид на резултата | печата само числото, без текст |
| Ограничения | какво да не ползва и какви случаи да покрие | без LINQ и без методи, които не сме учили; да работи и при N = 0 |
| Пример | вход и очакван изход, по които се проверява | вход 10 → изход 18 |
| Слабо задание | Добро задание | |
|---|---|---|
| Текст | Напиши програма за сбор на кратните на 3 | C#, конзолно приложение. Чете N от клавиатурата и печата сбора на числата от 1 до N, кратни на 3. Само цикъл и if, без LINQ. Пример: 10 → 18. Обясни кода с коментари. |
| Какво ще предположи | език, откъде идва N, докъде се брои, какъв изход | нищо — всичко е зададено |
Ти си учител по C# в 11. клас. Напиши конзолна програма на C#:
- вход: цяло число N от клавиатурата
- изход: сборът на числата от 1 до N, които се делят на 3
- ползвай само цикъл for и if, без LINQ и без Math
- пример: вход 10 → изход 18; вход 2 → изход 0
Обясни всеки ред с кратък коментар.Как се проверява обяснение
Когато асистентът обяснява код, той може да сгреши точно както при факти — уверено. Обяснението се проверява по същия начин, както се проверява ученик: с конкретен въпрос, чийто отговор знаете.
- Пуснете кода сами във Visual Studio с прост вход и запишете изхода.
- Попитайте асистента: „Какво ще изведе програмата при вход X?“ — с вход, който вече сте пробвали.
- Сравнете. Съвпада ли? Ако не — кой греши: той или вие?
- Пробвайте вход с особеност — нула, число с нула по средата, отрицателно. Тук обясненията най-често се разминават с кода.
- Ако не разбирате ред от обяснението — питайте за него, не го приемайте.
Умението, което остава
Да прочетете чужд код и да прецените верен ли е. Точно това правехте в Модул 1, когато търсехте грешка в програма. Сега асистентът произвежда чужд код в големи количества — и умението поскъпва.
Какво трябва да запомниш
- Асистентът е полезен за три неща: обяснение на код, генериране на решение, предлагане на тестове.
- Заданието за код съдържа език и среда, вход, изход, ограничения и пример.
- Каквото не е казано, асистентът го предполага — обикновено погрешно.
- Обяснението се проверява с въпрос, чийто отговор знаете, защото сте пуснали кода.
- Най-опасен е кодът, който работи на примера и е грешен другаде.
- Разрешен е навсякъде — при условие, че обяснявате всеки ред.