Файл: Электронное пособие Scilab.pdf

Добавлен: 15.11.2018

Просмотров: 12849

Скачиваний: 228

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

66 

 

 
switch
 параметр 
case 
Зачение_1 then операторы1 
case
 Значение_2 then операторы2 
… 
еlse
 операторы 
end 

 

Если  выражение  после  заголовка  switch  имеет  значение  одного  из 

выражений  Значение...,  то  выполняется  блок  операторов  case,  в  противном 
случае  —  список  инструкций  после  оператора  else.  При  выполнении  блока 
case  исполняются  те  списки  инструкций,  для  которых  Значение  совпадает  с 
параметром.  Обратите  внимание  на  то,  что  Значение  может  быть  числом, 
константой,  переменной,  вектором  ячеек  или  даже  строчной  переменной. 
Поясним использования оператора перебора switch следующим примером:  



.

),

1

/(

1

;

5

,

4

,

3

),

(

;

2

),

10

(

;

1

,

2

случае

впротивном

x

y

n

если

nx

xSin

y

n

если

x

x

y

n

если

x

y

t

 

 
Sci-функция, реализующая множественное разветвление, приведена на 

рис.1.3.4-8,  а  обращение  к  ней  при  исходных  данных,  позволяющих 
проверить каждую ветвь разветвления, показано на рис.1.3.4-9. 

 

 

Рис. 1.3.4-8. Функция, реализующая множественное разветвление 

 


background image

67 

 

 

 

Рис. 1.3.4-9. Обращения к функции multifunc() 

 

  

Оператор регулярного цикла - for...end

Оператор цикла типа 

for...end  обычно  используются  для  организации  вычислений  с  заданным 
числом  повторений  циклов.  Конструкция  такого  цикла  имеет  следующий 
вид:  

for vаг=s:d:e 
     Инструкция1 
      ….  
      ИнструкцияN 
end 

где  s  -  начальное  значение  переменной  цикла  var,  d  -  приращение  этой 
переменной  и  е  -  конечное  значение  управляющей  переменной,  при 
превышении  которого  цикл  завершается.  Возможна  и  запись  в  виде  s:е  (в 
этом  случае  d=l).  Список  выполняемых  в  цикле  инструкций  завершается 
оператором end.  

В качестве примера использования оператора for...end вычислим сумму 

элементов  массива  х,  значения  которого  определены  в  командном  окне  с 
использованием  sci-функции  summa()  (рис.1.3.4-10),  параметром  которой 
служит  вектор  x.    Количество  элементов  массива  х  определяется  функцией 
length.  Кроме  обращения  к  функции  в  командном  окне  предусмотрена 
проверка  результата  вычислений  с  использованием  встроенной  функции 
sum(x) (рис.1.3.4-11). 

 


background image

68 

 

 

 
Рис. 1.3.4-10. Функция, вычисляющая сумму элементов массива  
 

 

 

Рис. 1.3.4-11. Обращение к функции summa() и встроенной функции sum() 

 
В цикле может быть использован оператор continue, который передает 

управление  в  следующую  итерацию  цикла,  пропуская  операторы,  которые 
записаны  за  ним,  причем  во  вложенном  цикле  он  передает  управление  на 
следующую  итерацию  основного  цикла.  Оператор  break  может 
использоваться  для  досрочного  прерывания  выполнения  цикла  (например, 
при  отладке  участка  программы).  Как  только  он  встречается  в  программе, 
цикл прерывается.  

Кроме  простых  регулярных  циклов  в  Scilab  имеется  возможность 

организации  вложенные  циклы.    Рассмотрим  пример  формирования 
двумерного массива а(3,3) (рис. 1.3.4-12 -13).  


background image

69 

 

 

 

Рис. 1.3.4-12. Sci-файл, иллюстрирующий вложенные циклы 

 

 

 
Рис. 1.3.4-13. Обращение к sci-файлу с именем summa-a.sci 
 

Оператор  итеративного  цикла

–  while…end.  Общий  вид 

структуры while…end выглядит следующим образом: 

 
while ЛогическоеВыражение 
Инструкции  
End 
 
Отличительной  особенностью  этой  структуры  является  то,  что 

инструкции,  расположенные  в  теле  структуры  повторения,  выполняются 
только в том случае, если некоторое  ЛогическоеВыражение «истинно». Как 
только  условие  становится  «ложным»,  происходит  выход  из  структуры 
повторения, и управление передается на инструкцию, расположенную после 
ключевого слова end. Приведем простой пример (рис 1.3.4-14). 


background image

70 

 

 

 

Рис. 1.3.4-14. Диалоговая программа, использующая оператор while…end 

 
Эта  программа,  сохраненная  в  sci-файле  с  именем  zicl.sci,  служит  для 

многократного вычисления длины окружности по вводимому пользователем 
значению  радиуса  r,  где  диалог  реализован  с  помощью  команды  input. 
Cтроки, связанные с вводом переменной r и вычислением длины окружности 
включены  в  управляющую  структуру  while...end.  Это  необходимо  для 
циклического повторения вычислений при вводе различных значений r. Пока 
r>=0. цикл повторяется. Но стоит задать r<0, вычисление длины окружности 
перестает  выполняться,  а  цикл  завершается.    Поскольку  во  2-й  строке 
программы величина r определена равной 0, цикл повторяется хотя бы один 
раз. 

Работа с программой в командном окне представлена на рис. 1.3.4-15. 

 

Рис. 1.3.4-15. Обращения к программе вычисления длины окружности 

 
В  управляющих  структурах,  в  частности  в  циклах  for  и  while,  часто 

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

Рассмотрим  пример  досрочного  прерывания  цикла  при  выполнении 

условия i=5 (рис.1.3.4-16).