21
RELATÓRIO 1 – Conceitos Fundamentais de Programação. Desafio: Bobina Jumbo 1) Desenvolver uma função matemática que resuma o cálculo do peso teórico de uma bobina filha. a) Bobinas com Diâmetro total externo de 1000 mm peso por metro linear 0,610: IV. Exemplo Largura de 660 peso igual a 403 Kg; Então, 660x (1000/1000)x0,610 onde 660x1x0,610= 514,60 que foi arredondado para 515 Kg. b) Bobinas com Diâmetro total externo de 1150 mm peso por metro linear 0,678: V. Exemplo largura de 660 peso igual a 515 Kg; Então, 660x (1150/1000)x0,678 onde 660x1,15x0,678= 514,60 que foi arredondado para 515 Kg. c) Bobinas com Diâmetro total externo de 1200 mm peso por metro linear 0,725: VI. Exemplo largura de 660 peso igual a 574 Kg; Então, 660x (1200/1000)x0,725 onde 660x 12x0,725= 574,20 que foi arredondado para 574 Kg. d) Bobinas com Diâmetro total externo de 1500 mm peso por metro linear 0,933: VII Exemplo largura de 660 peso igual a 924 Kg; Então, 660x(1500/1000)x0,933 onde 660x15x0,933=923,67 que foi arredondado para 924 Kg.

RELATÓRIO 1

Embed Size (px)

Citation preview

Page 1: RELATÓRIO 1

RELATÓRIO 1 – Conceitos Fundamentais de Programação.

Desafio: Bobina Jumbo

1) Desenvolver uma função matemática que resuma o cálculo do peso teórico de uma bobina filha.

a) Bobinas com Diâmetro total externo de 1000 mm peso por metro linear 0,610: IV. Exemplo Largura de 660 peso igual a 403 Kg;

Então, 660x (1000/1000)x0,610 onde 660x1x0,610= 514,60 que foi arredondado para 515 Kg.

b) Bobinas com Diâmetro total externo de 1150 mm peso por metro linear 0,678: V. Exemplo largura de 660 peso igual a 515 Kg;

Então, 660x (1150/1000)x0,678 onde 660x1,15x0,678= 514,60 que foi arredondado para 515 Kg.

c) Bobinas com Diâmetro total externo de 1200 mm peso por metro linear 0,725: VI. Exemplo largura de 660 peso igual a 574 Kg;

Então, 660x (1200/1000)x0,725 onde 660x 12x0,725= 574,20 que foi arredondado para 574 Kg.

d) Bobinas com Diâmetro total externo de 1500 mm peso por metro linear 0,933: VII Exemplo largura de 660 peso igual a 924 Kg;

Então, 660x(1500/1000)x0,933 onde 660x15x0,933=923,67 que foi arredondado para 924 Kg.

Nesta primeira Etapa foi discutido diversos assuntos em grupo, através das leituras anteriores no qual destacam-se:

Noção de Algoritmos;

Algoritmos são soluções computacionais, que nos ajudam a solucionar os diversos problemas do dia a dia. Ou seja: é um conjunto de ações com propriedades especiais e específicas e com algumas estruturas padrões para controlar a ordem na qual as ações são realizadas. Temos

Page 2: RELATÓRIO 1

que ter o mínimo de noção em algoritmos, porém os resultados finais ou ações dependem de um comando prático e que se faça entender para a sua realização.

PseudoLinguagem:

A pseudolinguagem tenta aproximar os algoritmos da linguagem natural. Desta forma teremos uma linguagem simplificada aproximando a linguagem dos computadores da natural. O Portugol, é a pseudolinguagem que mais usaremos, pois ela permite ao programador pensar no problema em si e não no equipamento que irá executar o algoritmo.

Estrutura de um programa:

* É uma coleção de diversas variáveis, com tipos possivelmente diferentes. Em C, os registros são declarados através da palavra reservada struct. Exemplo de uma estrutura em C:

1 struct aluno {

2 char nome [30];

3 int matricula;

4 char curso [30];

5 };Estruturas

Para acessar um campo específico de uma estrutura, deve-se compor o nome do campo que se deseja acessar com o nome da estrutura. Essa composição é feita utilizando-se do ponto (.).Estruturas

1 struct aluno a 1, a2;

2 strcpy (a1.nome, “João”);

3 a1.matricula=123456;

4 strcpy (a1.curso, “Engenharia”);

5 a2=a1;

6 if (a2==a1) {

7 printf(“São iguais.\n”);

8 } Estruturas

Page 3: RELATÓRIO 1

A função strcpy copia uma string de origem para uma string de destino, já que em C não é possível realizar esta operação diretamente. Por exemplo, a instrução a1.nome=”João” seria identificada como erro pelo compilador.

Isto ocorre porque uma string é considerada como um vetor em C e, como tal, deve ser manipulada elemento a elemento. A manipulação de strings em C é feita através das suas funções e a comparação de duas strings é possível através da função strcmp (string1,string2), que compara a string1 com a string2. Se as duas forem idênticas, a função retorna zero. Se elas forem diferentes, a função retorna um outro valor.

A Linguagem C ainda oferece um recurso de se renomear tipos de dados primitivos. Isto é feito através do comando typedef. Um exemplo de utilização para typedef é:

Typedef int TipoContador;

Typedef char* Tipopalavra; Estruturas

Sendo possível usar typedef nas estruturas. Exemplo:

1 struct tno{

2 char* palavra;

3 int contador;

4 };

5 typedef struct tno TipoNo;Estruturas

Variáveis podem então ser definidas utilizando-se esse novo nome, como uma espécie de apelido. No exemplo a seguir, a declaração de variável está sintaticamente correta:

TipoNo meuNo;

meuNo.contador=1; Vetores

Os vetores, também chamados de arrays, são uma forma de armazenar vários dados, em uma única variável, sendo estes dados acessíveis por meio de um índice numérico. Os vetores devem sempre conter dados do mesmo tipo. Sendo que a representação de matrizes segue a mesma regra dos vetores, diferenciando-se apenas com relação á quantidade de dimenções.

Tipos primitivos para representação de dados e variáveis:

|

Os tipos primitivos de dados são atômicos, no sentido em que não podem ser decompostos em tipos mais simples. Alguns tipos primitivos relacionam-se diretamente à sua representação interna, como é o caso dos números inteiros. Outros tipos primitivos, como o tipo caractere, precisam de um pequeno suporte de hardware ou software para serem representados

Page 4: RELATÓRIO 1

internamente. Agora, vamos ver alguns exemplos como os numéricos, caractere e booleano. * Tipos numéricos |

|

|

Os tipos numéricos estão entre os primeiros implementados pelas linguagens de programação. A maioria das linguagens oferece tanto representações dos números inteiros, , como representações dos números reais, . As representações computacionais desses tipos são apenas aproximações desses conjuntos matemáticos, que são infinitos, não podendo ser representados na memória do computador, que é finita. No caso dos números reais, temos, também, apenas aproximações das dízimas infinitas não periódicas.A Tabela 1 mostra os principais operadores aritméticos, a forma como são representados e exemplos de como utilizá-los.Tabela 1 – Operadores aritméticos. Operador| Representação | Exemplo

|

Menos unário | - | -a |

Potenciação | ^ | a^5 |

Multiplicação | * | a*5 |

Divisão| / | a/5 |

Módulo (resto da divisão) | % | a%5 |

Adição | + | a + b |

Subtração | - | a – b |

Valores numéricos podem também ser operando de operadores relacionais. A Tabela 2 mostra os operadores relacionais mais comuns.Tabela 2 – Operadores relacionais Operador | Representação | Exemplo |

Comparação menor | < | a < 5 |

Comparação menor-igual | ≤ | a ≤ 5 |

Comparação maior | > | a > 5 |

Comparação maior-igual | ≥ | a ≥ 5 |

Comparação igual | == | a == 5|

Comparação diferente | != | a != 5 |

Os operadores relacionais são utilizados para comparar valores, podendo ser aplicados sobre operando numéricos, além de outros tipos. Contudo, um operador relacional sempre produz um valor de tipo booleano, independente do tipo dos operando comparados. Ainda logo a frente veremos o tipo booleano. * Tipo inteiro |

Page 5: RELATÓRIO 1

|

|

O tipo inteiro é o tipo primitivo numérico mais comum. Sem parte fracionária, o tipo inteiro é caracterizado por sua faixa de valores representáveis, havendo versões dos inteiros com ou sem sinal. São comuns implementações de inteiros, inteiros sem sinal e inteiros longos. Um tipo inteiro com sinal é representado internamente como uma sequência de bits, em geral dois bytes, sendo o bit da extrema esquerda utilizado para representar o sinal e os demais bits para representar o valor absoluto do número, normalmente em uma notação conhecida como complemento de dois. Por exemplo, utilizando dois bytes os números decimais e são representados na notação de complemento de dois como e , respectivamente. No caso dos inteiros sem sinal, o bit que seria utilizado para representação do sinal se destina também à representação do valor absoluto do número. Em um inteiro sem sinal, apenas o zero e valores positivos são representáveis, correspondendo ao conjunto dos números naturais, . Por fim, um inteiro longo é um inteiro com sinal onde mais bits são utilizados para representar o valor absoluto do número, permitindo a representação de valores absolutos maiores. Em geral, um inteiro longo tem o dobro de bits em relação ao número de bits de um inteiro simples. A diversidade de tipos inteiros depende do projeto da linguagem de programação e da arquitetura do computador para o qual o compilador ou interpretador da linguagem foi projetado. Na escrita do algoritmo sob a forma de pseudocódigo, o tipo inteiro é identificado pela palavra reservada inteiro. Como o algoritmo é uma representação genérica, não existe a preocupação com o tamanho necessário para armazenar esse tipo. * Tipo Flutuante |

Os números em ponto-flutuante correspondem ao conjunto dos números reais, aqueles que abrangem os números racionais e irracionais. Para muitos números reais, as representações computacionais em ponto-flutuante são apenas aproximações, como acontece com dízimas periódicas e números como , e pode haver prejuízo de exatidão durante algumas operações aritméticas, como em , supondo numerador e denominador representados em ponto-flutuante.Um valor em ponto-flutuante é definido em termos de precisão e faixa. A precisão corresponde à exatidão de sua parte fracionária, medida pelo número de bits empregados para representá-la, ao passo que a faixa de valores é uma combinação dos valores do expoente e da parte fracionária. Um número em ponto-flutuante é geralmente representado pelo padrão de ponto-flutuante IEEE 754. Nesse padrão, um bit representa o sinal, seguido de uma sequência de bits que representa o expoente e outra sequência de bits que representa o valor da parte fracionária, conforme mostrado a seguir: 1 bit | 8 bits | 23 bits |

sinal | expoente | Fração |

Como acontece com os inteiros, a variedade de tipos flutuantes em uma linguagem de programação depende do projeto da linguagem e de sua arquitetura alvo. Um tipo ponto-flutuante de precisão simples costuma ser armazenado em quatro bytes, enquanto os de precisão dupla usam oito bytes.Uma representação alternativa à representação de números reais é oferecida pela linguagem Cobol, que armazena esses números utilizando a codificação BCD (Binary Coded Decimal), onde códigos binários são associados a cada dígito decimal individualmente, um dígito por byte ou dois dígitos por byte, com o ponto decimal em uma posição fixa no valor. O Cobol é uma linguagem de programação antiga, mas ainda bastante

Page 6: RELATÓRIO 1

utilizada em sistemas antigos ainda em operação.Na escrita do pseudocódigo, os números reais (tipo flutuante) são identificados unicamente pela palavra especial real e, assim como nos inteiros, não existe a preocupação com o tamanho necessário para armazenar esse tipo. Como exemplos de valores do tipo real, temos: 2, -2, 0.8, -0.8, 3.71654 etc. * Tipo Booleano |

|

|

O tipo booleano é certamente o tipo primitivo mais simples, pois possui apenas dois valores associados: true e false. Normalmente, o tipo booleano é empregado como sinalizador ou comutador para indicar a ocorrência de certas condições ou para desviar o fluxo de execução do programa. Ainda que algumas linguagens de programação utilizem outros tipos para essas funções, como acontece com a linguagem C, o uso do tipo booleano geralmente torna o programa mais compreensível.Como o tipo booleano apresenta apenas dois valores, somos tentados a pensar que esse tipo é representado por meio de um único bit. Contudo, devido a questões de eficiência, o tipo booleano costuma ser representado na menor célula de memória eficientemente endereçável, geralmente o byte.

Na escrita do algoritmo, o tipo primitivo booleano é identificado pela palavra especial booleano e, assim como nos outros tipos, não existe a preocupação com o tamanho necessário para armazenar esse tipo. Nesse contexto, o tipo booleano pode assumir um dos valores: “falso” ou “verdadeiro”. * Tipo Caractere |

|

|

O tipo caractere corresponde aos símbolos alfanuméricos armazenados como codificações numéricas. As codificações mais conhecidas são a ASCII (American Standard Code for Information Interchange) que utiliza os valores de 0 a 127 para codificar 128 diferentes caracteres, e a Unicode, uma tabela de codificação de 16 bits que inclui caracteres da maioria das linguagens naturais. Em uma tabela de codificação, cada caractere é identificado com um código correspondente, conforme trecho da tabela ASCII apresentado na Tabela 6 a seguir:Tabela 6 – Trecho da Tabela ASCII Binário | Decimal | Hexa | Caractere

|

| | | |

0100 0000 | 64 | 40 | @ |

0100 0001 | 65 | 41 | A |

0100 0010 | 66 | 42 | B |

0100 0011 | 67 | 43 | C |

| | | |

Page 7: RELATÓRIO 1

Além dos símbolos visíveis, essas tabelas de codificação incluem caracteres não imprimíveis, utilizados para controle de impressão, como tabulação e quebra de linha.

Valores do tipo caractere são comumente definidos entre aspas simples nas linguagens de programação. Por exemplo, o valor caractere deve ser escrito como . Na escrita do pseudocódigo, o tipo caractere será identificado pela palavra reservada caractere e seus valores serão denotados entre aspas simples.Operadores Aritméticos, Lógicos e relacionais.Operadores Aritméticos são utilizados na resolução de expressões matemáticas utilizando quaisquer valores, sejam eles constantes ou variáveis. Retorna um inteiro se todos os valores são inteiros ou um real se um ou mais valores são reais.Exemplo de operadores aritméticos: * + soma * - subtração * * multiplicação * / divisão * mod módulo:resto de uma divisão * ^ exponenciação ou potenciaçãoOperadores Relacionais são utilizados para estabelecer uma relação entre operador e operando. Retorna sempre um booleano; true para uma relação verdadeira e false para uma relação falsa.Exemplo de operadores relacionais: * > maior que * < menor que * <> ou!=diferente de * >=maior ou igual a * <=menor ou igual aOperadores Lógicos são utilizados para estabelecer relação entre valores lógicos. Retornam sempre um booleano pois sua utilização é dada quase sempre pela combinação de operadores relacionais.Exemplo de operadores lógicos: * AND ou && “E” * OR ou || “Ou” * NOT ou! “negação” Características do ambiente de desenvolvimento C. |

|

Entre as principais características do ambiente C, podemos citar:

* O C é uma linguagem de alto nível com uma sintaxe bastante estruturada e flexível tornando sua programação bastante simplificada;

* Programas em C são compilados, gerando programas executáveis;

* O C compartilha recursos tanto de alto quanto de baixo nível, pois permite acesso e programação direta do microprocessador. Com isto, rotinas cuja dependência do tempo é crítica, podem ser facilmente implementadas usando instruções em Assembly . Por esta razão o C é a linguagem preferida dos programadores de aplicativos;

* O C é uma linguagem estruturalmente simples e de grande portabilidade. O compilador C gera códigos mais enxutos e velozes do que muitas outras linguagens;

* Embora estruturalmente simples (poucas funções intrínsecas) o C não perde funcionalidade, pois permite a inclusão de uma farta quantidade de rotinas do usuário. Os fabricantes de compiladores fornecem uma ampla variedade de rotinas pré-compiladas em bibliotecas.

Relatório 2 – Programação Estruturada

Page 8: RELATÓRIO 1

a) Criar uma função para receber os pedidos: quantidade em quilos, largura das bobinas e altura das bobinas (unidade de medida milímetros).

Instruções:

1- Digitar pedido, qtd em quilos, largura, altura

2- Somar em conta

3- Mostrar dados

3.1- Se fim

4- Imprimir pedido

b) Criar uma função que combine a informação de largura de todos os pedidos informados e resulte em um valor que determine qual o total que será usado da Bobina Jumbo.

Instruções:

1- Digitar pedido, largura, perda de bobina

2- Somar largura em conta

3- Se fim de pedido

4- Largura *2/100=perda de bobina

5- Largura – perda de bobina

6- Imprimir dados

c) Apresentar o volume de produção necessário para atendimento dos pedidos recebidos.Exemplo:

float nBobinasJumbo = somaQuantidadePedido / PesoBobinaJumbo;

printf("O número de Bobinas Jumbo com 2.450 mm e' %.2f", nBobinasJumbo);

Instruções:

7- Digitar soma qtd pedido, peso bobina Jumbo

8- Somar 1 em conta

9- Qtd pedido / 2450

10- Mostrar dados

Page 9: RELATÓRIO 1

11- Se fim

12- Imprime dados

d) Apresentar o usuário da largura total que será utilizada da Bobina Jumbo. A largura total será a soma de todas as larguras dos pedidos que foram informados pelo usuário. Exemplo: printf("A largura total utilizada e' %.2f", totalLarguraBobinasFilhas);

Instruções:

13- Digitar pedido, largura

14- Somar largura em conta

15- Se fim

16- Imprime total largura

e) Informar ao usuário a porcentagem da bobina jumbo que não será utilizada. Esta informação é o total de perda comercial (Refugo Comercial). O usuário deverá ser consultado se esta conjugação será aprovada ou será descartada, sendo assim o pedido não será aceito para produção. Exemplo:

float perdaComercial = 1-(totalLarguraBobinasFilhas / 2450);

printf("O número de Bobinas Jumbo com 2.450 mm e' %.2f /%", nBobinasJumbo);

Instruções

17- Digitar pedido, largura, perda de bobina

18- Somar largura em conta

19- Se fim de pedido

20- Largura *2/100=perda de bobina

21- Imprimir perda de bobina

Desenvolvimento de algoritmo utilizando a Linguagem C

Ao desenvolver um algoritmo usando como uma ferramenta genérica para representar a solução de tarefas independente do desejo de automatizá-las, estaremos associando processamento eletrônico de dados, onde representa o rascunho para programas(Software). Servirá como modelo para programas, pois sua linguagem é intermediária à linguagem

Page 10: RELATÓRIO 1

humana e as linguagens de programação, sendo então, uma boa ferramenta na validação da lógica de tarefas a serem automatizadas. Desenvolver um algoritmo é realizar uma receita para um processo computacional que consista em uma série de operações primitivas, interconectadas devidamente, sobre um conjunto de objetos. Os objetos manipulados por essas receitas são as variáveis.

No desenvolvimento de um projeto, quanto mais tarde um erro é detectado, mais dinheiro e tempo se gasta para repará-lo. Assim, a responsabilidade do programador é maior no desenvolvimento dos algoritmos do que na sua implementação pois, quando bem desenvolvidos, não se perde muito tempo em refaze-los, reimplantá-los e retestá-los, assegurando assim uma eficiência com o prazo previsto para o projeto.

Aplicação dos Conceitos de Estrutura de Controle para análise de condições

As estruturas de controle de são fundamentais para qualquer linguagem de programação. Sem elas não haveria uma maneira do programa ser executado: de cima para baixo comando por comando. Não haveria condições, repetições ou saltos. A linguagem C possui diversos comandos de controle de fluxo. É possível resolver todos os problemas sem utilizar todas elas, mas devemos nos lembrar que a elegância e facilidade de entendimento de um programa dependem do uso correto das estruturas no local certo.

if (condição) declaração;

A expressão, na condição, será avaliada. Se ela for zero, a declaração não será executada. Se a condição for diferente de zero a declaração será executada.

O else

Podemos pensar no comando else como sendo um complemento do comando if. O comando if completo tem a seguinte forma geral:

if (condição) declaração_1;

else declaração_2;

A expressão da condição será avaliada. Se ela for diferente de zero a declaração 1 será executada. Se for zero a declaração 2 será executada. É importante nunca esquecer que, quando usamos a estrutura if-else, estamos garantindo que uma das duas declarações será executada. Nunca serão executadas as duas ou nenhuma delas.

O if-else-if

A estrutura if-else-if é apenas uma extensão da estrutura if-else. Sua forma geral pode ser escrita como sendo:

if (condição_1) declaração_1;

Page 11: RELATÓRIO 1

else if (condição_2) declaração_2;

else if (condição_3) declaração_3;

.

.

.

else if (condição_n) declaração_n;

else declaração_default;

A estrutura acima funciona da seguinte maneira: o programa começa a testar as condições começando pela 1 e continua a testar até que ele ache uma expressão cujo resultado dá diferente de zero. Neste caso ele executa a declaração correspondente. Só uma declaração será executada, ou seja, só será executada a declaração equivalente á primeira condição que der diferente de zero. A ultima declaração (default) é a que será executada no caso de todas as condições darem zero e é opcional. Um exemplo da estrutura acima.

A expressão condicional

Quando o compilador avalia uma condição, ele quer um valor de retorno para poder tomar a decisão. Mas esta expressão não necessita ser uma expressão no sentido convencional. Uma variável sozinha pode ser uma "expressão" e esta retorna o seu próprio valor. Isto quer dizer que teremos as seguintes expressões:

int num;

if (num!=0) ....

if (num==0) ....

for (i = 0; string[i] == '\0'; i++)

equivalem a

int num;

if (num) ....

if (!num) ....

for (i = 0; string[i]; i++)

Isto quer dizer que podemos simplificar algumas expressões simples.

ifs aninhados

Page 12: RELATÓRIO 1

O if aninhado é simplesmente um if dentro da declaração de um outro if externo. O único cuidado que devemos ter é o de saber exatamente a qual if um determinado else está ligado.

O Comando switch

O comando if-else e o comando switch são os dois comandos de tomada de decisão. Sem dúvida alguma o mais importante dos dois é o if, mas o comando switch tem aplicações valiosas. Mais uma vez vale lembrar que devemos usar o comando certo no local certo. Isto assegura um código limpo e de fácil entendimento. O comando switch é próprio para se testar uma variável em relação a diversos valores pré-estabelecidos. Podemos fazer uma analogia entre o switch e a estrutura if-else-if apresentada anteriormente. A diferença fundamental é que a estrutura switch não aceita expressões. Aceita apenas constantes. Oswitch testa a variável e executa a declaração cujo case corresponda ao valor atual da variável. A declaração default é opcional e será executada apenas se a variável, que está sendo testada, não for igual a nenhuma das constantes.

O comando break, faz com que o switch seja interrompido assim que uma das declarações seja executada. Mas ele não é essencial ao comando switch. Se após a execução da declaração não houver um break, o programa continuará executando. Isto pode ser útil em algumas situações, mas é recomendado ter cuidado.

Desenvolvimento de Laços de Repetição

* Laço for

* Laço while

* Laço do.. while

* Laço foreach

Laço for

Uma estrutura de repetição é também conhecida como Loop/Laço. O primeiro tipo de loop que vamos ver é o "for". O loop "for" trabalha checando uma condição para executar um bloco de código até que essa condição seja verdadeira, no caso do loop "for" temos que em sua syntax declarar sua inicialização, sua condição e seu incremento, veja:

for (int i =0; i <= 10; i++)

{

//instruções

}

Page 13: RELATÓRIO 1

No código acima temos a syntax de um loop "for" onde na primeira parte declaramos uma variável do tipo inteiro (int) e a inicializamos com o valor 0 (zero), na segunda parte temos a condição nesse caso verifica se a nossa variável recém criada é menor ou igual a 10 e a terceira e ultima parte é o incremento desta variável, sendo essas três partes separadas por ";" (ponto e virgula). O funcionamento é simples todo o código dentro desse bloco do "for" será executado dez vezes. Simples não? U m pequeno exemplo: porque a variável chama "i"? o que é incremento? Vamos as respostas!

Primeiro chama-se "i" por um motivo simples: convenção. "i" vem de índice e isso já se tornou meio que um padrão, mas essa variável pode ter qualquer nome, por exemplo: contador.

Segundo um incremento nada mais é do que adicionar 1 a uma variável, ou seja, se uma variável vale 0 (zero) e passa por um incremento logo essa variável vale 1 e se passa mais uma vez vale 2 e assim por diante. E o que acontece com o decremento é o inverso, ou seja, se uma variável vale 2 e passar por um decremento agora passa a valer 1 e assim por diante.

exemplo pratico do loop "for":

for (int i = 0; i < 20; i++)

{

int res = i * 2;

Console.WriteLine(res.ToString());

}

Veja que embora simples mostra bem o funcionamento do "for", neste caso vai mostrar na tela o valor de "i" multiplicado por 2 enquanto "i" for menor que 20.

Laço while

De modo diferente do loop "for" (embora o objetivo seja o mesmo, ou seja, repetir a execução de um código testando uma condição) o loop "while" é mais simples de ser entendido, pois sua syntax não requer que você coloque na mesma linha variável de inicialização, condição e o seu incremento. No loop "while" apenas colocamos a condição que queremos testar, veja como fica a syntax:

while (expressão booleana)

{

//instruções

}

Page 14: RELATÓRIO 1

Veja como é simples o código. Expressão booleana é uma expressão que sempre retorna falso ou verdadeiro e a instruções dentro do bloco de código do loop "while" só será executada enquanto essa expressão retornar verdadeiro. Veja um exemplo:

int contador = 2;

while (contador != 10)

{

Console. WriteLine (contador.ToString());

contador++;

}

Neste caso temos uma variável chamada contador e seu valor é 2, no nosso loop "while" testamos se a variável contador é diferente de 10 caso verdadeiro mostramos na tela o valor atual de contador e o incrementos em 1 e o loop "while" continuará até que essa condição se torne falsa.

Cuidado: não devemos esqueçer de incrementar ou se assegurar que sua condição pode ser falsa em algum momento, pois caso contrario você entrará em um loop infinito, ou seja, a condição nunca será falsa e o loop vai continuar até travar a máquina.

Laço do.. while

Vejamos, porque é que teríamos mais um loop do tipo "while"? Se fossemos analisar com cuidado veríamos que o loop "while" dependendo do caso pode nunca ser executado, ou seja, se a condição do loop "while" retorna falsa de primeira ele nunca vai ser executado. No exemplo acima se atribuíssemos o valor 10 a variável contador em sua declaração o loop "while" nunca começaria. Com o loop "do.. while" o código será executado ao menos uma vez porque nós fazemos a verificação da condição no final da instrução, veja:

do

{

//instruções

}

while (expressão booleana)

Page 15: RELATÓRIO 1

Podemos traduzir "do" para "faça", ou seja, faça as instruções enquanto (while) expressão seja verdadeira. Assim garantimos que ao menos uma vez nossas instruções serão executadas. Exemplo:

int contador = 10;

do

{

Console.WriteLine (contador.ToString());

}

while(contador != 10);

Veja que mesmo contador sendo igual a 10 a instrução será executa ao menos uma vez porque só depois que fazemos a verificação.

Laço foreach

O loop "foreach" é usado para interagir (percorrer) listas. Ele opera sobre Arrays ou coleções veja sua syntax básica:

foreach(<tipo de dado> <nome> in <lista>)

{

//instruções

}

Veja um exemplo pratico para facilitar o entendimento:

string[] nomes = {"Cleber", "Carol", "Denis", "Roberto"};

foreach (string pessoa in nomes)

{

Console.WriteLine("{0} ", pessoa);

}

Page 16: RELATÓRIO 1

Criamos um array de string e colocamos alguns elementos dentro e no nosso loop "foreach" será exibida todos os elementos dentro de nosso array.

Conclusão

Vimos nesse artigo mais um importante tópico para qualquer linguagem de programação as estruturas de repetição, aprendemos sobre os diversos tipos na linguagem C# entre eles: laço for, laço while, laço do.. while e laço foreach.

REFERÊNCIA

ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6023: informação e documentação: referências: elaboração. Rio de

Janeiro, 2002.

______. NBR 6024: informação e documentação:numeração progressiva das seções de um documento escrito: apresentação. Rio de Janeiro, 2003.

______. NBR 6027: informação e documentação: sumário: apresentação. Rio de Janeiro, 2003.

______. NBR 6028: informação e documentação: resumo: apresentação. Rio de Janeiro, 2003.

______. NBR 6034: informação e documentação: índice: apresentação. Rio de Janeiro, 2004.

______. NBR 10520: informação e documentação: citações em documentos: apresentação. Rio de Janeiro, 2002.

MIZRAHI, Victorini Viviane, Treinamento em Linguagem C / São Paulo: Pearson Prentice Hall, 2008 PLT Faculdade Anhanguera de Santo André.

Page 17: RELATÓRIO 1

<https://docs.google.com/a/aedu.com/file/d/0Bx2ZnHfyWt9QTzluaU4yX1JRYTg/preview.>

<http://www.unianhanguera.edu.br/anhanguera/bibliotecas/normas_bibliograficas/index.html>.

<https://docs.google.com/a/aedu.com/file/d/0Bx2ZnHfyWt9QMnFjLXd4OHZ3V28/preview.>

<http://www.cenapad.unicamp.br/servicos/treinamentos/apostilas/apostila_C.pdf>

<http://www.linhadecodigo.com.br/artigo/1177/serie-aprenda-csharp-estrutura-de-repeticao.aspx#ixzz2OhUlUiQn>