Differences between revisions 4 and 5
Revision 4 as of 2020-09-09 12:04:28
Size: 2050
Editor: FrBrGeorge
Comment:
Revision 5 as of 2020-09-10 10:30:29
Size: 7095
Editor: hbd
Comment: Добавлены задачи
Deletions are marked like this. Additions are marked like this.
Line 13: Line 13:
  * <!> задача на исследование (например, как ввести число, строку и число)   * <!> Задача_1 на эксперименты с вводом (см. ниже раздел с задачами)
Line 21: Line 21:
 * <!> Простая задача, файлы с тестовыми входными и с тестовыми выходными данными, написать решение и проверить правильность. Составить сценарий.
 * <!> То же, что и выше, но вместо файла со входными данными написать генератор. Составить сценарий.
 * <!> Задача_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
 * в каком из вариантов (а, б) сценарий может "обнаружить" ошибку в программе-искателе максимума, притом что программа правильная?
Line 24: Line 61:
 * добиться работоспособности сценариев дома  * добиться работоспособности сценариев (для задач 2 и 3) дома

01. Командная строка и объекты

  • (с прошлого раза) {i} Использование git.cs.msu.ru/prac

  • (с прошлого раза) {i} Использование XMPP:stud.cs.msu.ru

  • {i} Регистрация на Ejudge (148 турнир)

    • Правила проверки Д/З в EJudge
  • Вывод и ввод данных в Python:
    • print()

    • input() и eval(input())

      • Что такое eval()

      • Конструкции вида a, b, c = eval(input())

    • {i} Простейшая программа, которая вводит и выводит

    • <!> Задача_1 на эксперименты с вводом (см. ниже раздел с задачами)

  • Самостоятельное тестирование
    • {i} Перенаправление ввода-вывода с помощью "<" и ">"

    • {i} Перенаправление ввода и вывода с помощью "|"

    • Понятие о stdout vs stderr

    • Понятие о сценарии ( (!) в windows — .cmd)

    • {i} Сравнение двух файлов с помощью diff

  • <!> Задача_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) дома

LecturesCMC/PythonIntro2020/Prac/01_Commandline (last edited 2020-10-01 21:33:40 by FrBrGeorge)