Differences between revisions 6 and 7
Revision 6 as of 2020-10-01 21:32:57
Size: 7098
Editor: FrBrGeorge
Comment:
Revision 7 as of 2020-10-01 21:33:40
Size: 7097
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= 09.10. Командная строка и объекты = = 09.10 Командная строка и объекты =

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

  • (с прошлого раза) {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)