Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRenato de Barros Madeira Alterado mais de 9 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.