01/08/2011 PROGRAMAÇÃO EM LINGUAGEM C. Histórico

Documentos relacionados
Microcontroladores. Programação: fluxogramas, pseudocódigos e lógica. Prof. Daniel

Revisão C++ - Parte 1

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

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

Programação Básica em Arduino Aula 2

Linguagem C para Microcontroladores

Programação Orientada a Objetos

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

Introdução a JAVA. Variaveis, tipos, expressões, comandos e blocos

Linguagens de Programação I

Introdução a JAVA. Variáveis, tipos, expressões, comandos e blocos

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

Algoritmos II prof. Daniel Oliveira

4. Constantes. Constantes pré-definidas

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

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

Elementos Básicos. C# - Elementos básicos. Primeiro programa Tipos de dados Variáveis Constantes Expressões e operadores Controlo de fluxo Tabelas

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

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

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

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

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

Variáveis primitivas e Controle de fluxo

Programação Estruturada

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

1/50. Conceitos Básicos. Programa Básico

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

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

Revisão Linguagem C Parte 1

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

TÉCNICO DE INFORMÁTICA - SISTEMAS

3. Linguagem de Programação C

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

PIC - PROGRAMAÇÃO LINGUAGEM C. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

Binário para Decimal. Binário: = 19. Decimal:

C Operadores e Expressões

Linguagens de Programação

Introdução à Linguagem C++

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

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

Universidade Federal do Espírito Santo. Programação I Tipos de Dados Básicos - C Professora: Norminda Luiza

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

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

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

Aula 4 Estruturas de Controle

Linguagem C Operadora

Introdução à Programação

Laboratório de Programação II

Linguagem C Operadores

Cursos: Análise, Ciência da Computação e Sistemas de Informação Laboratório I - Prof. Aníbal Notas de aula 2 SISTEMAS NUMÉRICOS

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

Introdução a Computação

Programação Estruturada e Orientada a Objetos

Introdução à Linguagem C

Algoritmos I Aula 13 Linguagem de Programação Java

Algoritmos e Programação

Programação científica C++

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

Programação com Acesso a BD. Programação com OO Acesso em Java

Capítulo 7. Expressões e Sentenças de Atribuição

Operadores. Tipo de operadores. Aritméticos. Relacionais. Lógicos. Bit a bit. Cálculos aritméticos: soma, subtracção, multiplicação, divisão, etc.

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

Referências. Linguagem C. Tipos de variáveis em XC8. Tipos de variáveis. Tipos de variáveis em XC 8 Exemplo. Radicais numéricos em C

Objetivos MICROCONTROLADORES SOFTWARE PROGRAMAÇÃO (PARTE: 04) Programação em Linguagem C

Métodos Computacionais. Comandos Condicionais e de Repetição em C

Introdução a Linguagem C

3. Linguagem de Programação C

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

Arquitetura de Computadores I

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

Preparatório OBI. Prof. André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida. Aula 01 Introdução a C++

Programação de Computadores II

Operadores e Expressões: bit-a-bit e especiais

Transcrição:

PROGRAMAÇÃO EM LINGUAGEM C Prof. Stefano Histórico Estrutura de um programa Constantes e variáveis Declarações de Controle Exercícios 1 Prof. Stefano 2 Histórico A primeira linguagem de programação de alto nível comrealaceitaçãofoifortran,nadécadade50, 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; Estrutura de um programa Estrutura básica de um programa em C: void main() 3 4 Estrutura de um programa No ambiente do MikroC digite o programa abaixo do PORTB = 0; PORTB= 255; while(1); 5 do PORTB = 0; PORTB= 255; while(1); Estrutura de um programa Identificando os elementos do programa Início do programa Configura as portas Laço do...while(condição) Escreve 0 nas portas Espera 500 ms Escreve 255 10 nas portas Espera 500 ms 6 1

Estrutura de um programa em C Exercício: Altere o programa para que os leds pares e ímpares pisquem alternadamente; 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 7 1 Depende de cada compilador 8 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,1415927... Em vez de escrever toda vez o número podemos nomear uma constante PI = 3,1415927 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 Tipos de variáveis Em linguagem C as variáveis podem assumir diferentes tipos, de acordo com a sua utilização: Tipo Bits Faixa unsigned char 8 0 até 255 signed char 8 128 até 127 unsigned short int 8 0 até 255 signed short int 8 128 até 127 unsigned int 16 0 até 65535 signed int 16 32768 até 32767 unsigned long int 32 0 até 4294967295 signed long int 32 2147483648 até 2147483647 float 32 ± 1,17549435082E 38 até ± 6,80564774407E38 double 32 ± 1,17549435082E 38 até ± 6,80564774407E38 long double 32 ± 1,17549435082E 38 até ± 6,80564774407E38 10 Representação numérica: Tipos de variáveis 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; 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; 11 12 2

Operador Aritmético Operador Operação realizada + Soma Subtração * Multiplicação / Divisão % Resto da divisão + + Incremento Decremento 13 Exercício: Altere o programa anterior para que os leds sejam incrementados utilizando um contador; Qual o tempo total entre cada incremento? unsigned char contador=0; PORTB=0; do PORTB= contador; contador++; while(1); 14 Exercício: Altere o programa anterior para que os leds mostrem o resultado da operação matemática; unsigned char soma=0; do soma= 16 + 6/3 3; //15 PORTB= soma; Delay_ms(1000); soma= (6*2 + 8)/10 + 40; //42 PORTB= soma; Delay_ms(1000); while(1); 15 Operador de Relação: elestestamasrelaçõesnas expressões. Seu resultado é 1 se for verdadeiro ou 0 se for falso; Operador Operação realizada = = Igual a! = Não igual a > Maior que < Menor que > = Maior ou igual a < = Menor ou igual a 16 Exemplos de Operador de Relação: 4==3;retorna0 FALSO 3==3;retorna1 VERDADEIRO 7>=3;retorna1 VERDADEIRO 4<=3;retorna0 FALSO 4!=3;retorna1 VERDADEIRO 4>3;retorna1 VERDADEIRO 17 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; unsigned char contador=0; do PORTB = 0; PORTB= contador; contador++; while(contador < 255); 18 3

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; Operador Operação realizada & & AND OR! NOT (Negado) 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 19 20 Bit a Bit: elestestamasrelaçõesdos operadores nas expressões bit a bit; Operador Operação realizada & AND OR ^ XOR ~ NOT > > SHIFT RIGHT,desloca bits a direita < < SHIFT LEFT, desloca bits a esquerda Exemplos de Operador Bit a Bit: a) v1= 101101, v2=110011, v3 = v1 & v2; AND v1 = 1 0 1 1 0 1 v2 = 1 1 0 0 1 1 v3 = 1 0 0 0 0 1 b) v1= 110001, v2=010111, v3 = v1 v2; OR v1 = 1 1 0 0 0 1 v2 = 0 1 0 1 1 1 v3 = 1 1 0 1 1 1 21 22 Exemplo: Implemente o programa abaixo e acompanhe a variação na saída de acordo com a variação na entrada; TRISA = 0xFF; TRISC= 0x00; do PORTB = PORTA & 0x0F; PORTC = PORTA && 0x0F; while(1); Exemplos de Operador Bit a Bit: c) v1= 101101, v2=110011, v3 = v1 ^ v2; XOR v1 = 1 0 1 1 0 1 v2 = 1 1 0 0 1 1 v3 = 0 1 1 1 1 0 d) v1= 110001, v2 = ~ v1 ; NOT v1 = 1 1 0 0 0 1 v2 = 0 0 1 1 1 0 23 24 4

Exemplo: Implemente o programa abaixo e acompanhe a variação na saída; do PORTB = ~PORTB; while(1); Exemplos de Operador Bit a Bit: e) v1= 000101, v2=v1 << 2; SHIFT LEFT (x 2) = 001010; <<1 v2 = 010100; <<2 f) v1= 010100, v2=v1 >> 2; SHIFT RIGHT ( 2) = 001010; >> 1 v2 = 000101; >> 2 25 26 Implemente um programa que desloca os leds do PORTB para direita; Exercício: Implemente um programa que desloca os leds do PORTB para a esquerda; PORTB = 0xA0; do PORTB = PORTB>>1; Delay_ms(100); while(1); Acompanhe a simulação para ver o que acontece com a saída 27 28 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 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. IF (true) THEN CommandsTrue ELSE CommandsFalse IF (verdadeiro) THEN Verdadeiro ELSE Falso 30 5

Caso 1: somente verdadeiro: if (true) CommandsTrue TRISA = 0xFF; do if (PORTA.F0 = = 1) PORTB = 0X0F; Delay_ms(1000); PORTB = 0XF0 ; while(1); 31 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 Caso 2: com verdadeiro e falso: if (true) CommandsTrue else CommandsFalse TRISA = 0xFF; do if (PORTA.0 = = 1) PORTB = 0X0F; else PORTB = 0XF0 ; 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. ; while(1); 33 34 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 1. 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. 35 36 6

Caso 3: IF aninhado: if (true1) Commands1 else if(true2) Commands2 else if (true3) Commands3 else Commands4 true1? N true2? N N true3? Commands4 V V V Commands1 Commands2 Commands3 37 unsigned char contador=0; 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); 38 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. Contador C.0 C.1 C.2 Contador>127 0 0 0 31<NIVEL 127 1 0 0 15<NIVEL 31 1 1 0 NIVEL 15 1 1 1 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. 39 40 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. WHILE (true) 41 while(true) pergunta? N V 42 7

Exemplo WHILE: unsigned char contador=0; while(contador < 31) PORTB = contador; Delay_ms(300); contador++; Qual é o valor final que aparece na saída?? 43 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. S1 M1 S2 S1 = PORTA.0 S2 = PORTA.1 M1 = PORTB.0 44 Resolução: TRISA = 0xFF; do while(porta.f0 = = 0); PORTB.f0 = 1; while(porta.f1 = = 0); PORTB.f0 = 1; while(1); 45 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çaatéosistemadeaquecimento.nesteinstanteomotor 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. S1 = PORTA.0 S2 = PORTA.1 S3 = PORTA.2 S4 = PORTA.3 M1 = PORTB.0 46 Resolução: 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. DO WHILE (true); 47 48 8

Exemplo: do while (true); pergunta? N V unsigned char contador=0; do PORTB= contador; contador++; Delay_ms(300); while(contador < 31); 49 50 Exemplo: PORTB=0x01; do do PORTB= PORTB<<1; delay_ms(300); while(portb!=128); do PORTB= PORTB>>1; delay_ms(300); while(portb!=1); while(1); EXERCÍCIOS DE REVISÃO 51 52 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. Resolução: S1 = PORTA.0 S2 = PORTA.1 M1 = PORTB.0 L1= PORTB.1 53 54 9

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. Resolução: S1 = PORTA.0 S2 = PORTA.1 B1= PORTA.2 M1 = PORTB.0 L1= PORTB.1 55 56 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. 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 57 58 Resolução: 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 59 60 10