freeCodeCamp/guide/portuguese/java/control-flow/index.md

3.6 KiB

title localeTitle
Control Flow Controle de fluxo

Controle de fluxo

As instruções de fluxo de controle são exatamente o que o termo significa. São instruções que alteram o fluxo de execução com base em decisões, loops e ramificações para que o programa possa executar blocos de código condicionalmente.

Primeiramente, Java possui as seguintes construções para controle de fluxo:

  • if

    if( <expression that results in a boolean> ){ 
        //code enters this block if the above expression is 'true' 
     } 
    
    
  • if...else

    if( <expression that results in a boolean> ){ 
        //execute this block if the expression is 'true' 
     } else{ 
        //execute this block if the expression is 'false' 
     } 
    
    
  • switch

Switch é uma alternativa para a construção if...else quando houver vários valores e casos para verificar.

switch( <integer / String / Enum > ){ 
    case <int/String/Enum>: 
        <statements> 
        break; 
    case <int/String/Enum>: 
        <statements> 
        break; 
    default: 
        <statements> 
 } 

Nota: O fluxo do programa falls through no próximo case se a instrução de break estiver faltando. Por exemplo, digamos que você diga o padrão 'Olá' para todos no escritório, mas você é mais gentil com a garota que senta ao seu lado e soa irritada com seu chefe. A maneira de representar seria algo como:

switch(person){ 
    case 'boss': 
        soundGrumpy(); 
        break; 
    case 'neighbour': 
        soundExtraNice(); 
        break; 
    case 'colleague': 
        soundNormal(); 
        break; 
    default: 
        soundNormal(); 
 } 
Note: The `default` case runs when none of the `case` matches. Remember that when a case has no `break` statement, it `falls through` to the next case and will continue to the subsequent `cases` till a `break` is encountered. Because of this, make sure that each case has a `break` statement. The `default` case does not require a `break` statement. 
  • nested statements

Qualquer um dos fluxos de controle anteriores pode ser aninhado. O que significa que você pode ter aninhado if , if..else e switch..case . isto é, você pode ter qualquer combinação dessas declarações dentro da outra e não há limitação para a profundidade do nesting .

Por exemplo, vamos considerar o seguinte cenário:

  • Se você tem menos de 25 dólares, você consegue uma xícara de café.
  • Se você tem mais de 25 dólares, mas menos de 60 dólares, você tem uma refeição decente.
  • Se você tem mais de 60 dólares, mas menos de 100, você obtém uma refeição decente junto com um copo de vinho.
  • No entanto, quando você tem mais de 100 dólares, dependendo de quem você é, você quer ir para um jantar à luz de velas (com sua esposa) ou você vai para um bar de esportes (com seus amigos).

Uma das maneiras de representar isso será:

int cash = 150; 
 String company = "friends"; 
 
 if( cash < 25 ){ 
    getCoffee(); 
 } else if( cash < 60 ){ 
    getDecentMeal(); 
 } else if( cash < 100 ){ 
    getDecentMeal(); 
    getGlassOfWine(); 
 } else { 
    switch(company){ 
        case "wife": 
            candleLitDinner(); 
            break; 
        case "friends": 
            meetFriendsAtSportsBar(); 
            break; 
        default: 
            getDecentMeal(); 
    } 
 } 

Neste exemplo, meetFriendsAtSportsBar() será executado.

:rocket: Executar código