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

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

Prof. Stefano 1 PROGRAMAÇÃO EM LINGUAGEM C Prof. Stefano.

Apresentações semelhantes


Apresentação em tema: "Prof. Stefano 1 PROGRAMAÇÃO EM LINGUAGEM C Prof. Stefano."— Transcrição da apresentação:

1 Prof. Stefano 1 PROGRAMAÇÃO EM LINGUAGEM C Prof. Stefano

2 Histórico Estrutura de um programa Constantes e variáveis Operadores Declarações de Controle Exercícios 2

3 A primeira linguagem de programação de alto nível com real aceitação foi FORTRAN, na década de 50, para análise e resolução de problemas matemáticos; Em 1959 surgiu o COBOL, voltada para aplicações comerciais; A linguagem C foi desenvolvida em 1972, por Dennis Ritchie, para utilização com o sistema operacional UNIX; 3 Histórico

4 Estrutura básica de um programa em C: 4 Estrutura de um programa void main() { }

5 void main() { TRISB = 0x00; do { PORTB = 0; Delay_ms(500); PORTB= 255; Delay_ms(500); } while(1); } 5 Estrutura de um programa No ambiente do MikroC digite o programa abaixo

6 void main() { TRISB = 0x00; do { PORTB = 0; Delay_ms(500); PORTB= 255; Delay_ms(500); } while(1); } 6 Estrutura de um programa Identificando os elementos do programa Configura as portas Laço do....while(condição) Escreve 0 nas portas Espera 500 ms Escreve nas portas Espera 500 ms Início do programa

7 Exercício: Altere o programa para que os leds pares e ímpares pisquem alternadamente; 7 Estrutura de um programa em C

8 Constantes e variáveis Identificadores: São nomes arbitrários dados as funções, variáveis, constantes. Os identificadores podem ser 1 letras de A à Z, números de 0 à 9 e “_“(underline). Não pode começar com número. – Exemplos: Temperatura_media Temp _T1 Contador 8 1 – Depende de cada compilador

9 Constantes e variáveis Constantes: são elementos que tem um valor fixo, não podendo ser mudados durante a execução do programa; – Exemplo: π = 3, Em vez de escrever toda vez o número podemos nomear uma constante PI = 3, e durante programa utilizar PI; Variáveis: são elementos que permitem a alteração do seu valor durante a execução do programa. É recomendável que no início do programa seja atribuído um valor inicial a elas, que elas sejam inicializadas; – Exemplo: Calcule consumo médio de combustível de um automóvel. CONSUMO= KM/L 9

10 Em linguagem C as variáveis podem assumir diferentes tipos, de acordo com a sua utilização: 10 Tipos de variáveis TipoBitsFaixa unsigned char80 até 255 signed char8-128 até 127 unsigned short int80 até 255 signed short int8-128 até 127 unsigned int160 até signed int até unsigned long int320 até signed long int até float32± 1, E-38 até ± 6, E38 double32± 1, E-38 até ± 6, E38 long double32± 1, E-38 até ± 6, E38

11 Representação numérica: Decimal: não precisa de nenhuma representação especial, mas não pode começar com zero ou será considerado como base octal; Hexadecimal: começa com 0x (0X): Exemplo: 0x3F; Binário: começa com 0b (0B): Exemplo: 0b1100; 11 Tipos de variáveis

12 Operadores Operador é um símbolo que faz com que compilador execute alguma operação matemática ou lógica; Os principais operadores são aritméticos, de relação, lógicos e bit a bit; A seguir serão apresentados os principais elementos de cada operador. Este tópico será visto em maiores detalhes na linguagem de programação aplicado diretamente ao compilador utilizado; 12

13 Operadores Operador Aritmético 13 OperadorOperação realizada + Soma - Subtração * Multiplicação / Divisão % Resto da divisão + Incremento - Decremento

14 Exercício: Altere o programa anterior para que os leds sejam incrementados utilizando um contador; 14 Operadores void main() { unsigned char contador=0; TRISB = 0x00; PORTB=0; do { Delay_ms(500); PORTB= contador; contador++; Delay_ms(500); } while(1); } Qual o tempo total entre cada incremento?

15 Exercício: Altere o programa anterior para que os leds mostrem o resultado da operação matemática; 15 Operadores void main() { unsigned char soma=0; TRISB = 0x00; do { soma= /3 -3; //15 PORTB= soma; Delay_ms(1000); soma= (6*2 + 8)/ ; //42 PORTB= soma; Delay_ms(1000); } while(1); }

16 Operadores Operador de Relação: eles testam as relações nas expressões. Seu resultado é 1 se for verdadeiro ou 0 se for falso; 16 OperadorOperação realizada = Igual a ! = Não igual a > Maior que < Menor que > = Maior ou igual a < = Menor ou igual a

17 Operadores Exemplos de Operador de Relação: 4 = = 3; retorna 0 - FALSO 3 = = 3; retorna 1 - VERDADEIRO 7 > = 3; retorna 1 – VERDADEIRO 4 < = 3; retorna 0 - FALSO 4 ! = 3; retorna 1 – VERDADEIRO 4 > 3; retorna 1 – VERDADEIRO 17

18 Exercício: Altere o programa anterior para que quando o contador chegar em 255 o programa saia do laço e termine a execução ; 18 Operadores void main() { unsigned char contador=0; TRISB = 0x00; do { PORTB = 0; Delay_ms(500); PORTB= contador; contador++; Delay_ms(500); } while(contador < 255); }

19 Operadores Operadores lógicos: realizam operações lógicas nas expressões. Os operandos são considerados verdadeiros(1) ou falsos(0). Seu resultado é 1 se for verdadeiro ou 0 se for falso; 19 OperadorOperação realizada & AND | OR ! NOT (Negado)

20 Operadores Exemplos de Operador Lógico: a) (3 > 1) & & (2= = 2); 1 & & 1; resulta em 1 - verdadeiro b) (3 > 7) | | (2= = 2); 0 | | 1 ; resulta em 1 - verdadeiro c)!{(3 > 1) & & (2= = 2)} ; !{ 1 & & 1}; !{ 1} ; - resulta em 0 - falso 20

21 Operadores Operadores Bit a Bit: eles testam as relações dos operadores nas expressões bit a bit; 21 OperadorOperação realizada & AND | OR ^ XOR ~ NOT > SHIFT RIGHT,desloca bits a direita < SHIFT LEFT, desloca bits a esquerda

22 Operadores Exemplos de Operador Bit a Bit: a) v1= , v2=110011, v3 = v1 & v2; AND v1 = v2 = v3 = b) v1= , v2=010111, v3 = v1 | v2; OR v1 = v2 = v3 =

23 Exemplo: Implemente o programa abaixo e acompanhe a variação na saída de acordo com a variação na entrada; 23 Operadores void main() { TRISA = 0xFF; TRISB = 0x00; TRISC= 0x00; do { PORTB = PORTA & 0x0F; PORTC = PORTA && 0x0F; } while(1); }

24 Operadores Exemplos de Operador Bit a Bit: c) v1= , v2=110011, v3 = v1 ^ v2; XOR v1 = v2 = v3 = d) v1= , v2 = ~ v1 ; NOT v1 = v2 =

25 Exemplo: Implemente o programa abaixo e acompanhe a variação na saída; 25 Operadores void main() { TRISB = 0x00; do { PORTB = ~PORTB; Delay_ms(500); } while(1); }

26 Operadores Exemplos de Operador Bit a Bit: e) v1= , v2=v1 << 2; SHIFT LEFT (x 2) = ; <<1 v2 = ; <<2 f) v1= , v2=v1 >> 2; SHIFT RIGHT (÷ 2) = ; >> 1 v2 = ; >> 2 26

27 Implemente um programa que desloca os leds do PORTB para direita; 27 Operadores void main() { TRISB = 0x00; PORTB = 0xA0; do { PORTB = PORTB>>1; Delay_ms(100); } while(1); } Acompanhe a simulação para ver o que acontece com a saída

28 Exercício: Implemente um programa que desloca os leds do PORTB para a esquerda; 28 Operadores

29 O controle do fluxo normal de um programa é um poderoso recurso em qualquer linguagem de programação; A seguir veremos as diferentes formas de fazer este controle; 29 Controle de fluxo de um programa

30 Declaração de controle condicional IF IF THEN....ELSE SE......ENTÃO...SENÃO Ele é utilizado para executar um determinado comando se uma determinada condição for verdadeira. A opção ELSE não é obrigatória. 30 IF (true) THEN CommandsTrue ELSE CommandsFalse IF (verdadeiro) THEN ComandosVerdadeiro ELSE ComandosFalso

31 Caso 1: somente verdadeiro: 31 Controle de fluxo de um programa void main() { TRISB = 0x00; TRISA = 0xFF; do { if (PORTA.F0 = = 1) { PORTB = 0X0F; } Delay_ms(1000); PORTB = 0XF0 ; } while(1); } if (true) { CommandsTrue }

32 Exercício: Implemente um programa para que toda vez que uma entrada (PORTA.0) estiver sendo acionada (1) um contador é incrementado e o valor mostrado em PORTB. O intervalo de incremento no contador é de 300ms. 32 Controle de fluxo de um programa

33 Caso 2: com verdadeiro e falso: 33 Controle de fluxo de um programa void main() { TRISB = 0x00; TRISA = 0xFF; do { if (PORTA.0 = = 1) PORTB = 0X0F; else PORTB = 0XF0 ; } while(1); }; if (true) { CommandsTrue } else { CommandsFalse }

34 Exercício: Implemente um programa para que toda vez que uma entrada (PORTA.0) estiver sendo acionada (1) somente os leds pares de PORTB devem estar ligados, caso contrário os ímpares. 34 Controle de fluxo de um programa

35 Exercício: Implemente um programa que tenha um contador que é incrementado a cada 300 ms e seu valor mostrado na PORTB. Enquanto o valor do contador for menor que 50 a saída PORTC.0 fica em 1, caso contrário somente a saída PORTC.1 fica em Controle de fluxo de um programa

36 Desafio: Considere que na saída PORTB tenhamos 8 leds ligados. Elabore um programa para que somente 1 led esteja ligado e que o acendimento se desloque entre os 8 leds, de uma ponta para outra, em um movimento de ida e volta. O incremento no deslocamento deverá ser a cada 300 ms e em laço infinito. Utilize o IF para selecionar o sentido do deslocamento do led. 36 Controle de fluxo de um programa

37 Caso 3: IF aninhado: 37 Controle de fluxo de um programa if (true1) { Commands1 } else if(true2) { Commands2 } else if (true3) { Commands3 } else { Commands4 } true1 ? Commands1 N V true2 ? N V true3 ? N V Commands2 Commands3 Commands4

38 38 Controle de fluxo de um programa void main() { unsigned char contador=0; TRISB = 0x00; TRISC = 0x00; do { PORTB=contador; if (contador < 20) PORTC = 0X01; else if (contador < 40) PORTC = 0X03 ; else if (contador < 70) PORTC = 0X07 ; else PORTC = 0X0F ; contador++; } while(1); }

39 Exercício: Altere o programa anterior para que as saídas da PORTC (C.0, C.1 e C.2) tenha seu nível lógico alterado de acordo com a tabela abaixo. 39 Controle de fluxo de um programa ContadorC.0C.1C.2 Contador>

40 Desafio: A) Considere que na entrada PORTA tenhamos 8 chaves ligadas simbolizando os sensores de segurança de uma casa. Elabore um programa, utilizando o IF aninhado para testar os sensores, um de cada vez, para que, enquanto algum dos sensores estiver atuado (1) todos os leds da saída PORTB devem ficar ligados, caso contrário desligados. B) Implemente um programa para resolver o problema acima sem utilizar o IF aninhado. Compare os dois programas e avalie qual é a melhor solução. 40 Controle de fluxo de um programa

41 Declaração de controle condicional WHILE WHILE (true) { } ENQUANTO (verdadeiro) { } Faz a verificação da condição ANTES de executar o comando. Enquanto a condição permanecer verdadeira o(s) comando(s) é/são executados. 41 WHILE (true) { Comandos }

42 42 Controle de fluxo de um programa pergunta ? Comandos N V while(true) { Comandos }

43 Exemplo WHILE: 43 Controle de fluxo de um programa void main() { unsigned char contador=0; TRISB = 0x00; while(contador < 31) { PORTB = contador; Delay_ms(300); contador++; } Qual é o valor final que aparece na saída??

44 Controle de fluxo de um programa Exercício: Na esteira abaixo quando o sensor S1 for acionado por uma peça o motor M1 deve ser ligado e quando a peça acionar o sensor S2 o motor deve ser desligado. Implemente um programa em C que atenda o solicitado. 44 S1 M1 S2 S1 = PORTA.0 S2 = PORTA.1 M1 = PORTB.0

45 Resolução: 45 Controle de fluxo de um programa void main() { TRISB = 0x00; TRISA = 0xFF; do { while(PORTA.f0 = = 0); PORTB.f0 = 1; while(PORTA.f1 = = 0); PORTB.f0 = 1; } while(1); }

46 Controle de fluxo de um programa Exercício: Na esteira abaixo a peça é colocada na posição dada pelo sensor S1, e com isso o motor M1 é ligado, levando a peça até o sistema de aquecimento. Neste instante o motor M1 é desligado e a peça espera 3 segundos, sendo o motor M1 ligado novamente para levar a peça para o resfriamento, quando então o motor M1 é desligado novamente, aguardando agora 4 segundos neste estágio. Após decorrido o tempo o motor M1 é ligado novamente para levar a peça até a posição dada pelo sensor S4, quando o motor é desligado novamente. Implemente um programa em C que atenda o solicitado. 46 S1 = PORTA.0 S2 = PORTA.1 S3 = PORTA.2 S4 = PORTA.3 M1 = PORTB.0

47 Resolução: 47 Controle de fluxo de um programa

48 Declaração de controle condicional DO... WHILE DO { }WHILE (true) FAÇA{ } ENQUANTO (verdadeiro) Executa a ação ANTES de verificar a condução. Enquanto a condição permanecer verdadeira o(s) comando(s) é/são executados. 48 DO { Comandos }WHILE (true);

49 49 Controle de fluxo de um programa pergunta ? Comandos N V do { Comandos }while (true);

50 Exemplo: 50 Controle de fluxo de um programa void main() { unsigned char contador=0; TRISB = 0x00; do { PORTB= contador; contador++; Delay_ms(300); } while(contador < 31); }

51 Exemplo: 51 Controle de fluxo de um programa void main() { TRISB = 0x00; PORTB=0x01; do{ PORTB= PORTB<<1; delay_ms(300); } while(PORTB!=128); do { PORTB= PORTB>>1; delay_ms(300); } while(PORTB!=1); }while(1); }

52 EXERCÍCIOS DE REVISÃO 52 Exercícios de revisão

53 Exercício : No sistema abaixo quando uma peça é colocada na posição dada pelo sensor S1 o motor M1 é ligado, levando a peça até o sensor S2 e caindo na caixa de saída. Sabe-se que a caixa suporta até 20 peças. Implemente um contador(CONT) para que somente quando somente 20 peças caírem na caixa o motor M1 é desligado e a lâmpada L1 é ligada, alertando ao operador da necessidade de trocar a caixa. Implemente um algoritmo que atenda o solicitado. 53 S1 = PORTA.0 S2 = PORTA.1 M1 = PORTB.0 L1= PORTB.1

54 Resolução: 54 Exercícios de revisão

55 Exercício: No exercício anterior foi acrescentado o botão B1 no painel para que quando o operador trocar a caixa ele irá apertar o botão a lâmpada L1 irá apagar, o motor M1 é ligado novamente, o contador é zerado e o ciclo se inicia novamente. 55 S1 = PORTA.0 S2 = PORTA.1 B1= PORTA.2 M1 = PORTB.0 L1= PORTB.1

56 Resolução: 56 Exercícios de revisão

57 Exercício: No sistema de seleção da página seguinte quando uma caixa é colocada na posição dada pelo sensor S1 o motor M1 é ligado levando a caixa até o sensor S5, quando então é desligado. Implemente um programa para que de acordo com o tipo de caixa, dada pela figura e identificada no sistema através do acionamento dos sensores S2,S3 e S4, somente a lâmpada correspondente fique ligada. Esta lâmpada somente poderá ficar ligada até a caixa correspondente chegar ao sensor S5. O sistema é contínuo. 57

58 Exercícios de revisão 58 S1 = PORTA.0 S2 = PORTA.1 S3 = PORTA.2 S4 = PORTA.3 S5 = PORTA.4 M1= PORTB.0 L1= PORTB.1 L2= PORTB.2 L3= PORTB.3

59 Resolução: 59 Exercícios de revisão

60 60 REFERÊNCIAS Robert Schildt. C completo e total. User´s Manual MikroC Fábio Pereira. Programação em C Notas de aula do Prof. Stefano


Carregar ppt "Prof. Stefano 1 PROGRAMAÇÃO EM LINGUAGEM C Prof. Stefano."

Apresentações semelhantes


Anúncios Google