Готовые отчеты / ОСиС. Лабораторная работа 4
.pdfФедеральное агентство связи ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
Факультет инфокоммуникационных сетей и систем Кафедра программной инженерии и вычислительной техники
ЛАБОРАТОРНАЯ РАБОТА №4 по дисциплине «Операционные системы и сети»
на тему «Программирование на PowerShell Windows»
Выполнил: студент 3-го курса дневного отделения группы ИКПИ-85
Коваленко Леонид Александрович Преподаватель:
доцент кафедры ПИиВТ Дагаев Александр Владимирович
Санкт-Петербург 2020
Цель работы
Ознакомиться с базовыми возможностями powershell-скриптов. Постановка задачи
1.Написать простой скрипт для вывода текущей даты, числа папок и числа файлов в текущей директории и продемонстрировать его работу.
2.Написать скрипт для вычисления факториала вводимого числа и продемонстрировать его работу.
3.Написать скрипт для вычисления n-го числа Фибоначчи, где n — число, вводимое с клавиатуры и продемонстрировать его работу.
4.Написать скрипт для проверки вводимого числа на простоту и продемонстрировать его работу.
Ход работы
Работа выполняется в операционной системе MS Windows 10 Pro.
Для того, чтобы можно было выполнять powershell-скрипты, нужно установить политику выполнения в Unrestricted, предварительно запустив PowerShell от имени администратора (рис. 1).
Рисунок 1 — Установка политики выполнения в Unrestricted Напишем простой скрипт (табл. 1) для вывода текущей даты, числа
папок и числа файлов в текущей директории.
Таблица 1 — Скрипт для вывода даты, числа папок и числа файлов
echo "Текущая дата: $(Get-Date -UFormat '%A, %T %d.%m.%Y')"
echo "Количество папок в текущей директории: $((ls -Force | Where-Object {$_. Mode -AND $_.Mode[0] -eq 'd'} | measure).Count)"
echo "Количество файлов в текущей директории: $((ls -Force | Where-Object {$_
.Mode -AND $_.Mode[0] -ne 'd'} | measure).Count)"
echo "Количество PS1 файлов в текущей директории: $((ls -Force | Where-Object {$_.Mode -AND $_.Mode[0] -ne 'd' -AND $_.Name -like '*.ps1'} | measure).Count )"
echo "Количество TXT файлов в текущей директории: $((ls -Force | Where-Object {$_.Mode -AND $_.Mode[0] -ne 'd' -AND $_.Name -like '*.txt'} | measure).Count )"
2
Результат запуска приведен на рис. 2.
Рисунок 2 — Вывод даты, числа папок и числа файлов в текущей директории Напишем скрипт (табл. 2) для вычисления факториала вводимого
числа.
Таблица 2 — Скрипт для вычисления факториала вводимого числа
# Вычисление факториала итеративно
$n = [int] (Read-Host "Вычисление факториала. Введите N (N>=0)") $s = 1
for ($i = 1; $i -le $n; ++$i) { $s = $s * $i;
}
echo "Fact($n) = $s"
Результат запуска приведен на рис. 3.
Рисунок 3 — Вычисление факториала
Напишем скрипт (табл. 3) для вычисления n-го числа Фибоначчи, где n
— число, вводимое с клавиатуры.
3
Таблица 3 — Скрипт для вычисления n-го числа Фибоначчи
# Вычисление n-го числа Фибоначчи
$n = [int] (Read-Host "Нахождение N-го числа Фибоначчи. Введите N (N>=0)") $a = 0
$b = 1
for ($i = 1; $i -le $n; ++$i) { $b += $a
$a = $b - $a
}
echo "Fib($n) = $a"
Результат запуска приведен на рис. 4.
Рисунок 4 — Вычисление n-го числа Фибоначчи
Напишем скрипт (табл. 4) для проверки вводимого числа на простоту. Таблица 4 — Скрипт для проверки вводимого числа на простоту
# Функция проверки числа на простоту function isPrime($n) {
if ($n -lt 4) { # если n < 4 return $n -gt 1
}
# если n % 2 == 0 || n % 3 == 0
if ((($n % 2) -eq 0) -OR (($n % 3) -eq 0)) { return $false
}
$sqrt_n = [math]::Sqrt($n) echo $sqrt_n
for ($i = 5; $i -le $sqrt_n; $i += 6) {
# если n % i == 0 || n % (i + 2) == 0
if ((($n % $i) -eq 0) -OR (($n % ($i + 2)) -eq 0)) { return $false
}
}
return $true
}
$n = [int] (Read-Host "Проверка числа на простоту. Введите N (N>=1)")
echo $(if ($(isPrime($n)) -eq $true) {"Число простое"} else {"Число не просто е"})
Результат запуска приведен на рис. 5, 6.
4
Рисунок 5 — Проверка вводимого числа на простоту
Рисунок 6 — Проверка вводимого числа на простоту (2) Заключение
В результате выполнения лабораторной работы мы ознакомились с базовыми возможностями powershell-скриптов, рассмотрели конструкции
if..else, for, Read-Host и механизм функций.
5