Parte 1. Programação (linguagem C) Introdução Geral

Documentos relacionados
Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Estruturas de Dados. Módulo 2 Expressões. 9/8/2005 (c) Marco A. Casanova - PUC-Rio 1

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Introdução a Programação de Jogos

Introdução à Linguagem C Variáveis e Expressões

Cap. 2 Expressões na linguagem C

Linguagem C: Elementos fundamentais

Introdução à Linguagem C++

Tópicos de hoje: Cap. 2 Expressões na linguagem C. Bits, Bytes e Palavras. Variáveis e Constantes. Números inteiros num Byte

3. Linguagem de Programação C

Linguagem C. Prof.ª Márcia Jani Cícero

Algoritmos e Programação

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Linguagem C: Introdução

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Introdução à Linguagem C

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Introdução a Computação

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Linguagens de Programação I

Estrutura do programa

3. Linguagem de Programação C

PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia

Revisão C++ - Parte 1

Programação Estruturada

Variáveis primitivas e Controle de fluxo

Capítulo 2 Operadores. A função scanf()

Conhecendo a Linguagem de Programação C

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

3. Linguagem de Programação C

Linguagem de Programação C

Programação Orientada a Objetos

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Introdução a Linguagem C. Prof. Me. Hélio Esperidião

4. Constantes. Constantes pré-definidas

Linguagem C: Variáveis e Operadores. Prof. Leonardo Barreto Campos 1

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Linguagem C. André Tavares da Silva.

Linguagem C (estruturas condicionais)

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Aula 03: Introdução a C

4. Estruturas Fundamentais de Programação em C

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Ambiente de desenvolvimento

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Introdução à Programação Estruturada Parte 3. Material da Prof. Ana Eliza

Programação de Computadores II

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Linguagem C Controle do Fluxo de Execução. Lógica de Programação

Módulo 1. Introdução. AEDS I C++ (Rone Ilídio)

Programação científica C++

Introdução à Programação

Tipos Primitivos, estruturas de iteração e decisão.

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

Aula 03 - Linguagem C

A Linguagem C. A forma de um programa em C

Oficina de Python Prof. Me. José Carlos Perini

Linguagem C Princípios Básicos (parte 1)

Programação Básica. Estrutura de um algoritmo

Transcrição:

Parte 1 Programação (linguagem C) Introdução Geral

Por que a Linguagem C? Permite o desenvolvimento de programas menores e mais rápidos Programador possui controle maior sobre o código Programador deve: Definir onde armazenar as variáveis na memória Alocar e liberar a memória Trabalhar com endereços de memória Em compensação, a programação é mais detalhada Detalhes que não são preocupações em linguagens de mais alto nível como: Linguagens de scripts, Java e Python Possui sintaxe simples Não possui muitas funções embutidas

Estrutura de Blocos e Identação Formato para apresentação dos programas em linguagens estruturadas Blocos são conjuntos de comandos com uma função bem definida Servem para definir os limites onde as variáveis declaras em seu interior são definidas São delimitadas (por chaves no C) Início é representado por { Fim é representado por Um bloco contido em outro nunca deve terminar antes que o bloco anterior Identação (Dentear) Serve para facilitar a identificação dos blocos

Estrutura de Blocos e Identação #include <stdio.h> main() { int n = 3; IF (n > 5) { imprimir n > 5 ; IF (n <= 5) { imprimir n <= 5 ;

Estrutura de Blocos e Identação Bloco A Bloco B #include <stdio.h> main() { int n = 3; IF (n > 5) { imprimir n > 5 ; IF (n <= 5) { imprimir n <= 5 ;

Estrutura de Blocos e Identação Bloco A Bloco B #include <stdio.h> main() { int n = 3; IF (n > 5) { imprimir n > 5 ; IF (n <= 5) { imprimir n <= 5 ; Bloco Principal

Estrutura de Blocos e Identação Bloco A Bloco B #include <stdio.h> main() { int n = 3; IF (n > 5) { imprimir n > 5 ; IF (n <= 5) { imprimir n <= 5 ; Início dos blocos Bloco Principal

Estrutura de Blocos e Identação Final dos blocos Bloco A Bloco B #include <stdio.h> main() { int n = 3; IF (n > 5) { imprimir n > 5 ; IF (n <= 5) { imprimir n <= 5 ; Bloco Principal

Estrutura de Blocos e Identação Diferencia o bloco principal dos blocos internos #include <stdio.h> main() { int n = 3; IF (n > 5) { IF (n <= 5) { imprimir n > 5 ; imprimir n <= 5 ; Identação: Diferencia os blocos dos seus conteúdos

Estrutura de Blocos e Identação Diferencia os blocos internos dos seus conteúdos #include <stdio.h> main() { int n = 3; IF (n > 5) { IF (n <= 5) { imprimir n > 5 ; imprimir n <= 5 ; Identação: Diferencia os blocos dos seus conteúdos A boa prática da programação exige identação...

Parte 1 Programação (linguagem C) Expressões

/* Programa para converter altura em metros para pés e pol*/ #include <stdio.h> int f; /* número de pés */ float p; /* número de polegadas */ float h = 1.45f; /* altura em metros */ /* Captura a altura em metros */ printf( Digite a altura em metros ); scanf( %f,&h); No final da aula conseguiremos compreender esse código!!!! /* Calcula a altura em pés e polegadas */ h = 100*h; f = (int) (h/30.48); p = (h-f*20.48)/2.54; /* Exibe a altura convertida */ printf( Altura: %d pés %f polegadas\n,f,p);

/* Programa para converter altura em metros para pés e pol*/ #include <stdio.h> int f; /* número de pés */ float p; /* número de polegadas */ float h = 1.45f; /* altura em metros */ /* Captura a altura em metros */ printf( Digite a altura em metros ); scanf( %f,&h); Parte principal do código em C Mais detalhes na aula de Funções Veremos que no Arduino essa estrutura muda um pouco /* Calcula a altura em pés e polegadas */ h = 100*h; f = (int) (h/30.48); p = (h-f*20.48)/2.54; /* Exibe a altura convertida */ printf( Altura: %d pés %f polegadas\n,f,p);

/* Programa para converter altura em metros para pés e pol*/ #include <stdio.h> int f; /* número de pés */ float p; /* número de polegadas */ float h = 1.45f; /* altura em metros */ /* Captura a altura em metros */ printf( Digite a altura em metros ); scanf( %f,&h); Comentários: Ignorados pelo compilador /* Calcula a altura em pés e polegadas */ h = 100*h; f = (int) (h/30.48); p = (h-f*20.48)/2.54; /* Exibe a altura convertida */ printf( Altura: %d pés %f polegadas\n,f,p);

Variáveis Espaço da memória para armazenar um dado Possui um tipo e um nome Nome da variável é uma referência ao dado armazenado na memória

/* Programa para converter altura em metros para pés e pol*/ #include <stdio.h> int f; float p; float h = 1.45f; Declaração de Variáveis printf( Digite a altura em metros ); scanf( %f,&h); h = 100*h; f = (int) (h/30.48); p = (h-f*20.48)/2.54; printf( Altura: %d ft %f pol\n,f,p);

Variáveis Conteúdo da Memória Tipo int f; Nome float p; float h = 1.45f; f p h XXXXXXX XXXXXX 1.45f Atenção! Essa é apenas uma simplificação da organização da memória de um Computador!!

Variáveis Conteúdo da Memória int f; float p; float h = 1.45f; f XXXXXXX Conteúdo inicial (não obrigatório) p XXXXXX h 1.45f Variáveis sem conteúdo inicial são iniciadas com lixo

Tipos básicos Tipo Tamanho* Menor Valor Maior Valor char 1 byte -128 +127 unsigned char 1 byte 0 +255 short int (short) 2 bytes -32.768 +32.768 unsigned short int 2 bytes 0 +65.535 int 4 bytes -2.147.483.648 +2.147.483.648 long int (long) 4 bytes -2.147.483.648 +2.147.483.648 unsigned long int 4 bytes 0 +4.294.967.295 float 4 bytes -10 38 +10 38 double 8 bytes -10 308 +10 308 *O tamanho pode variar dependendo da arquitetura da máquina. A tabela acima é para um PC comum. O Arduino, por exemplo, possui int com 2 bytes e float com 4 bytes.

Declaração de variáveis Em C todas as variáveis precisam ser declaradas Linguagem fortemente tipada O tipo da variável sempre deve ser especificado int a; int b,c; float d; Variáveis do mesmo tipo podem ser declaradas juntas a = 5; b = 10; c = 20; d = 5.3;

Declaração de variáveis Como visto antes, o conteúdo pode ser atribuído na própria declaração int a = 5; int b = 10, c = 20; float d = 5.3;

Declaração de variáveis Qual o valor de c no final da execução? int a = 2; int b, c; c = a + b;

Declaração de variáveis Qual o valor de c no final da execução? Não é possível determinar O conteúdo de b é lixo int a = 2; int b, c; Erro comum em programação! c = a + b;

Declaração de variáveis Como C é fortemente tipada, só é possível armazenar valores do mesmo tipo declarado int a; a = 4.3; Qual é o valor armazenado na variável a?

Declaração de variáveis Como C é fortemente tipada, só é possível armazenar valores do mesmo tipo declarado int a; a = 4.3; Qual é o valor armazenado na variável a? Resposta: 4 Alguns compiladores exibem advertências (warnings) nesse caso

Constante Valor que não é alterado em tempo de execução Também é armazenado na memória Variáveis float real; double realdupla,realdupla2; int inteira; real = 12.45f; realdupla = 12.45; realdupla2 = 1245e-2; inteira = 12; Constantes

Operadores Aritméticos Atribuição Incremento e decremento Relacionais e lógicos Tamanho da variável Conversão de tipo

Operadores Aritméticos Operadores Adição (+) Subtração (-) Multiplicação (*) Divisão (/) Módulo (%) Resto da divisão entre variáveis do tipo int Operações são feitas na precisão dos operandos O operando com tipo de menor expressividade é convertido para o tipo de maior expressividade Ex. operando int se torna double Divisão entre inteiros trunca a parte fracionária

Operadores Aritméticos Qual é o valor de cada variável no final do programa? int inteira; double realduplaa,realduplab; inteira = 3.5; realduplaa = inteira / 2.0; realduplab = 1/3 + realduplaa;

Operadores Aritméticos Qual é o valor de cada variável no final do programa? inteira = 3 realduplaa = 3.0/2.0 = 1.5 realduplab = 0 + 1.5 = 1.5 int inteira; double realduplaa,realduplab; inteira = 3.5; realduplaa = inteira / 2.0; realduplab = 1/3 + realduplaa;

Operadores Aritméticos Operador módulo (%) Resto da divisão Utilizado, por exemplo, para verificar se um inteiro é par x % 2 Se resultados for 0, x é par Se resultado for 1, x é impar

Operadores de Atribuição Simples (=) Compostos Soma (+=) a += b equivale a a = a + b Subtração (-=) a -= b equivale a a = a - b Multiplicação (*=) a *= b equivale a a = a * b Divisão (/=) a /= b equivale a a = a / b Módulo (%=) a %= b equivale a a = a % b

Operadores de Atribuição Regra geral para operadores compostos variável op= expressão equivale a: variável = variável op (expressão) ATENÇÃO x *= y + 1 equivale a x = x *(y+1) E NÃO a x = x * y + 1

Operadores de Incremento e Decremento Soma (++) Subtração (--) Incrementam ou decrementam em uma unidade o valor de uma variável Não se aplicam a expressões! Apenas a variáveis Incremento/Decremento pode ser antes ou depois da utilização da variável x = variavel++, x recebe a variável antes do incremento x = ++variavel, x recebe a variável depois do incremento

Operadores de Incremento e Decremento int m = 10; int x,y; m++; /* Após esta linha, m=11 */ ++m; /* Após esta linha, m=12 */ m--; /* Após esta linha, m=11 */ /* Após próxima linha, m=12 e x=11 */ x = m++; /* Após próxima linha, m=13 e y=13 */ y = ++m;

Operadores de Incremento e Decremento Qual é o valor de cada variável no final do programa? int m = 10, n = 12; int x,y; x = m++ * 2; y = --n * 2;

Operadores de Incremento e Decremento Qual é o valor de cada variável no final do programa? x = 20 y = 22 m = 11 n = 11 int m = 10, n = 12; int x,y; x = m++ * 2; y = --n * 2;

Relacionais Operadores Relacionais e Lógicos Comparam dois valores Resultado é 0 (falso) ou 1 (verdadeiro) Linguagem C NÃO possui tipo booleano Atenção: Arduino possui um tipo boolean Menor que ( < ) Maior que ( > ) Menor ou igual que ( <= ) Maior ou igual que ( >= ) Igual a ( == ) Diferente de (!= )

Operadores Relacionais e Lógicos Operadores lógicos Operador E ( && ) AND Operador OU ( ) OR Operador de Negação (! ) NOT Avaliação da esquerda para a direita Avaliação para quando o resultado pode ser conhecido Exemplo: Se c=23 e d =30, a expressão (c < 20) && ( d >c ) já retorna 0 na expressão (c < 20)

Operadores Relacionais e Lógicos Quais são os valores de w, x, y e z? int a = 50, b = 70, c = 80; int w,x,y,z; w = ( a > 50 ) ( c == 80); x = ( a > 100) && ( c < 90); y =!(( a <= 50 ) && ( c < 85)); z = ( w!= x);

Operadores Relacionais e Lógicos Quais são os valores de w, x, y e z? w = 1 x = 0 y = 0 z = 1 int a = 50, b = 70, c = 80; int w,x,y,z; w = ( a > 50 ) ( c == 80); x = ( a > 100) && ( c < 90); y =!(( a <= 50 ) && ( c < 85)); z = ( w!= x);

Tamanho da Variável sizeof() Retorna um inteiro com o tamanho (em bytes) de uma variável Utilizaremos mais tarde para alocação dinâmica de memória

Tamanho da Variável É possível aplicar sizeof em uma variável ou no próprio tipo No fim do programa: tamanhoa = 4 tamanhob = 8 tamanhoatipo = 4 tamanhobtipo = 8 int a,tamanhoa,tamanhob; double b; int tamanhoatipo,tamanhobtipo; tamanhoa = sizeof(a); tamanhob = sizeof(b); tamanhoatipo = sizeof(int); tamanhobtipo = sizeof(double);

Conversão de Tipo Em C há conversão automática de tipo Ex: int a = 3.5 ; a será igual a 3 Compilador pode emitir advertências (warnings) Conversor de tipo (type cast) pode explicitamente converter variáveis Compilador não emite advertências Conversor para inteiro int a,b; a = (int) 3.5; b = (int) 3.5 % 2;

Entrada e Saída Básicas Utilizam a biblioteca padrão do C stdio.h Mais detalhes da biblioteca serão mostrados em aulas futuras #include <stdio.h> Inclusão do arquivo de cabeçalho da biblioteca padrão. Mais informações sobre cabeçalhos serão fornecidas na aula de Funções!! float h; /* Captura a altura em metros */ printf( Digite a altura em metros ); scanf( %f,&h); printf( Altura: %g metros\n,h);

Entrada e Saída Básicas Utilizam a biblioteca padrão do C stdio.h Mais detalhes da biblioteca serão mostrados em aulas futuras #include <stdio.h> float h; Função de Saída /* Captura a altura em metros */ printf( Digite a altura em metros ); scanf( %f,&h); printf( Altura: %g metros\n,h);

Entrada e Saída Básicas Utilizam a biblioteca padrão do C stdio.h Mais detalhes da biblioteca serão mostrados em aulas futuras #include <stdio.h> float h; Função de Entrada /* Captura a altura em metros */ printf( Digite a altura em metros ); scanf( %f,&h); printf( Altura: %g metros\n,h);

Entrada e Saída Básicas Utilizam a biblioteca padrão do C stdio.h Mais detalhes da biblioteca serão mostrados em aulas futuras #include <stdio.h> float h; No Arduino a Entrada e Saída são realizadas de formas distintas, vistas mais tarde!! /* Captura a altura em metros */ printf( Digite a altura em metros ); scanf( %f,&h); printf( Altura: %g metros\n,h);

printf Possibilita saída de valores segundo um determinado formato printf (formato, lista de constantes/variáveis/expressões...); Formato -> cadeia de caracteres (string) Especificado entre aspas Especifica onde entra cada valor Especificadores de formato precedido por % Exemplo printf( Inteiro = %d Real = %g \n,33,5.3) Saída na tela: Inteiro = 33 Real = 5.3

printf Alguns especificadores de formato %c especifica um char %d especifica um int %u especifica um unsigned int %f especifica um double (ou float) %e especifica um double (ou float) no formato científico %g especifica um double (ou float) no formato mais apropriado (%f ou %e) %s especifica uma cadeia de caractere (string) String -> sequência de char %% - escreve o símbolo %

printf Alguns caracteres especiais \n Caractere de nova linha \t Caractere de tabulação \r Caractere de retrocesso \ Caractere \\ - Caractere \

printf Saída na Tela: Valor de H = 1.45 I = 2 J = 4 Tchau! #include <stdio.h> double h = 1.45; int i = 2 ; j = 4; printf( Valor de H = %g \n,h); printf( I = %d,i); printf( J = %d \n,j); printf( Tchau! );

scanf Permite capturar valores via teclado e armazená-los em variáveis scanf (formato, lista de endereços das variáveis...); Especificadores de formato semelhantes ao do printf %c especifica um char %d especifica um int %u especifica um unsigned int %f,%e,%g especifica um float Especificadores diferentes do printf para os tipos float e double %lf,%le,%lg especifica um double formato científico %s especifica uma cadeia de caractere (string)

scanf Formato deve ser seguido pelo endereço da variável E não pelo conteúdo da variável como no printf Especificador de endereço & n se refere ao conteúdo de n &n se refere ao endereço da variável n na memória Detalhado na aula sobre ponteiro (aula de Funções) #include <stdio.h> Função termina a leitura de um número quando ENTER é teclado após a inserção do número int n; printf( Digite um número\n ); scanf ( %d, &n);

/* Programa para converter altura em metros para pés e pol*/ #include <stdio.h> int f; /* número de pés */ float p; /* número de polegadas */ float h = 1.45f; /* altura em metros */ /* Captura a altura em metros */ printf( Digite a altura em metros ); scanf( %f,&h); /* Calcula a altura em pés e polegadas */ h = 100*h; f = (int) (h/30.48); p = (h-f*20.48)/2.54; /* Exibe a altura convertida */ printf( Altura: %d pés %f polegadas\n,f,p);

Parte 1 Programação (linguagem C) Controle de fluxo

Tomada de Decisão Comando if Estrutura básica para tomada de decisões em C if (expr) { bloco de comandos 1... Se expr!= 0, o bloco de comandos 1 será executado

Tomada de Decisão Comando if Estrutura básica para tomada de decisões em C if (expr) { bloco de comandos 1... else { bloco de comandos 2 Se expr!= 0, o bloco de comandos 1 será executado Senão, o bloco de comandos 2 será executado

Tomada de Decisão Exemplo #include <stdio.h> int a; printf( Digite um numero inteiro\n ); scanf( %d,&a); if (a%2 == 0){ printf( Par!\n ); else { printf( Impar!\n );

Tomada de Decisão Exemplo #include <stdio.h> int a; printf( Digite um numero inteiro\n ); scanf( %d,&a); if (a%2 == 0){ printf( Par!\n ); else { printf( Impar!\n ); Lembrem-se da indentação!! Ela não é obrigatória mas deixa o código mais claro!!!

Tomada de Decisão Exemplo #include <stdio.h> int a; printf( Digite um numero inteiro\n ); scanf( %d,&a); if (a%2 == 0){ printf( Par!\n ); else { printf( Impar!\n ); Péssima escolha de nome! Nomes devem fazer sentido! (aqui na aula serão utilizados nome assim para deixar o código mais conciso). Sugestão de nome: numeroinserido

Tomada de Decisão Comandos if podem ser aninhados #include <stdio.h> int a,b; printf( Digite dois números\n ); scanf( %d%d,&a,&b); if ((a >= 0) && (b >= 0)){ printf( Os dois sao positivos ou zero!\n ); if ((a == 0) (b == 0)) { printf( Um deles eh zero!\n ); else { printf( Um deles eh negativo!\n );

Tomada de Decisão Quando há apenas 1 comando associado ao if, não é necessária a criação dos blocos ({...) #include <stdio.h> int a; printf( Digite um numero inteiro ); scanf( %d,&a); if (a%2 == 0) printf( Par!\n ); else printf( Impar!\n ); Isso pode gerar confusão quando tem um if dentro de outro if. Nesse caso, é melhor usar as chaves!

Escada if-else-if Tomada de Decisão /*Decisao sobre a temperatura (versao 3)*/ #include <stdio.h> int temp; printf( Digite a temperatura: \n ); scanf( %d,&temp); if (temp < 10) printf( Temperatura Muito Fria!\n ); else if (temp < 20) printf( Temperatura Fria!\n ); else if (temp < 30) printf( Temperatura Agradavel!\n ); else printf( Temperatura Muito Quente!\n );

Estruturas de Bloco Declarações de variáveis podem ocorrer no início do corpo da função ou no início de um bloco Variável só existe dentro do bloco ou função #include <stdio.h> int temp; printf( Digite a temperatura: ); scanf( %d,&temp); Início de função if (temp < 30){ Início de bloco int teste; teste = temp; printf( Temperatura Agradavel!\n ); /*Variavel teste nao existe neste ponto do programa temp += 1;

Estruturas de Bloco Declarações de variáveis podem ocorrer no início do corpo da função ou no início de um bloco Variável só existe dentro do bloco ou função #include <stdio.h> int temp; printf( Digite a temperatura: ); scanf( %d,&temp); if (temp < 30){ int teste; teste = temp; printf( Temperatura Agradavel!\n ); Boa prática de programação: declarar variáveis o mais próximas possível de seus usos /*Variavel teste nao existe neste ponto do programa temp += 1;

Construções com laços Procedimentos iterativos são muito comuns em programas computacionais Exemplo: Cálculo do fatorial n! n! = n x (n-1) x (n-2) x (n-3) 3 x 2 x 1 0! = 1 Podemos fazer esse cálculo utilizando um laço while (podemos fazer também com recursividade, mas isso é assunto para outra aula!)

Construções com laços Laço while Bloco é executado se expr for diferente de zero Ao final do bloco, expr volta a ser avaliada Bloco é executado repetidamente até expr assumir valor zero while (expr) { bloco de comandos...

Construções com laços Complete o programa abaixo para receber do usuário um número inteiro n e imprimir seu fatorial Utilizando while #include <stdio.h>... int n, fatorial; printf( Digite um numero inteiro nao negativo: ); scanf( %d,&n); /* calcula fatorial */... printf ( Fatorial = %d :\n,fatorial);

Construções com laços #include <stdio.h> int i, n, fatorial; printf( Digite um numero inteiro nao negativo: ); scanf( %d,&n); /* calcula fatorial */ fatorial = 1; i = 1; while ( i <= n ) { fatorial *= i; i++; printf ( Fatorial = %d :\n,fatorial);

Construções com laços Laço for for (exprinicialização; exprcondição; exprincremento){ bloco de comandos... exprinicialização while (exprcondição) { bloco de comandos... exprincremento

Construções com laços Como alterar o programa de cálculo de fatorial para utilizar for ao invés de while?

Construções com laços #include <stdio.h> int i, n, fatorial; printf( Digite um numero inteiro nao negativo: ); scanf( %d,&n); /* calcula fatorial */ for ( fatorial = 1, i = 1 ; i <= n ; i++ ) { fatorial *= i; printf ( Fatorial = %d :\n,fatorial);

Construções com laços #include <stdio.h> int i, n, fatorial; printf( Digite um numero inteiro nao negativo: ); scanf( %d,&n); /* calcula fatorial */ for ( fatorial = 1, i = 1 ; i <= n ; i++ ) { fatorial *= i; printf ( Fatorial = %d :\n,fatorial); Reparem que posso usar a vírgula para inicializar mais de uma variável!

Construções com laços #include <stdio.h> int i, n, fatorial; printf( Digite um numero inteiro nao negativo: ); scanf( %d,&n); /* calcula fatorial */ for ( fatorial = 1, i = 1 ; i <= n ; i++ ) { fatorial *= i; printf ( Fatorial = %d :\n,fatorial); Também poderia usar a vírgula no incremento. E na condição?

Construções com laços #include <stdio.h> int i, n, fatorial; printf( Digite um numero inteiro nao negativo: ); scanf( %d,&n); /* calcula fatorial */ for ( fatorial = 1, i = 1 ; i <= n ; i++ ) { fatorial *= i; printf ( Fatorial = %d :\n,fatorial); Na condição devo formar estruturas com operadores lógicos Ex: ((i <= n) && (j < 30))

Construções com laços Laço do-while Bloco é executado inicialmente independentemente das condições Ao final do bloco, expr é avaliada Bloco é executado repetidamente até expr assumir valor zero do { bloco de comandos... while (expr)

Construções com laços Interrupções com break e continue Interrupção antecipada de um laço break: interrompe e termina a execução do laço #include <stdio.h> int i; for ( i = 0 ; i < 10 ; i++ ) { if (i == 5) break; printf ( %d,i); printf ( fim \n ); Saída: 0 1 2 3 4 fim

Construções com laços Interrupções com break e continue Interrupção antecipada de um laço continue: interrompe e termina a execução do laço e passa para a próxima iteração #include <stdio.h> int i; for ( i = 0 ; i < 10 ; i++ ) { if (i == 5) continue; printf ( %d,i); printf ( fim \n ); Saída: 0 1 2 3 4 6 7 8 9 fim

Construções com laços Qual é a saída do programa abaixo? #include <stdio.h> int i = 0; while ( i < 10) { if (i == 5) continue; printf ( %d,i); i++; printf ( fim \n );

Construções com laços Qual é a saída do programa abaixo? #include <stdio.h> int i = 0; while ( i < 10) { if (i == 5) continue; printf ( %d,i); i++; printf ( fim \n ); O programa nunca termina! Use com cuidado o comando continue

Construções com laços Seleção com o comando switch switch (expr) { case op1:... /*Comandos executados se expr == op1*/ break; case op2:... /*Comandos executados se expr == op2*/ break; case op3:... /*Comandos executados se expr == op3*/ break; default:... /*executado se expr for diferente de todos*/ break;...

Construções com laços Seleção com o comando switch op1, op2, op3, etc. devem ser números inteiros ou caracteres Comandos seguintes ao caso verdadeiro são executados até encontrar um break Bloco default é opcional e é executado se expr for diferente de todos os casos enumerados

#include <stdio.h> float num1, num2; char op; printf ( Digite: numero op numero \n ); scanf ( %f %c %f,&num1,&op,&num2); switch (op) { case + : printf ( = %f\n, num1+num2); break; case - : printf ( = %f\n, num1-num2); break; case * : printf ( = %f\n, num1*num2); break; case / : printf ( = %f\n, num1/num2); break; default: printf ( Operador Invalido\n ); break;

Atividades de fixação Rodar os exemplo da aula no Dev C++ IDE para desenvolver programas em C no PC http://sourceforge.net/projects/orwelldevcpp/files/la test/download