[ИУ9] Основы информатики

Лабораторная работа №7

Цель работы

Получение навыков написания сценариев на «скриптовых» языках.

Скриптовый язык, на котором будет выполняться лабораторная работа, студентом выбирается самостоятельно. Примеры возможных скриптовых языков: JavaScipt (Node.js), Python, Ruby, Lua, Perl, Racket и т.д.

Задания

При демонстрации результатов работы преподавателю все скрипты должны запускаться командой, содержащей только имя скрипта (т.е. без указания в командной строке пути к скрипту и интерпретатора), то есть так:

./myscript arg1 arg2

а не так:

bash ./myscript.sh arg1 arg2

  1. Ha Bash напишите скрипт, который будет запускать долго выполняющуюся программу (напишите скрипт, имитирующий такую программу, скажем, просто ожидающий несколько минут и завершающийся) строго каждые t минут, но так, чтобы одновременно выполнялось не более 1 экземпляра этой программы. Путь к программе и периодичность запуска передавайте в виде аргументов командной строки. Вывод и ошибки запускаемой программы направляйте в файлы, имена этих файлов формируйте автоматически. Запускаемую программу запрещается убивать.

  2. Ha Bash напишите скрипт, который принимает путь к проекту на языке C и выводит общее число непустых строк во всех файлах .c и .h указанного проекта. Предусмотрите рекурсивный обход вложенных папок.

  3. Ha выбранном скриптовом языке напишите программу, которая выводит в консоль указанное число строк заданной длины, состоящих из латинских букв, цифр и печатных знаков, присутствующих на клавиатуре. Длину строки и число строк передавайте как аргументы командой строки. Для каких целей можно использовать такую программу? Оформите логику приложения в виде отдельной функции и поместите её в отдельный модуль.

  4. Задание повышенной сложности. Ha выбранном скриптовом языке напишите функцию, которая принимает произвольную чистую функцию с переменным числом аргументов и возвращает мемоизованную версию этой функции. Для запоминания результатов вычислений выберете подходящую структуру данных из числа встроенных классов выбранного языка.