A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Farias José Eustáquio Rangel de Queiroz Roberto Medeiros de.

Apresentações semelhantes


Apresentação em tema: "DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Farias José Eustáquio Rangel de Queiroz Roberto Medeiros de."— Transcrição da apresentação:

1 rangel@dsc.ufpb.br DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Farias José Eustáquio Rangel de Queiroz Roberto Medeiros de Farias Carga Horária: 60 h

2 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 2 Tópicos 4.1Introdução 4.2Fundamentos da Repetição 4.3Repetição Controlada por Contador For 4.4Estrutura de Repetição For For 4.5Estrutura For : Notas e Observações For 4.6Exemplos de Uso da Estrutura For Switch 4.7Estrutura de Seleção Múltipla Switch Do/While 4.8Estrutura de Repetição Do/While BreakContinue 4.9Instruções Break e Continue 4.10Operadores Lógicos === 4.11Confusão entre os Operadores de Igualdade ( == ) e de Atribuição ( = ) 4.12Operadores Bit-a-Bit 4.13Resumo de Programação Estruturada Tópicos 4.1Introdução 4.2Fundamentos da Repetição 4.3Repetição Controlada por Contador For 4.4Estrutura de Repetição For For 4.5Estrutura For : Notas e Observações For 4.6Exemplos de Uso da Estrutura For Switch 4.7Estrutura de Seleção Múltipla Switch Do/While 4.8Estrutura de Repetição Do/While BreakContinue 4.9Instruções Break e Continue 4.10Operadores Lógicos === 4.11Confusão entre os Operadores de Igualdade ( == ) e de Atribuição ( = ) 4.12Operadores Bit-a-Bit 4.13Resumo de Programação Estruturada Introdução à Programação

3 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 3 4.1Introdução  Tópicos abordados  Estruturas adicionais de controle de repetição  For  Do/while switch  Estrutura de seleção múltipla switch break  Instrução break  Usada para sair imediata e rapidamente de certas estruturas de controle continue  Instrução continue  Usada para saltar o restante do corpo de uma estrutura de repetição, procedendo com a próxima iteração do laço  Tópicos abordados  Estruturas adicionais de controle de repetição  For  Do/while switch  Estrutura de seleção múltipla switch break  Instrução break  Usada para sair imediata e rapidamente de certas estruturas de controle continue  Instrução continue  Usada para saltar o restante do corpo de uma estrutura de repetição, procedendo com a próxima iteração do laço

4 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 4 4.2Fundamentos da Repetição I  Laço  Grupo de instruções que o computador executa repetidamente enquanto alguma condição permanece verdadeira  Repetição controlada por contador  Repetição definida  Conhecimento do número de vezes de execução do laço  Uso de variável de controle  Contagem do número de repetições  Laço  Grupo de instruções que o computador executa repetidamente enquanto alguma condição permanece verdadeira  Repetição controlada por contador  Repetição definida  Conhecimento do número de vezes de execução do laço  Uso de variável de controle  Contagem do número de repetições

5 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 5 4.2Fundamentos da Repetição II  Repetição controlada por sentinela  Repetição indefinida  Uso  Falta de conhecimento prévio do número de repetições  Valor da sentinela  Término dos dados  Repetição controlada por sentinela  Repetição indefinida  Uso  Falta de conhecimento prévio do número de repetições  Valor da sentinela  Término dos dados

6 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 6 4.3Fundamentos da Repetição Controlada por Contador I  Exigências da repetição controlada por contador  Nome de uma variável de controle (ou contador de laço)  Valor inicial da variável de controle  Condição de teste do valor final da variável de controle (i.e. se o laço deve continuar)  Incremento (ou decremento) para a alteração da variável de controle a execução do laço (iteração)  Exigências da repetição controlada por contador  Nome de uma variável de controle (ou contador de laço)  Valor inicial da variável de controle  Condição de teste do valor final da variável de controle (i.e. se o laço deve continuar)  Incremento (ou decremento) para a alteração da variável de controle a execução do laço (iteração)

7 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 7  Exemplo int contador = 1; // inicialização while (contador <= 10) { // condição de repetição printf( "%d\n", contador ); ++contador; // incremento }  Declaração int contador = 1;  Fornecimento do nome contador para a variável  Declaração de um tipo (inteiro) para a variável  Reserva de espaço para armazenamento da variável na memória  Definição do valor inicial da variável como 1  Exemplo int contador = 1; // inicialização while (contador <= 10) { // condição de repetição printf( "%d\n", contador ); ++contador; // incremento }  Declaração int contador = 1;  Fornecimento do nome contador para a variável  Declaração de um tipo (inteiro) para a variável  Reserva de espaço para armazenamento da variável na memória  Definição do valor inicial da variável como 1 4.3Fundamentos da Repetição Controlada por Contador II

8 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 8 for 4.4 Estrutura de Repetição for I for  Formato geral dos laços for for ( inicialização ; teste_de_continuação_do_laço ; incremento ) instrução  Exemplo for (contador = 1; contador <= 10; contador++) printf("%d\n", contador);  Impressão dos inteiros de 1 a 10 for  Formato geral dos laços for for ( inicialização ; teste_de_continuação_do_laço ; incremento ) instrução  Exemplo for (contador = 1; contador <= 10; contador++) printf("%d\n", contador);  Impressão dos inteiros de 1 a 10 Sem ; Sem ponto-e-vírgula ( ; ) após a última expressão

9 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 9 forwhile  Possibilidade de eventual substituição de laços for por laços while while inicialização; while (teste_de_continuação_do_laço){ instrução; incremento; (ou decremento;) }  Inicialização e incremento  Possibilidade de uso de listas separadas por vírgulas  Exemplo for (i = 0, j = 0; j + i <= 10; j++, i++) printf("%d\n", j + i); forwhile  Possibilidade de eventual substituição de laços for por laços while while inicialização; while (teste_de_continuação_do_laço){ instrução; incremento; (ou decremento;) }  Inicialização e incremento  Possibilidade de uso de listas separadas por vírgulas  Exemplo for (i = 0, j = 0; j + i <= 10; j++, i++) printf("%d\n", j + i); for 4.4 Estrutura de Repetição for II Separação por vírgula (, )

10 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 10 for 4.5Estrutura for : Notas e Observações I  Expressões Aritméticas  Possibilidade de inclusão de expressões aritméticas à inicialização, condição de continuação do laço e ao incremento/decremento  Se x igual a 2 e y igual a 10 for (j = x; j <= 4 * x * y; j += y / x é equivalente a for (j = 2; j <= 80; j += 5  Expressões Aritméticas  Possibilidade de inclusão de expressões aritméticas à inicialização, condição de continuação do laço e ao incremento/decremento  Se x igual a 2 e y igual a 10 for (j = x; j <= 4 * x * y; j += y / x é equivalente a for (j = 2; j <= 80; j += 5

11 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 11 for 4.5Estrutura for : Notas e Observações II for  Notas sobre a estrutura for  Incremento pode ser negativo (decremento)  Se a condição de continuação do laço é inicialmente falsa for  O corpo da estrutura for não é realizada for  A execução prossegue com a próxima instrução após a estrutura for  Variável de Controle  Freqüentemente (mas não necessariamente) impressa ou usada dentro do corpo for  Notas sobre a estrutura for  Incremento pode ser negativo (decremento)  Se a condição de continuação do laço é inicialmente falsa for  O corpo da estrutura for não é realizada for  A execução prossegue com a próxima instrução após a estrutura for  Variável de Controle  Freqüentemente (mas não necessariamente) impressa ou usada dentro do corpo

12 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 12 for 4.5Estrutura for : Notas e Observações III 01 /* total com for */ 02 #include 03 04 int main() 05 { 06 int total = 0, numero; 07 08 for (numero = 2; numero <= 100; numero += 2) 09 total += numero; 10 11 printf( “A total eh %d\n", total ); 12 13 return 0; 15 } A total eh 2550

13 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 13 switch 4.7Estrutura de Seleção Múltipla switch I  Switch  Uso em contextos de testes separados para cada um dos valores passíveis de serem assumidos por uma variável ou expressão  Decisões múltiplas  Formato casedefault  Série de rótulos case e um rótulo opcional default switch (valor) { case '1':ações case '2':ações default:ações }  break;  break;  Abandono da estrutura  Switch  Uso em contextos de testes separados para cada um dos valores passíveis de serem assumidos por uma variável ou expressão  Decisões múltiplas  Formato casedefault  Série de rótulos case e um rótulo opcional default switch (valor) { case '1':ações case '2':ações default:ações }  break;  break;  Abandono da estrutura

14 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 14 switch  Fluxograma da estrutura switch switch 4.7Estrutura de Seleção Múltipla switch II case b case a ações default case z ações do case a break ações do case b break ações do case z break V V V F F F

15 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 15 01 Contagem de conceitos */ 02 #include 03 04 int main() 05 { 06 int conceito; 07 int contaA = 0, contaB = 0, contaC = 0, 08 contaD = 0, contaF = 0; 09 10 printf("Entre com os conceitos.\n" ); 11 printf("Entre com o caractere EOF para o final das entradas.\n"); 12 while ((conceito = getchar()) != EOF) { 13 switch (conceito) { /* switch aninhado em um while */ 14 case 'A': case 'a': /* conceito foi A maiúsculo ou minúsculo */ 15 ++contaA; /* incremento do contador de A */ 16 break; 17 case 'B': case 'b': /* conceito foi B maiúsculo ou minúsculo */ 18 ++contaB; /* incremento do contador de B */ 19 break; 20 case 'C': case 'c': /* conceito foi C maiúsculo ou minúsculo */ 21 ++contaC; /* incremento do contador de C */ 22 break; 23 case 'D': case 'd': /* conceito foi D maiúsculo ou minúsculo */ 24 ++contaD; /* incremento do contador de D */ 25 break; switch 4.7Estrutura de Seleção Múltipla switch III

16 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 16 26 case ‘F': case ‘f': /* conceito foi B maiúsculo ou minúsculo */ 27 ++contaF; /* incremento do contador de B */ 28 break; 29 default: /* demais conceitos */ 30 printf( “Fornecido um conceito incorreto." ); 31 printf( " Entre com um novo conceito.\n" ); 32 break; 33 } 34 printf( "\nTotais para cada letra de conceito sao:\n" ); 35 printf( "A: %d\n", contaA ); 36 printf( "B: %d\n", contaB ); 37 printf( "C: %d\n", contaC ); 38 printf( "D: %d\n", contaD ); 39 printf( "F: %d\n", contaF); 40 return 0; 41 } switch 4.7Estrutura de Seleção Múltipla switch IV

17 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 17 Entre com os conceitos. Entre com o caractere EOF para o final das entradas. ABCCADFCE Fornecido um conceito incorreto. Entre com um novo conceito. DAB Totais para cada letra de conceito sao: A: 3 B: 2 C: 3 D: 2 F: 1 Entre com os conceitos. Entre com o caractere EOF para o final das entradas. ABCCADFCE Fornecido um conceito incorreto. Entre com um novo conceito. DAB Totais para cada letra de conceito sao: A: 3 B: 2 C: 3 D: 2 F: 1  Resultado switch 4.7Estrutura de Seleção Múltipla switch V

18 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 18 do/while 4.8Estrutura de Repetição do/while I do/while  A estrutura de repetição do/while while  Similar à estrutura do while  Teste da condição para repetição  Após a execução do corpo do laço  Realização das ações  Pelo menos uma vez  Formato do { instrução; } while (condição); do/while  A estrutura de repetição do/while while  Similar à estrutura do while  Teste da condição para repetição  Após a execução do corpo do laço  Realização das ações  Pelo menos uma vez  Formato do { instrução; } while (condição);

19 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 19  Exemplo int contador = 1; do { printf("%d ", contador); } while (++contador <= 10);  Resultado  Impressão dos inteiros de 1 a 10  Exemplo int contador = 1; do { printf("%d ", contador); } while (++contador <= 10);  Resultado  Impressão dos inteiros de 1 a 10 do/while 4.8Estrutura de Repetição do/while II

20 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 20 do/while  Fluxograma da estrutura de repetição do/while do/while 4.8Estrutura de Repetição do/while III ações condição V F

21 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 21 1 2 3 4 5 6 7 8 9 10 01 /* Uso da estrutura de repetição do/while */ 02 #include 03 04 int main() 05 { 06 int contador = 1; 07 do { 08 printf( "%d ", contador ); 09 } while (++contador <= 10); 10 return 0; 14 } do/while 4.8Estrutura de Repetição do/while IV

22 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 22  Break whilefor do/whileswitch  Saída imediata de uma estrutura while, for, do/while ou switch  Continuação da execução do programa a partir da primeira instrução após a estrutura break  Usos comuns da instrução break  Saída prematura de um laço switch  Desconsideração do restante de uma estrutura switch  Break whilefor do/whileswitch  Saída imediata de uma estrutura while, for, do/while ou switch  Continuação da execução do programa a partir da primeira instrução após a estrutura break  Usos comuns da instrução break  Saída prematura de um laço switch  Desconsideração do restante de uma estrutura switch breakcontinue 4.9 Instruções break e continue I

23 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 23  Continue whilefordo/while  Desconsideração das instruções restantes do corpo de uma estrutura while, for ou do/while  Prosseguimento com a próxima iteração do laço  whiledo/while  while e do/while  Avaliação do teste de continuação do laço imediatamente após a execução da instrução continue  For  Execução das expressões de incremento, após o que ocorre a avaliação do teste de continuação do laço  Continue whilefordo/while  Desconsideração das instruções restantes do corpo de uma estrutura while, for ou do/while  Prosseguimento com a próxima iteração do laço  whiledo/while  while e do/while  Avaliação do teste de continuação do laço imediatamente após a execução da instrução continue  For  Execução das expressões de incremento, após o que ocorre a avaliação do teste de continuação do laço breakcontinue 4.9 Instruções break e continue II

24 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 24 12 3 4 5 6 7 8 9 10 Continue eh usado para saltar a impressao do 5 12 3 4 5 6 7 8 9 10 Continue eh usado para saltar a impressao do 5 01 /*Uso da instrução continue em uma estrutura for */ 02 #include 03 04 int main() 05 { 06 int x; 07 for (x = 1; x <= 10; x++) { 08 if (x == 5) 09 continue; /* ignora o código restante em um laço somente se x=5*/ 10 printf("%d ", x); 11 } 12 printf("\nContinue eh usado para saltar a impressao do 5\n" ); 13 return 0; 14 } breakcontinue 4.9 Instruções break e continue III

25 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 25 4.10 Operadores Lógicos I  && ( E lógico )  Retorna verdadeiro se ambas as condições são verdadeiras  || ( OU lógico )  Retorna verdadeiro pelo menos uma das condições são verdadeiras  ! ( NÃO lógico, negação lógica)  Inverte a verdade/falsidade de sua condição  Operador unário, tem um único operando  && ( E lógico )  Retorna verdadeiro se ambas as condições são verdadeiras  || ( OU lógico )  Retorna verdadeiro pelo menos uma das condições são verdadeiras  ! ( NÃO lógico, negação lógica)  Inverte a verdade/falsidade de sua condição  Operador unário, tem um único operando

26 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 26 4.10 Operadores Lógicos II  Uso típico como condições em laços ExpressãoResultado verdadeiro && falso falso verdadeiro || falso verdadeiro !falso verdadeiro

27 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 27 Uso de operadores lógicos  Exercício 1 – Uso de operadores lógicos  Dado o programa em C a seguir  Analise o código e descreva o funcionamento do programa em um diagrama de fluxo Continuar (1 = SIM, 0 = NAO)?  Observe que o programa não discrimina a primeira interação do usuário com as possíveis interações seguintes, exibindo sempre a mensagem: Continuar (1 = SIM, 0 = NAO)? Introduza novas linhas de código de modo a contornar este problema. Uso de operadores lógicos  Exercício 1 – Uso de operadores lógicos  Dado o programa em C a seguir  Analise o código e descreva o funcionamento do programa em um diagrama de fluxo Continuar (1 = SIM, 0 = NAO)?  Observe que o programa não discrimina a primeira interação do usuário com as possíveis interações seguintes, exibindo sempre a mensagem: Continuar (1 = SIM, 0 = NAO)? Introduza novas linhas de código de modo a contornar este problema. 4.10 Operadores Lógicos III

28 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 28 4.10 Operadores Lógicos IV #include #include main(){ int resp,i,n; float total; clrscr(); do { do { printf("\nContinuar (1 = SIM, 0 = NAO)? "); scanf("%d", &resp); if((resp==0)||(resp==1)){ if (resp) { printf("Digite o valor de n: "); scanf("%d", &n); total = 0.0; for(i = n; i > 0; i--) total += 1/((float) i * (float) i); printf("total = %f\n", total);} else printf("Programa finalizado!");} else break;} while (resp); getch(); return 0; }

29 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 29  Erro perigoso!!!  Comumente não causa erro de sintaxe  Qualquer expressão que produz um valor pode ser usado em estruturas de controle  Valores diferentes de zero são verdadeiros, valores zero são falsos  Exemplo de uso do operador de igualdade ( == ) if (codigo_de_pagamento == 4) printf(“Você obteve um bônus!\n");  Verificação de codigo_de_pagamento, se ele é um 4 então é premiado com um bônus  Erro perigoso!!!  Comumente não causa erro de sintaxe  Qualquer expressão que produz um valor pode ser usado em estruturas de controle  Valores diferentes de zero são verdadeiros, valores zero são falsos  Exemplo de uso do operador de igualdade ( == ) if (codigo_de_pagamento == 4) printf(“Você obteve um bônus!\n");  Verificação de codigo_de_pagamento, se ele é um 4 então é premiado com um bônus Igualdade == Atribuição = 4.11Confusão entre os Operadores de Igualdade ( == ) e Atribuição ( = ) I

30 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 30  Exemplo de substituição de == por = if (codigo_de_pagamento = 4) printf(“Voce obteve um bonus!\n");  Atribuição do valor 4 a codigo_de_pagamento  4 é diferente de zero; Assim, a expressão é verdadeira e sempre haverá a premiação com o bônus, não importando qual era o valor de codigo_de_pagamento  Erro de lógica, não erro de sintaxe  Exemplo de substituição de == por = if (codigo_de_pagamento = 4) printf(“Voce obteve um bonus!\n");  Atribuição do valor 4 a codigo_de_pagamento  4 é diferente de zero; Assim, a expressão é verdadeira e sempre haverá a premiação com o bônus, não importando qual era o valor de codigo_de_pagamento  Erro de lógica, não erro de sintaxe Igualdade == Atribuição = 4.11Confusão entre os Operadores de Igualdade ( == ) e Atribuição ( = ) II

31 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 31  lvalues  lvalues (valores esquerdos)  Expressões que podem aparecer no lado esquerdo de uma equação  Seus valores podem ser alterados, assim como os nomes de variáveis  x = 4;  lvalues  lvalues (valores esquerdos)  Expressões que podem aparecer no lado esquerdo de uma equação  Seus valores podem ser alterados, assim como os nomes de variáveis  x = 4; Igualdade == Atribuição = 4.11Confusão entre os Operadores de Igualdade ( == ) e Atribuição ( = ) III

32 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 32  rvalues  rvalues (valores direitos)  Expressões que só podem aparecer no lado direito de uma equação  Constantes, tais como números  Não  Não se pode escrever 4 = x;  Deve-se  Deve-se escrever x = 4;  lvaluesrvalues  lvalues podem ser usados como rvalues, mas não o contrário  y = x;  rvalues  rvalues (valores direitos)  Expressões que só podem aparecer no lado direito de uma equação  Constantes, tais como números  Não  Não se pode escrever 4 = x;  Deve-se  Deve-se escrever x = 4;  lvaluesrvalues  lvalues podem ser usados como rvalues, mas não o contrário  y = x; Igualdade == Atribuição = 4.11Confusão entre os Operadores de Igualdade ( == ) e Atribuição ( = ) IV

33 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 33 Binário  Sistema Binário  Sistema de numeração de base 2 01  Disponibilidade de apenas 2 dígitos  0 e 1  Exemplo 1011 = 1.2 3 + 0.2 2 + 1.2 1 + 1.2 0 = 11  Bit  Bit  Dígito Binário  Representação eletrônica a partir de chaves (ligada/ desligada)  Byte  Byte  Agrupamento de 8 bits Binário  Sistema Binário  Sistema de numeração de base 2 01  Disponibilidade de apenas 2 dígitos  0 e 1  Exemplo 1011 = 1.2 3 + 0.2 2 + 1.2 1 + 1.2 0 = 11  Bit  Bit  Dígito Binário  Representação eletrônica a partir de chaves (ligada/ desligada)  Byte  Byte  Agrupamento de 8 bits 4.12 Operadores Bit-a-Bit I

34 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 34 Conversão de decimal para binário ou vice-versa  Exercício 2 – Conversão de decimal para binário ou vice-versa  Escrever um programa em C que receba do usuário um número inteiro positivo, representável em até 2 Bytes, e o converta do sistema decimal para binário ou vice-versa 102  Deverá ser permitida ao usuário a escolha da base de referência para a conversão – 10 ou 2  O programa deverá verificar, uma vez selecionada a base, se o número digitado pode ser convertido  O programa deverá incluir mensagens de erro elucidativas, a fim de instruir o usuário no processo de entrada dos dados Conversão de decimal para binário ou vice-versa  Exercício 2 – Conversão de decimal para binário ou vice-versa  Escrever um programa em C que receba do usuário um número inteiro positivo, representável em até 2 Bytes, e o converta do sistema decimal para binário ou vice-versa 102  Deverá ser permitida ao usuário a escolha da base de referência para a conversão – 10 ou 2  O programa deverá verificar, uma vez selecionada a base, se o número digitado pode ser convertido  O programa deverá incluir mensagens de erro elucidativas, a fim de instruir o usuário no processo de entrada dos dados 4.12 Operadores Bit-a-Bit II

35 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 35 4.12 Operadores Bit-a-Bit III Bit-a-Bit  Operadores Bit-a-Bit  Operações em nível de números como padrões de bits xy ANDORXORNOT  Para cada bit, x e y  AND, OR, XOR e NOT Bit-a-Bit  Operadores Bit-a-Bit  Operações em nível de números como padrões de bits xy ANDORXORNOT  Para cada bit, x e y  AND, OR, XOR e NOT xyANDORXORx&yx|yx^y 00000 01011 10011 11110 xNOT~y 01 10 UNÁRIO Operador UNÁRIO

36 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 36 4.12 Operadores Bit-a-Bit IV  Exemplos x0010010137 y11110110246 x&y 0010010036 x|y 11110111247 x^y 11010011211 ~x 11011010218

37 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 37 Lógicas Bit-a-Bit  Operações Lógicas versus Bit-a-Bit Lógicas  Operações Lógicas 37 && 246  1 37 || 246  1 ! 37  0 Bit-a-Bit  Operações Bit-a-Bit 37 & 246  36 37 | 246  247 ~ 37  218 Lógicas Bit-a-Bit  Operações Lógicas versus Bit-a-Bit Lógicas  Operações Lógicas 37 && 246  1 37 || 246  1 ! 37  0 Bit-a-Bit  Operações Bit-a-Bit 37 & 246  36 37 | 246  247 ~ 37  218 4.12 Operadores Bit-a-Bit IV

38 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 38 xb7b7 b6b6 b5b5 b4b4 b3b3 b2b2 b1b1 b0b0 28000111 00 x&28000 b4b4b4b4 b3b3b3b3 b2b2b2b2 00 227111000 11 x|227111 b4b4b4b4 b3b3b3b3 b2b2b2b2 11  Mascaramento e Configuração Máscaras 4.12 Operadores Bit-a-Bit V Bits configurados

39 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 39  Exemplo 1 - Redução de 256 níveis de cinza para 16 com máscara AND NceNceNceNceMáscara NcsNcsNcsNcs000000000 11110000 000000000 100000001000000000 ⇣⇣⇣⇣ 1500001111000000000 16000100000001000016 ⇣⇣⇣⇣ 31000111110001000016 32001000000010000032 ⇣⇣⇣⇣ 47001011110010000032 48001100000011000048 ⇣⇣⇣⇣ 4.12 Operadores Bit-a-Bit VI

40 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 40  Exemplo 1 – Resultado do mascaramento de bits sobre uma imagem digital 4.12 Operadores Bit-a-Bit VI Imagem original Imagem quantizada para 4 bits 256 16

41 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 41 << esquerda  Operador <<  Movimentação de padrões de bits para a esquerda 2  Deslocamento de 1 bit para a esquerda ⇒ Multiplicação do valor codificado por 2  Exemplo << esquerda  Operador <<  Movimentação de padrões de bits para a esquerda 2  Deslocamento de 1 bit para a esquerda ⇒ Multiplicação do valor codificado por 2  Exemplo x00001111 15 x<<10001111 030 x<<2001111 0060 x<<301111 000120 x<<41111 0000240 x<<5111 00000224 Impossibilidade de representação com 1 Byte 4.12 Operadores Bit-a-Bit VII

42 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 42 >> direita  Operador >>  Movimentação de padrões de bits para a direita 2  Deslocamento de 1 bit para a direita ⇒ Divisão do valor codificado por 2  Exemplo >> direita  Operador >>  Movimentação de padrões de bits para a direita 2  Deslocamento de 1 bit para a direita ⇒ Divisão do valor codificado por 2  Exemplo x1111111 0254 x<<101111111 127 x<<200111111 63 x<<300011111 31 x<<400001111 15 x<<500000111 7 4.12 Operadores Bit-a-Bit VIII

43 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 43  Programação Estruturada  Maior facilidade de compreensão, teste, depuração e alteração de programas  Regras para programação estruturada  Regras desenvolvidas pela comunidade de programação  Uso exclusivo de estruturas de controle com única entrada/única saída  Programação Estruturada  Maior facilidade de compreensão, teste, depuração e alteração de programas  Regras para programação estruturada  Regras desenvolvidas pela comunidade de programação  Uso exclusivo de estruturas de controle com única entrada/única saída 4.13Resumo de Programação Estruturada I

44 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 44  Regras 1.Ponto de Partida  Fluxograma mais simples 2.Substituição de qualquer retângulo (ação) por dois retângulos (ações) em seqüência if if/elseswitchwhiledo/whilefor 3.Substituição de qualquer retângulo (ação) por qualquer estrutura de controle (seqüência, if, if/else, switch, while, do/while ou for ) 4.Aplicação das regras 2 e 3 em qualquer ordem e múltiplas vezes  Regras 1.Ponto de Partida  Fluxograma mais simples 2.Substituição de qualquer retângulo (ação) por dois retângulos (ações) em seqüência if if/elseswitchwhiledo/whilefor 3.Substituição de qualquer retângulo (ação) por qualquer estrutura de controle (seqüência, if, if/else, switch, while, do/while ou for ) 4.Aplicação das regras 2 e 3 em qualquer ordem e múltiplas vezes 4.13Resumo de Programação Estruturada II

45 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 45 Regra 2  Regra 1  Início a partir do fluxograma mais simples  Regra 2  Substituição de qualquer retângulo por dois retângulos em seqüência 4.13Resumo de Programação Estruturada III

46 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 46 Regra 3  Regra 3  Substituição de qualquer retângulo por uma estrutura de controle 4.13Resumo de Programação Estruturada IV

47 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 47 4.13Resumo de Programação Estruturada V  Formas de controle de programas  Seqüência  Manipulação automática pelo compilador ifif/elseswitch  Seleção  if, if/else ou switch whiledo/whilefor  Repetição  while, do/while ou for  Possibilidade de combinação  Apenas de duas maneiras  Aninhamento (Regra 3)  Empilhamento (Regra 2)  Formas de controle de programas  Seqüência  Manipulação automática pelo compilador ifif/elseswitch  Seleção  if, if/else ou switch whiledo/whilefor  Repetição  while, do/while ou for  Possibilidade de combinação  Apenas de duas maneiras  Aninhamento (Regra 3)  Empilhamento (Regra 2)

48 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 48 4.13Resumo de Programação Estruturada VI  Formas de controle de programas if  Qualquer seleção  Possibilidade de reescrita como uma instrução if while  Qualquer repetição  Possibilidade de reescrita como uma instrução while  Formas de controle de programas if  Qualquer seleção  Possibilidade de reescrita como uma instrução if while  Qualquer repetição  Possibilidade de reescrita como uma instrução while

49 rangel@dsc.ufpb.br DSC/CCT/UFCG José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE CIÊNCIAS E TECNOLOGIA


Carregar ppt "DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Farias José Eustáquio Rangel de Queiroz Roberto Medeiros de."

Apresentações semelhantes


Anúncios Google