Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Ръководство по програмиране на Java - част 6
  1. Ръководство по програмиране на Java - част 6
     
Автор  eminem (03.02.2005 19:16)  съобщение до автора
Погледнат  5140 пъти  добави към любими
Оценка  добави коментар
Гласове  4  изпрати на приятел
Коментари  (1)  абонирай се за Java
    Страница 1 / 1

 



ПОВТАРЯЩИ СЕ ДЕЙСТВИЯ


Циклични алгоритми
Един алгоритъм е цикличен, когато при неговото изпълнение група от елементарни действия се повтаря многократно. В много случаи се налага организиране на повтарящи се действия. Такава например е задачата за намиране на сумата на редица от числа. Сумиране на голям брой числа може да се наложи, когато искате да проверите сметката си в магазина или пък когато класният ръководител определя средния успех на учениците в класа.

Пр. 1  Алгоритъм за определяне на сума
Предложеният алгоритъм решава задачата за намиране на сумата на числа, въвеждани последователно, като сумирането завършва, когато се въведе числото 0. сумата на числата се натрупва последователно (след всяко ввъвеждане) в параметър s. Следващото словесно описание представя типичен цикличен алгоритъм:
1.s = 0.
2.Въведете поредното число х.
3.Ако х ≠ 0, то s=s+x, в противен случай изпълнете стъпка 5.
4.Изпълнете стъпка 2.
5.Съобщете стойността на s (като резултат).
6.Прекратете работа.
Групата от повтарящи се действия в цикличните алгоритми се наричат тяло на цикъла. В примера тялото на цикъла представляват действията от стъпки 2, 3 и 4. Всяко изпълнение (повторение) на тялото на цикъла се нарича итерация. Задължително изискване е повторенията да са краен брой. Кога ще завърши цикълът се определя от т.нар. условие за край на повторенията, което в горния алгоритъм е х = 0 (проверява се на стъпка 3).
За да сме сигурни, че цикълът наистина ще заврши (условието за край ще настъпи), е необходимо някоя от стъпките на цикъла да включва действие, което евентуално ще предизвика удовлетворяване на условието за край. Това действие се нарича управление на повторенията. В нашия пример то е определено със стъпка2, защото нововъведената стойност на х може да е 0 и да предизвика приключване на изпълнението на алгоритъма.
Стъпка 1 от горния алгоритъм е много важна за правилно му изпълнение, защото ако на s не беше дадена предварително стойност 0, а например 1, тогава s, получено на стъпка 5, няма да е сумата на въведените числа. Такива действия, които се извършват преди началото на цикъла с цел да се подготви неговото правилно изпълнение, се наричат подготовка или инициализация на цикъла.
Средства, необходими за организация на цикли в програмите се наричат оператори за цикъл. С тяхна помощ можем да накараме компютъра да изпълни голям брой повтарящи се действия, без да е необходимо да записваме всяко действие отделно.
1.Четирите основни елемента на всеки цикъл, въведени по горе – инициализация, тяло, управление на повторенията и условие за край, трябва внимателно да бъдат обмислени и проектирани, независимо по какъв начин ще се записва цикличният алгоритъм – словесно или чрез оператор за цикъл.
2.Забележете, че когато чрез цикъл в една променлива се натрупва сума, то тази променлива първоначално се нулира.
В езика Java има три циклични оператора. В този урок ще разгледаме два от тях, които се наричат съответно цикъл с предусловие и цикъл със следусловие. Двата оператора се различават помежду си по това дали условието за край на цикъла се проверява преди или след изпълнение на неговото тяло. Третият вид оператор за цикъл – с параметър, ще разгледаме в следващия урок.

Оператор за повторение с предусловие
Оператор за цикъл с предусловие while има следният вид:

CODE
1
2
3
4
while (<условие>) {
        <оператор>;
[оператор2; ... операторN;]
}

Където условието е от логически тип и определя условието за край на цикъл, а операторът (кой да е оператор от езика Java) представлява тялото на цикъла. Т.е. оператора се изпълнява докато условието от логически тип има стойност true, ако приеме стойност false, то оператора не се изпълнява повече.

Пр. 2  Оператор за цикъл с предусловие
Предполага се, че S и I са декларирани като целочислени променливи:
CODE
1
2
3
4
5
S = 0; I = 1;             // инициализация
while (I <= 4) {                 // проверка за край
S = S+I*I;          // тяло
I = ++I;     // управление на повторенията
}

Смисълът на оператора while може много лесно да бъде разбран, ако го преведем и прочетем като свързано изречение – “докато <условие> има стойност истина, изпълнявай <оператор>”. Иначе казано: преди всяка итерация се изчислява стойността на логическото условие; ако тя е true, се изпълнява оператора, а ако е false – цикълът се прекратява.
Да разгледаме по-подробно изпълнението на оператора за цикъла от пример 2:
•Преди влизане в цикъла променливите S и I приемат начални стойност 0 и 1 (инициализация);
•При първата итерация се проверява дали стойността на I е по-малка или равна на 4, т.е. 1<=4, и понеже това е вярно, се изпълняват операторите от тялото на цикъла (S = 0+1*1, т.е. S=1 и I = 1+1, т.е. I = 2);
•При втората итерация, понеже отново е вярно, че 2<=4, се изпълнява тялото (S = 1+2*2, т.е. S=5 и I = 2+1, т.е. I = 3);
•Трета итерация: Понеже 3<=4, следва че: S = 5+3*3 (=14), а  I = 3+1 (=4);
•Четвърта итерация: Проверката дали 4<=4 дава стойност истина и (за последен път) се изпълнява тялото на цикъла S = 14 + 4*4, т.е. S = 30 и I = 4+1 (=5);
•При проверка дали 5<=4 се получава лъже и цикълът се прекратява.

1.Тялото на цикъла може да не се изпълни нито веднъж!
2.Основните елементи на цикъла от пример 1 са посочени с помощта на коментари.
За да помните колко е важно управлението на повторенията, разгледайте цикъла от пример3, който довежда до т.нар. зацикляне (цикълът не завършва).

Пр. 3  Зацикляне
while (true) {System.out.println(“Безкраен цикъл”);}

Пр. 4  Основна част на програма за намиране на НОД по алгоритъма на Евклид

Оператор за повторение със следусловие
Операторът за цикъл със следусловие do…while има следната синтактична диаграма:

CODE
1
2
3
4
do {
        <оператор>;
       
[<оператор1>; [<оператор2>;…]];
} while (<условие>);

Където условието е от логически тип и определя условието за край на цикъла, а операторите между do и while представляват тялото на цикъла.

Пр. 5 Основна част на програма - цикъл със следусловие (алгоритъм на Евклид)

Начинът на изпълнение на оператора за цикъл със следусловие се определя от следните две стъпки:
1.Изпълняват се последователно операторите между do и while.
2.Определя се стойността на логическото условие. Ако тя е false, се повтарят отново стъпки 1 и 2, а ако е true изпълнението на цикъла се прекратява.


Смисълът на оператора do…while… може да се изрази с изречението: “Изпълнявай операторите, докато стойността на условието стане истина.”
1.При цикъла със следусловие също може да се получи зацикляне, ако в тялото му няма оператор, който влияе върху условието за край.
2.Ако сравните двата начина за програмиране на алгоритъма на Евклид (пример 4 и пример 5), ще забележите, че в този случай е по-удобно цикълът да бъде записан чрез оператор while (защо?).
3.Операторът do…while… много често се използва в програмите (вж. пример 6) за проверка на това дали въведените от потребителя данни са коректни (по стойност, по тип и т.н.).
4.Тялото на оператора do…while… се изпълнява поне един път.


Айде стига толкова, вече ми омръзна да пиша...



   


Ключови думи: javascript програмиране code код script алгоритъм


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

От гледна точка на чистота на кода и правилно писане, имената на променливите не са описателни... Но това не е фатално, в този ред на мисли по конвенция имената на променливите са с малка буква. Иначе информацията е окей за начинаещи.

  nofearinc на 18.08.2006 01:14

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008