AULA 8 - Microcontroladores - Técnico

De IFSC
Revisão de 15h27min de 9 de novembro de 2016 por imported>Fargoud (→‎Exemplo:)
Ir para navegação Ir para pesquisar

INTRODUÇÃO À LINGUAGEM C

Uma das linguagens mais utilizadas por técnicos e pesquisadores é a linguagem C. Isto ocorre principalmente pela versatilidade e pela complexidade da linguagem, que permitem a criação de programas muito sofisticados.

Histórico

A primeira versão da linguagem foi desenvolvida por dois pesquisadores da Bell Laboratories, Brian Kernighan e Dennis Ritchie.

Várias empresas criaram seus próprios compiladores e IDEs (ou “Integrated Development Environments”) C e assim apareceram o MS C (Microsoft), GCC, Dev C, o Turbo C, Borland C, Code Blocks, etc.

Características da Linguagem

“C é uma linguagem compilada, estruturada e de baixo nível.”

Linguagem compilada porque, após ser escrita num editor de textos qualquer (que siga o padrão ASCII), precisa ser decodificada, compilada (cada módulo separadamente) e linkada para obter-se um programa executável. Certos softwares como o Turbo C e o Borland C permitem que se edite, compile e linke os programas em C dentro de uma mesma IDE, o que facilita muito a manipulação.

É uma linguagem estruturada porque segue o padrão de endentação, tal como em Pascal e Fortran por exemplo, com alinhamentos dos blocos lógicos cada vez mais à direita, quanto mais "interno" ao bloco for o comando, e com execução linear, sem utilização de goto's, break's, etc.

Finalmente é uma linguagem de baixo nível por permitir acesso às camadas lógicas mais baixas da máquina. Isto é, por aproximar-se bastante da linguagem de máquina, Assembler, que apesar de bastante rudimentar tem a capacidade de acessar diretamente a memória, o hardware do computador, como registradores, portas, posições da RAM, etc. Com isto, ganha-se muito em rapidez de execução e em poder para utilizar completamente os recursos do computador. É importante salientar que apesar de ser possível utilizar-se funções muito complexas de baixo nível em C, um programador não interessado nisto terá uma linguagem estruturada como qualquer outra de alto nível.

O programador não pode esquecer que o compilador C diferencia caracteres minúsculos de maiúsculos. Por exemplo, as variáveis "numero" e "Numero" são consideradas diferentes uma da outra na linguagem C.

Estrutura de um programa em C

EstruturaprogC.png


Observe atentamente o programa.

Este inicia com comentários sobre o nome do programa e o que ele faz.

Em C, comentários sempre estão entre os símbolos "/*" e "*/", ou após o símbolo "//". Ou seja, tudo que estiver entre "/* ... */" é completamente ignorado pelo compilador e tudo que estiver, na mesma linha, após o "//" também o é.

Em seguida, temos uma série de comandos, chamados "diretivas", que não pertencem à linguagem C propriamente, sempre começando com o símbolo "#".

Estes comandos fazem parte do que chamamos de "Pré-Processador". O pré-processador, como o nome diz, é um programa que examina o programa-fonte em C antes deste ser compilado e executa certas modificações nele, baseado nas diretivas.

As diretivas mais comuns são "#include" e "#define". A primeira, indica ao compilador quais arquivos de header (os "*.h") serão utilizados pelo programa. A segunda, define constantes e macros para facilitar a visualização do programa.


A área seguinte é a região de declaração dos "protótipos de funções". Isto é necessário, em alguns compiladores C, para indicar ao compilador quais e qual o formato das funções que existem no programa. Por exemplo, o protótipo "void circulo(int, int)" diz ao compilador que dentro deste código ele encontrará uma função chamada circulo, que recebe dois argumentos do tipo int (inteiros) e não retorna valor algum (void) à expressão chamadora.


As outras áreas são todas funções.

A primeira é a função principal do programa, main().

A função main() é sempre a primeira a ser executada num programa C, não importa onde esteja localizada no código. 

Neste programa foi colocada em primeiro lugar por convenção. Note que uma função inicia-se sempre com o nome desta (seu tipo e argumentos) e em seguida temos o seu "corpo", sempre delimitado pelos caracteres "{" e "}". Tudo que estiver entre os símbolos de abre e fecha-chaves faz parte do corpo de uma função.

Com exceção da função main(), que existe obrigariamente em qualquer programa C, todas as outras funções foram previamente declaradas em protótipos.


Não só as funções, mas também blocos de comandos são delimitados por "{" e "}". Note o corpo do comando "for" do programa.

As variáveis em C geralmente são declaradas no início dos blocos, em alguns compiladores por convenção e em outros por obrigação. Contudo, a rigor, as variáveis podem ser declaradas em qualquer ponto do programa (dentro do escopo necessário, claro) desde que antes de serem utilizadas.


Finalizando, note que a maioria dos comandos C terminam com o caractere "';" que é um análogo do "End" utilizado em outras linguagens, como Fortran e Pascal.


No caso de programas para microcontrolador Arduino, que utilizam uma versão da linguagem C como script, a Wiring, a estrutura básica é do tipo:

EstruturaprogArduino.png

VARIÁVEIS E CONSTANTES

Uma constante é um dado com valor fixo e inalterável no programa em C.

Uma constante caractere é escrita entre aspas simples (“ ' “ e “ ' “); uma cadeia de caracteres, entre aspas duplas (“ " “ e “ " “); e constantes numéricas como o número propriamente dito.

Exemplos de declarações de constantes:

const char const_caract ='c';  
#define NOME "meu primeiro programa  "
#define VALOR 8

Constantes podem ser dos tipos:

Constantes numéricas:

São os inteiros, octais, hexa, longas e ponto flutuante (reais).

Exemplo:

  • 45E-8 (exponencial)
  • 32 (inteiro)
  • 034 (octal)
  • 0xFE(hexa)
  • 2e3 (exponencial)
  • 32L (longa)
  • 567893 (longa implícito)
  • 2.3 (double)

Como podemos notar, constantes inteiras não possuem ponto decimal; constantes octais devem ser precedidas por um '0'; constantes hexa, por um '0x'; constantes longas devem ser seguidas por um 'L', mas quando se trata de um número muito grande o compilador já entende que é um inteiro longo; e constantes double ou float têm ponto decimal flutuante.

Constantes de Caractere:

Podem ser representadas por seu código ASCII, ou entre aspas, ' '.

Exemplo:

' A ' = 65    (em ASCII)

Sequências de Escape

São códigos de tarefas a serem executadas na compilação, representados por caracteres que não podem ser impressos.


Sequência de escape                                         Significado                                .
\a                                         	Caractere Bell  (ANSI C)
\b                                         	Caractere de retrocesso (backspace)
\n                                         	Caractere de  nova linha
\r                                         	Caractere de retorno de carro
\t                                          	Caractere de tabulação horizontal
\\                                          	Caractere de contra-barra
\'                                           	Caractere de aspas simples
\"                                          	Caractere de aspas duplas
\?                                          	Caractere de ponto-de-interrogação
\###                                       	Código ASCII em octal de caractere
\x###                                     	Código ASCII em hexadecimal de caractere
\0                                          	Caractere nulo


Exemplo:

A instrução

printf(“\n\t\t Hoje \202 dia da Can\x87\xc60 da \nAm\x82rica\?”);

vai imprimir:


      Hoje é dia da Canção da 
América?

Exemplo 2:

Teste o programinha:

#include  <stdio.h>
void main(void)
{
     printf("A\nB\nC");
     printf("\n");
     printf("A\tB\tC");
     printf("\n");
     printf("AB\rC");
     printf("\n");
     printf("AB\b\bC");
     printf("\n");
     printf("Beep\aBeep\aBeep\a");
     printf("\n");
     printf("\A\B\C");                                     /* O que acontece aqui ????  */
     printf("\n");
     printf(" Os comandos do Dos estão no C:\\DOS ");
     printf(“\n”);
     printf(“Can\x87\xc6o da Am\x82rica – Milton Nascimento\n”);
     printf(“\xc9\xcd\xcd\xcd\xbb\n\xc8\xcd\xcd\xcd\xbc”);
     printf("\n");
     printf("\"Cuidado!\" não fume ");
}

Strings

Conjunto, série ou sequência de caracteres seguido do caractere ' \0 ' e delimitado por " ".

Exemplo:

char * texto= "ABC";       // ou char  texto[4]  ={ 'A' , 'B' , 'C' , '\0'};

<< Página do curso AULA 8 - Introdução à Linguagem C Operadores >>