русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Ход работы


Дата добавления: 2013-12-23; просмотров: 882; Нарушение авторских прав


Done

Do

Done

Do

Done

Do

Done

Do

Done

Do

Необходимые сведения

Лабораторная работа №14. Циклические конструкции

 

Цель работы: освоить использование операторов цикла.

 

Оператор for работает немного не так, как в обычных языках программирования. Вместо того, чтобы организовывать увеличение или уменьшение на единицу значения некоторой переменной при каждой итерации, он при каждом проходе цикла присваивает переменной очередное значение из заданного списка слов. Синтаксис:

for parameter [in value]

commands

Если часть in value присутствует, то parameter при каждой итерации цикла принимает значение из списка value. В качестве такого списка могут выступать:

— текстовая строка значений с разделителями;

— подстановки значений параметров. Пусть до цикла было выполнено присваивание a="One Two Three", тогда при указании in $a тело цикла выполнится три раза со значениями parameter соответственно One, Two, Three;

— шаблоны имен файлов. Например, при указании in ~/sources/*.c тело цикла выполнится для каждого файла с расширением *.c каталога sourсe домашнего каталога.

Если часть in value пропущена, то тело цикла выполняется один раз для каждого позиционного параметра. Правила построения списков команд commands такие же, как и в операторе if.

Пример:

for a in 1 2 3 4

do

mkdir Temp_${a}

done

В приведенном примере создаются каталоги Temp_1,…,Temp_4

Пример:

for a in *.txt

do

cp ${a} ./Backup

echo “File $a copied”

done

В примере происходит резервное копирование txt-файлов и вывод соответствующих сообщений.

В Linux имеется команда seq, которая выводит последовательность чисел. Синтаксис:



seq начальное_число шаг конечное_число.

С помощью этой команды можно заставить for в сценариях работать точно так же, как аналогичный оператор работает в обычных языках программирования. Пример:

for a in $(seq 1 1 10)

do

cat file_$a

done

На экран выводится содержимое десяти файлов: file_l,…, file_10.

Вместо команды seq можно воспользоваться так называемым C-подобным синтаксисом оператора for:

for (( expr1 ; expr2 ; expr3 ))

commands

Сначала вычисляется арифметическое выражение expr1. Тело цикла будет повторяться до тех пор, пока код завершения арифметического выражения expr2 является нулевым. Если expr2 возвращает ненулевой код, вычисляется expr3. Если какое-либо из выражений expr1, expr2, expr3 опущено, то считается, что код завершения этого выражения равен 1. Пример:

for (( i=1 ; i<=10 ; i++ ))

do

cat file_$i

done

Примечание. Внутри двойных круглых скобок нет необходимости перед именем числовой переменной указывать символ $. В expr1 и expr2 можно указывать несколько действий через символ , (запятая). Кроме того, в последних версиях bash при использовании C-синтаксиса жестко не регламентируется использование пробелов, поэтому часть for в предыдущем примере можно записать в виде for ((i=1;i<=max;i++)).

Оператор while работает подобно if , только выполнение операторов из списка циклически продолжается до тех пор, пока верно условие, и прерывается, если условие не верно. Синтаксис:

while условие

команды

Пример:

while [ -d mydirectory ]

do

ls -1 mydirectory >> logfile

echo -- SEPARATOR —- >> logfile

sleep 60

done

Программа будет протоколировать содержание каталога mydirectory ежеминутно до тех пор, пока каталог существует.

Для работы с числовыми значениями можно использовать C-подобный синтаксис оператора while:

while ((условие))

команды

Пример:

((a=1,max=10))

while ((a<=max)) do

echo -n "$a "

((a+=1))

done

Оператор until имеет структуру, аналогичную оператору while:

until условие

команды

Оператор выполняет условие и, если оно возвращает ненулевой код возврата, то выполняются команды. Процедура повторяется до тех пор, пока код завершения условия не станет нулевым. C-подобный синтаксис команды until аналогичен синтаксису оператора while.

В циклах сценария можно использовать команды break и continue. Первая осуществляет выход из текущего цикла, вторая начинает новую итерацию цикла.

 

1. Создайте сценарий myscript11, выполняющий создание резервных копий файлов текущей директории. Имена копий получаются добавлением .bak к имени файла. Копии помещаются в подкаталог BAK текущего каталога (осуществите в сценарии проверку существования такого каталога и при необходимости укажите команду его создания).

2. Создайте сценарий myscript12, выполняющий подсчет количества файлов в текущей директории без использования команды wc.

3. Создайте сценарий myscript13, выводящий на экран числа от 1 до 50.

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

5. Используя оператор while, создайте сценарий myscript15, выполняющий действия, аналогичные заданию 3.

6. Используя оператор until, создайте сценарий myscript16, выполняющий действия, аналогичные заданию 3.

7. Создайте сценарий myscript17, запрашивающий двузначное число — количество часов. В зависимости от введенного числа, сценарий должен выдавать сообщения:

«Morning», если введено 4-11;

«Afternoon», если введено 12-15;

«Evening», если введено 16-22;

«Night», если введено 0-3, 23, 24.

Если введено число вне диапазона 0…24, выдать предупреждение и снова запросить число.

8. Изменить сценарий предыдущего задания, добавив проверку ввода нечисловых значений: если было введено не число, выдать предупреждение и выполнить повторный запрос. (Указание. Проверку можно осуществить, например, попыткой выполнения арифметической операции. Если операция будет производиться над нечисловым значением, то код ее завершения будет ненулевым. Системные сообщения об ошибках можно подавить перенаправлением потока ошибок на фиктивное устройство.)

 



<== предыдущая лекция | следующая лекция ==>
Ход работы | Ход работы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.