526
Комментарий:
|
7095
Добавлены задачи
|
Удаления помечены так. | Добавления помечены так. |
Строка 2: | Строка 2: |
* (с прошлого раза) (i) Использование `git.cs.msu.ru`/`prac` * [[/RepoStruct|Структура git-репозитория для практикума]] * (с прошлого раза) (i) Использование `XMPP:stud.cs.msu.ru` * (i) Регистрация на [[http://ejudge.cs.msu.ru/register?action=207&contest_id=148|Ejudge]] (148 турнир) |
* (с прошлого раза) {i} Использование `git.cs.msu.ru`/`prac` * [[../RepoStruct|Структура git-репозитория для практикума]] * (с прошлого раза) {i} Использование `XMPP:stud.cs.msu.ru` * {i} Регистрация на [[http://ejudge.cs.msu.ru/register?action=207&contest_id=148|Ejudge]] (148 турнир) |
Строка 7: | Строка 7: |
* '''TODO''' |
* Вывод и ввод данных в Python: * `print()` * `input()` и `eval(input())` * Что такое `eval()` * Конструкции вида `a, b, c = eval(input())` * {i} Простейшая программа, которая вводит и выводит * <!> Задача_1 на эксперименты с вводом (см. ниже раздел с задачами) * Самостоятельное тестирование * {i} Перенаправление ввода-вывода с помощью "`<`" и "`>`" * {i} Перенаправление ввода и вывода с помощью "`|`" * Понятие о `stdout` vs `stderr` * Понятие о сценарии ( (!) в windows — .cmd) * {i} Сравнение двух файлов с помощью `diff` * (!) если у вас windows: [[py3doc:difflib.html#a-command-line-interface-to-difflib|имеется утилита на Python]] * <!> Задача_2 на автоматическое тестирование, с ручным заданием тестовых данных (см. ниже раздел с задачами). * <!> Задача_3 на автоматическое тестирование, с автогенерацией тестовых данных (см. ниже раздел с задачами). == Задачи == Задача_1 на эксперименты с вводом: * а) введите значения для переменных x, y, z так, чтобы x стало числом, y - строкой, z - числом * б) введите значения для переменных x, y так, что в стандартном вводе для х задается арифметическое выражение, а для у - строковое выражение (конкатенация константных строк) * в) введите значения для переменных х, у, z так, чтобы х стало числом, у - списком из трех чисел, z - числом Задача_2 на автоматическое тестирование, с ручным заданием тестовых данных: * напишите программу, которая: * получает через стандартный вход (stdin) последовательность целых чисел в виде списка, например "[1,2,3]" * сортирует эти числа по возрастанию * выводит результат в стандартный выход (stdout) в виде списка * составьте вручную 3 тестовых примера, содержащих: * текстовый файл с входными данными * текстовый файл с эталонными выходными данными (соответствующими входным, в правильном формате) * напишите тестовый сценарий, который: * получает на вход (параметры командной строки) имя файла с входными данными и имя файла с эталонными выходными данными * запускает программу, подает ей на вход входные данные, направляет выходные данные во временный файл, и сравнивает полученные выходные данные с эталонными; в сценарии используйте перенаправление ввода и вывода * попробуйте, как работает сценарий с "ошибочной" программой, которая выдает на выход числа в том же порядке, в котором получила на вход. Каким должен быть тестовый пример, чтобы сценарий при этом не обнаружил ошибку? Задача_3 на автоматическое тестирование, с автогенерацией тестовых данных: * напишите программу, которая ищет наибольшее из поданных на вход целых чисел и выводит его; ввод и вывод организован аналогично описанной выше программе сортировки, с тем отличием что выводится единственное целое число. * напишите программу, которая * получает через стандартный вход целое число * генерирует набор входных данных для программы-искателя максимума (10 случайных целых чисел от 1 до 100, кроме одного из чисел, равного полученному на вход) * выдает сгенерированный набор в стандартный выход в виде списка * напишите сценарий, который: * получает на вход (параметр командной строки) целое число * запускает программу-генератор и программу-искатель максимума в конвейере через "|", при этом программе-генератору на вход подает полученное число * направляет выход программы-искателя максимума во временный файл * сравнивает выход программы-искателя максимума с эталоном (для этого генерирует временный файл, содержащий полученное на вход число) * попробуйте запустить сценарий, передавая ему: * а) число, большее чем 100 * б) число, меньшее чем 100 * в каком из вариантов (а, б) сценарий может "обнаружить" ошибку в программе-искателе максимума, притом что программа правильная? == Д/З == * добиться работоспособности сценариев (для задач 2 и 3) дома |
01. Командная строка и объекты
(с прошлого раза) Использование git.cs.msu.ru/prac
(с прошлого раза) Использование XMPP:stud.cs.msu.ru
Регистрация на Ejudge (148 турнир)
- Правила проверки Д/З в EJudge
- Вывод и ввод данных в Python:
print()
input() и eval(input())
Что такое eval()
Конструкции вида a, b, c = eval(input())
Простейшая программа, которая вводит и выводит
Задача_1 на эксперименты с вводом (см. ниже раздел с задачами)
- Самостоятельное тестирование
Перенаправление ввода-вывода с помощью "<" и ">"
Перенаправление ввода и вывода с помощью "|"
Понятие о stdout vs stderr
Понятие о сценарии ( в windows — .cmd)
Сравнение двух файлов с помощью diff
если у вас windows: имеется утилита на Python
Задача_2 на автоматическое тестирование, с ручным заданием тестовых данных (см. ниже раздел с задачами).
Задача_3 на автоматическое тестирование, с автогенерацией тестовых данных (см. ниже раздел с задачами).
Задачи
Задача_1 на эксперименты с вводом:
- а) введите значения для переменных x, y, z так, чтобы x стало числом, y - строкой, z - числом
- б) введите значения для переменных x, y так, что в стандартном вводе для х задается арифметическое выражение, а для у - строковое выражение (конкатенация константных строк)
- в) введите значения для переменных х, у, z так, чтобы х стало числом, у - списком из трех чисел, z - числом
Задача_2 на автоматическое тестирование, с ручным заданием тестовых данных:
- напишите программу, которая:
- получает через стандартный вход (stdin) последовательность целых чисел в виде списка, например "[1,2,3]"
- сортирует эти числа по возрастанию
- выводит результат в стандартный выход (stdout) в виде списка
- составьте вручную 3 тестовых примера, содержащих:
- текстовый файл с входными данными
- текстовый файл с эталонными выходными данными (соответствующими входным, в правильном формате)
- напишите тестовый сценарий, который:
- получает на вход (параметры командной строки) имя файла с входными данными и имя файла с эталонными выходными данными
- запускает программу, подает ей на вход входные данные, направляет выходные данные во временный файл, и сравнивает полученные выходные данные с эталонными; в сценарии используйте перенаправление ввода и вывода
- попробуйте, как работает сценарий с "ошибочной" программой, которая выдает на выход числа в том же порядке, в котором получила на вход. Каким должен быть тестовый пример, чтобы сценарий при этом не обнаружил ошибку?
Задача_3 на автоматическое тестирование, с автогенерацией тестовых данных:
- напишите программу, которая ищет наибольшее из поданных на вход целых чисел и выводит его; ввод и вывод организован аналогично описанной выше программе сортировки, с тем отличием что выводится единственное целое число.
- напишите программу, которая
- получает через стандартный вход целое число
- генерирует набор входных данных для программы-искателя максимума (10 случайных целых чисел от 1 до 100, кроме одного из чисел, равного полученному на вход)
- выдает сгенерированный набор в стандартный выход в виде списка
- напишите сценарий, который:
- получает на вход (параметр командной строки) целое число
- запускает программу-генератор и программу-искатель максимума в конвейере через "|", при этом программе-генератору на вход подает полученное число
- направляет выход программы-искателя максимума во временный файл
- сравнивает выход программы-искателя максимума с эталоном (для этого генерирует временный файл, содержащий полученное на вход число)
- попробуйте запустить сценарий, передавая ему:
- а) число, большее чем 100
- б) число, меньшее чем 100
- в каком из вариантов (а, б) сценарий может "обнаружить" ошибку в программе-искателе максимума, притом что программа правильная?
Д/З
- добиться работоспособности сценариев (для задач 2 и 3) дома