Escolar Documentos
Profissional Documentos
Cultura Documentos
____________________________________________________________
PROGRAMAÇÃO EM
C
DIVINÓPOLIS
2007
____________________________________________________________ 1
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
Presidente da FIEMG
Robson Braga de Andrade
Gestor do SENAI
Petrônio Machado Zica
Elaboração
Marlon Henrique Teixeira
Unidade Operacional
CFP-AnG
____________________________________________________________ 2
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
Sumário
3 - OS TIPOS DO C ................................................................................................ 9
4 - IDENTIFICADORES ........................................................................................ 11
5 - FUNÇÕES ....................................................................................................... 12
6 - VARIÁVEIS ..................................................................................................... 13
7 - OPERADORES ............................................................................................... 16
____________________________________________________________ 3
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
9 - EXPRESSÕES ................................................................................................ 22
10 - CONSTANTES .............................................................................................. 24
16 - EXERCÍCIOS................................................................................................. 40
____________________________________________________________ 5
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
1 - CONCEITOS BÁSICOS
1.1 - O que são microcontroladores e
microprocessadores
O que são microcontroladores e microprocessadores
Ambos são computadores digitais que realizam operações em seqüência
sem intervenção humana. As operações são programadas por um programador,
que segue uma lista de instruções que compõe a linguagem de programação
(Assembly, C, Java).
Os microcontroladores ou µC são conhecidos como computadores
embutidos em circuito integrado.
Em um microcontrolador podemos encontrar memória, CPU, entradas e
saídas.
Alguns ainda possuem periféricos como conversores A/D e D/A,
comparadores. Os microcontroladores chegam a custar muitas vezes mais barato
do que um transistor. Existe uma quantidade grande de µC no mercado, veja
alguns nomes a baixo:
1.4 - Biblioteca
É o arquivo contendo as funções padrão que seu programa pode usar.
Essas funções incluem todas as operações de I/O como também outras rotinas
úteis.
1.5 - Código-fonte
O texto de um programa que um usuário pode ler, normalmente
interpretado como o programa. O código-fonte é a entrada para o compilador C.
1.6 - Código-objeto
Tradução do código-fonte de um programa em código de máquina que o
computador pode ler e executar. O código objeto é a entrada para o linkeditor.
1.7 - Linkeditor
Um programa que une funções compiladas separadamente em um
programa. Ele combina as funções padrões da biblioteca C com o código que
você escreveu. A saída do linkeditor é um programa executável.
____________________________________________________________ 7
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
____________________________________________________________ 8
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
3 - OS TIPOS DO C
Formato Intervalo
Tipo Num de bits para leitura
com scanf Inicio Fim
____________________________________________________________ 9
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
____________________________________________________________ 10
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
4 - IDENTIFICADORES
____________________________________________________________ 11
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
5 - FUNÇÕES
Todo programa em C consiste em uma ou mais funções. A única função
que necessariamente precisa estar presente é denominada main(), que é a
primeira função a ser chamada quando a execução do programa começa.
Funções são todos os blocos de construção de C e o local onde toda a
atividade do programa ocorre. Elas são uma das características mais importantes
em C. A forma geral de uma função é:
____________________________________________________________ 12
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
6 - VARIÁVEIS
Uma variável é uma posição nomeada de memória, que é usada para
guardar um valor que pode ser modificado pelo programa.
tipo_da_variável lista_de_variáveis;
declaram duas variáveis do tipo char (ch e letra), uma variavel long int (count) e
um float pi.
____________________________________________________________ 13
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
#include <stdio.h>
int contador;
int func1(int j)
{
/* aqui viria o código da funcao
...............
*/
}
int main()
{
char condicao;
int i;
for (i=0; i<100; i=i+1)
{
/* Bloco do for */
float f2;
/* etc ...
...
*/
func1(i);
}
/* etc ... */
return(0);
}
Isto é importante, pois quando o C cria uma variável ele não a inicializa.
Isto significa que até que um primeiro valor seja atribuído à nova variável ela tem
um valor indefinido e que não pode ser utilizado para nada. Nunca presuma que
____________________________________________________________ 14
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
char ch='D';
int count=0;
float pi=3.141;
int main()
{
int i;
int j;
j = 10;
int k = 20; /* Esta declaracao de variável não é válida, pois não está sendo
feita no início do bloco */
return(0);
}
____________________________________________________________ 15
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
7 - OPERADORES
C é muito rica em operadores internos, definidos em quatro classes:
aritméticos, relacionais, lógicos e bit a bit. Além disso em operadores especiais
para tarefas particulares.
Nome_da_variável = expressão;
int x;
char ch;
float f;
____________________________________________________________ 16
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
X = y = z = 0;
Operador Ação
____________________________________________________________ 17
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
int a = 17, b = 3;
int x, y;
float z = 17. , z1, z2;
x = a / b;
y = a % b;
z1 = z / b;
z2 = a/b;
x ++; x --;
são equivalentes a
x=x+1; x=x-1;
x=23; y=x++;
x=23; y=++x;
x=y=z=1.5; /* Expressao 1 */
if (k=w) ... /* Expressão 2 */
A expressão 1 é válida, pois quando fazemos z=1.5 ela retorna 1.5, que é
passado adiante, fazendo y = 1.5 e posteriormente x = 1.5. A expressão 2 será
verdadeira se w for diferente de zero, pois este será o valor retornado por k=w.
Pense bem antes de usar a expressão dois, pois ela pode gerar erros de
____________________________________________________________ 18
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
____________________________________________________________ 19
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
x = (y = 3, y + 1);
____________________________________________________________ 20
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
8 - TABELA DE PRECEDÊNCIAS DO C
Esta é a tabela de precedência dos operadores em C. Alguns (poucos)
operadores ainda não foram estudados, e serão apresentados em aulas
posteriores.
Maior () []
! ~ ++ - - - * &
* / %
+ -
<< >>
< <= > >=
== !=
&
^
|
&&
!!
?
= += -= *= /=
Menor ,
____________________________________________________________ 21
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
9 - EXPRESSÕES
Operadores, constantes e variáveis são os elementos que constituem a
expressão. Uma expressão em C é qualquer combinação válida desses
elementos.
____________________________________________________________ 22
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
x=x+k; x+=k;
x=x-k; x-=k;
x=x*k; x*=k;
x=x/k; x/=k;
x=x>>k; x>>=k;
x=x<<k; x<<=k;
x=x&k; x&=k;
____________________________________________________________ 23
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
10 - CONSTANTES
Em C, constantes são valores fixos que o programa não pode alterar e
podem ser de qualquer um dos cinco tipos de dados básicos.
Constantes caractere são envolvidas por aspas simples (‘). Por exemplo, ‘a’
e ‘%’ são constantes tipos caracteres.
Constantes inteiras são especificadas como números sem componentes
fracionários. Por exemplo, 10 e –100 são constantes inteiras. Constantes em
ponto flutuante requerem o ponto decimal seguido pela parte fracionária do
número. Por exemplo, 11.123 é uma constante em ponto flutuante. C também
permite que você use notação científica para números ponto flutuante.
Na maioria dos programas que você escreverá, os padrões do compilador
são adequados. Porém, você pode especificar precisamente o tipo da constante
númeria que você deseja por meio da utilização de um sufixo.
____________________________________________________________ 25
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
- Seleção ou Condicional
- Iteração ()
- Desvio
- Rótulo
- Expressão
- Bloco
if (expressão) comando;
else comando;
void main(void)
{
int magic; // número mágico
int guess; // palpite do usuário
____________________________________________________________ 26
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
ifs aninhados
Um if aninhado é um comando if que é objeto de outro if ou else. Em C um
comando else sempre se refere ao if mais próximo, que está dentro do mesmo
bloco do else e não está associado a outro if. Exemplo:
11.1.2 - switch
switch (expressão)
{
case constante1: comando;
break;
case constante2: comando;
break;
.....
default:
{ seqüência de comandos... }
}
____________________________________________________________ 27
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
____________________________________________________________ 28
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
____________________________________________________________ 29
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
____________________________________________________________ 30
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
O laço infinito
ch = ‘ \0 ’;
for ( ; ; )
{
ch = getchar( ); // obtém um caracter
if ( ch == ‘A’) break; // sai do laço.
}
printf (“ voce digitou um A”);
Exemplo:
wait_for_char ( void )
{
char ch;
ch = ‘ \0 ‘ ; // inicializa ch
while ( ch != ‘A’ ) ch = getchar();
return ch;
}
Como o laço for o while verifica a condição de teste no início do laço, o que
significa que o código do laço pode não ser executado.
do
{
comando;
} while ( condição );
____________________________________________________________ 31
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
Uma função declarada como void não pode ter um return que especifique
um valor.
goto rótulo;
.
.
.
rótulo:
Ele tem dois usos: você pode usa-lo para terminar um case em um
comando switch ou para forçar uma terminação de um laço, o laço é
imediatamente terminado e o controle do programa retorna no comando seguinte
ao laço.
____________________________________________________________ 33
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
12 - MATRIZES E STRINGS
# include <std.io.h>
# include < string.h>
void main (void)
{
char s1[80] , s2[80];
gets (s1);
gets (s2);
13.1 - getchar( )
Lê um caracter do teclado, espera até que uma tecla seja presionada e
devolve seu valor. A tecla pressionada é automaticamente mostrada na tela.
13.2 - putchar( )
Escreve um caracter na tela.
Exemplo:
13.3 - getch( )
Espera até que uma tecla seja pressionada e então retorna
imediatamente.Ela não mostra o caractere na tela.
13.4 - getche( )
É igual a getch mas a tecla é mostrada.
____________________________________________________________ 35
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
13.5 - gets( )
Lê uma string de caracteres inserida pelo teclado e coloca-a no endereço
apontado.
13.6 - puts( )
Escreve seu argumento string na tela seguido por uma nova linha.
13.7 - printf( )
Ecreve dados no vídeo.
13.8 - scanf( )
Complemento de printf, lê dados do teclado.
____________________________________________________________ 36
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
____________________________________________________________ 37
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
14 - DIRETIVAS DE C
Todas as diretivas começam com um símbolo #. Além disso, cada diretiva
do pré-processador deve estar na sua própria linha.
14.1 - #define
Define um identificador e uma string que o substituirá toda vez que for
encontrado no arquivo-fonte. Forma geral:
Exemplo:
#define VERDADEIRO 1
#define FALSO 0
Isso faz com que o compilador substitua 1 ou 0 toda vez que encontrar
verdadeiro ou falso.
14.2 - #include
Instrui o compilador a ler outro arquivo-fonte adicionado aquele que contém
a diretiva #include. O nome de arquivo adicional deve estar entre aspas ou
símbolos de maior e menor. Exemplo:
#include “stdio.h”
#include <stdio.h>
____________________________________________________________ 38
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
15 - FUNÇÕES MATEMÁTICAS
#include <math.h>
acos(num) Î devolve o arco co-seno de num;
asin(num) Î devolve o arco seno de num;
atan(num) Î devolve o arco tangente de num;
atan2( y/x) Î devolve o arco tangente de y/x;
ceil(num) Î devolve menor inteiro que não seja menor que num;
cos(num) Î devolve o co-seno de num;
cosh(num) Î devolve o co-seno hiperbólico de num;
exp(num) Î devolve o logaritmo natural e elevado à num;
fabs(num) Î devolve o valor absoluto de num;
floor(num) Î devolve maior inteiro que não seja maior que num;
fmod(x,y) Î devolve o resto de x/y;
log(num) Î devolve o logaritmo natural de num;
log10(num) Î devolve o logaritmo de base 10 de num;
modf(num,&x) Î decompõe num em suas partes inteira e fracionária.
Ela devolve a parte fracionária e coloca a parte
inteira na variável apontada por x;
pow(base,exp) Î Devolve base elevada a potência exp;
sin(num) Î Devolve seno de num;
sinh(num) Î Devolve o seno hiperbólico de num;
sqrt(num) Î Devolve a raiz quadrada de num;
tan(num) Î Devolve a tangente de num;
tanh(num) Î Devolve a tangente hiperbólica de num;
____________________________________________________________ 39
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
16 - TABELA ASCII
____________________________________________________________ 40
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
17 - EXERCÍCIOS
1 - Escreva um programa que leia do teclado e imprima na tela o seu nome
completo.
____________________________________________________________ 41
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
#include <stdio.h>
int main()
{
int x;
scanf("%d",&x);
printf("%d",x);
return(0);
}
____________________________________________________________ 42
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
____________________________________________________________ 43
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
int x,y,z=0;
x=y=10;
z=++x;
x=-x;
y++;
x=x+y-(z--);
main()
{
char condicao; a. Válido na linguagem C
condicao = 'D'; b. Não válido na linguagem C
int i = 1;
}
____________________________________________________________ 44
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
a. O numero e 1
b. O numero e 2
c. O numero e diferente de 1 e 2
d. O numero e 1 O numero e 2
e. O numero e 1 O numero e 2 O numero e diferente de 1 e 2
int x; a. 351131
for ( x = 35 ; x > 0 ; x/=3) b. 1131
printf("%d " , x) ; c. 11310
d. 35113
e. Nenhuma das opções anteriores
int x = 10;
while (--x > 9)
{
printf("%d", x);
} a. Verdadeiro
b. Falso
int x = 10;
do {
printf("%d", x);
} while(--x > 9);
____________________________________________________________ 46
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
while (i = 5)
{
printf("%d %d %d \n", i, i+2, i+4);
i = 0;
}
switch (t)
{
case t < 10:
printf("Hoje ta' fazendo muito frio");
break;
case t < 25:
printf("A temperatura está agradavel");
break;
default:
printf("Hoje ta' quente pra chuchu");
}
a. Válida na linguagem C
b. Não válida na linguagem C
int i;
for ( i = 0 ; i <= 5; i++ , printf("%d ", i));
a. Imprime 0 1 2 3 4 5
b. Não funciona, pois tem sintaxe errada
c. Imprime 1 2 3 4 5 6
d. Imprime 1 2 3 4 5
e. Nenhuma das opções anteriores
____________________________________________________________ 47
Curso Técnico de Eletroeletrônica
Programação em C
____________________________________________________________
#include <stdio.h>
int num;
int func(int a, int b)
{
a = (a+b)/2; /* Qual e o valor de a apos a atribuicao? */
num -= a;
return a;
}
main()
{
int first = 0, sec = 50;
num = 10;
num += func(first, sec); /* Qual e o valor de num, first e sec */
/* antes e depois da atribuicao? */
printf("\n\nConfira! num = %d\tfirst = %d\tsec = %d",num, first, sec);
}
57 - Escreva uma função que receba duas variáveis inteiras e "zere" o valor
das variáveis.
____________________________________________________________ 48
Curso Técnico de Eletroeletrônica