Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Готовые отчеты / ОСиС. Лабораторная работа 4

.pdf
Скачиваний:
13
Добавлен:
21.11.2020
Размер:
510.57 Кб
Скачать

Федеральное агентство связи ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

Факультет инфокоммуникационных сетей и систем Кафедра программной инженерии и вычислительной техники

ЛАБОРАТОРНАЯ РАБОТА №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