Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Computao
Microcontroladores
e DSP
Introduo a Linguagem C
Prof. Dr. Geovani Rodrigo Scolaro
geovani.scolaro@unoesc.edu.br
Apresentao
Introduo a linguagem C,
tipos de dados, variveis,
estruturas de seleo, laos,
funes, vetores, matrizes,
estruturas de dados, etc.
Introduo a Linguagem C
Expresses
Uma expresso uma combinao de constantes, variveis e
operadores que depois de avaliadas resultam num valor.
Variveis
As variveis representam um espao de memria do computador que
armazenam um determinado tipo de dado. Na linguagem C/C++ todas
as variveis devem ser explicitamente declaradas e inicializadas.
Para se declarar uma varivel devem ser especificados seu tipo e
nome. O nome da varivel serve de referncia dentro do programa ao
dado armazenado no espao de memria da varivel. J o tipo da
varivel serve para indicar a natureza do dado que ser armazenado.
Ex: int temperatura = 0;
tipo inteiro (32 bits).
Introduo a Linguagem C
Expresses
Tipos bsicos
A
linguagem
C/C++
oferece
alguns
tipos
bsicos
para
armazenamento de dados.
Para armazenar valores inteiros existem quatro tipos bsicos:
Tipo
Tamanho
Representatividade
char
1 byte (8 bits)
unsigned char
short int
1 byte (8 bits)
2 bytes (16 bits)
int
bytes
(32
bits)
4.294.967.295
valores
(0
4.294.967.295)
unsigned long int
2.147.483.647
Int
4.294.967.295)
Introduo a Linguagem C
bytes
(32
bits)
4.294.967.295
valores
(0
Expresses
Para armazenar nmeros reais (ponto flutuante) existem dois tipos
bsicos:
Tipo
Tamanho
Representatividade
float
double
(maior preciso)
Declarao de Variveis
Para armazenar um determinado dado em memria, deve-se reservar
um espao de memria correspondente ao tipo de dado. Quando se
declara uma varivel o espao de memria reservado associado ao
nome de varivel que declaramos.
Exemplos:
char a; //declara uma varivel do tipo char.
int b;
Introduo a Linguagem C
Expresses
A linguagem C/C++ permite declarar variveis do mesmo tipo juntas.
Exemplo:
int a, b;
Introduo a Linguagem C
Expresses
Caso a varivel seja utilizada ir apresentar erros no decorrer da
execuo do programa. O fragmento de cdigo a seguir contem um erro,
pois a varivel b possui um valor indefinido armazenado em seu espao
de memria, gerando um erro.
Exemplo:
int a, b, c;
a = 2;
c = a + b;
Operadores Aritmticos
Em C/C++ existem os operadores aritmticos de adio ( + ),
subtrao ( - ), multiplicao ( * ), diviso ( / ) e mdulo ( % ).
Devemos ter cuidado na operao de diviso em preciso inteira e
preciso real. A expresso 5/2 resulta no valor 2, pois a preciso inteira
trunca a parte funcionria. J a expresso 5.0/2.0 resulta em 2.5 devido a
Introduo a Linguagem C
Expresses
Utilizao com valores inteiros.
Exemplo 1:
int a, b, c;
a = 3;
b = 2;
c = a - b;
Introduo a Linguagem C
Expresses
Os operadores ( * ), ( / ) e ( % ) tm precedncia maior que os
operadores ( + ) e ( - ).
Exemplo:
a+b*c/d
Executa-se primeiro a multiplicao, seguida da diviso e da soma.
Exemplo:
(a + b) * c / d
avaliao da expresso.
Operadores de atribuio
Uma atribuio uma expresso cujo valor resultante corresponde ao
valor atribudo. Assim da mesma forma que a expresso 5 + 3 resulta no
valor 8,
Introduo a Linguagem C
Expresses
Em C/C++ podemos utilizar operadores de atribuio compostos.
Exemplo:
i = i + 1;
Ou ainda de forma mais compacta utilizando o operador composto
+=.
Exemplo:
i += 1;
Existem ainda os operadores compostos -=, *=, /=.
Exemplo:
j -= 2; que equivale a j = j - 2;
j *= 2; que equivale a j = j * 2;
j /= 2; que equivale a j = j / 2;
Operadores de incremento e decremento
A
linguagem
Introduo a Linguagem C
C/C++
apresenta
ainda
dois
operadores
no
Expresses
para incrementar ( ++ ) e decrementar ( -- ) uma unidade nos valores
armazenados nas variveis. Se n uma varivel que armazena um valor
qualquer, o comando
n++;
incrementa em uma unidade o valor de n e o comando
n--;
decrementa em uma unidade o valor de n.
Exemplo 1:
n = 5;
x = n++;
Exemplo 2:
n = 5;
x = n--; //o valor da varivel x 4.
Exemplo 3:
a = a + 1;
a +=1;
Introduo a Linguagem C
a++;
++a;
//So equivalentes.
Expresses
Operadores Relacionais e Lgicos
Operadores relacionais so utilizados na comparao entre dois
valores. So eles:
<
menor que
>
maior que
diferente de
Introduo a Linguagem C
Expresses
Operadores Relacionais e Lgicos
Os operadores lgicos combinam expresses booleanas. Exemplos de
operadores:
&& operador binrio E (AND)
||
||
Introduo a Linguagem C
(d > c);
Expresses
Operador sizeof
Outro operador presente na linguagem C/C++ o sizeof, resulta no
nmero de bytes de um determinado tipo.
Exemplo:
int a = sizeof ( float );
memria.
Armazena o valor 4 na varivel a, pois um float ocupa 4 bytes de
memria. Tambm pode ser utilizado na verificao do espao utilizado
por variveis.
Exemplo:
short int a;
memria.
int b = sizeof ( a );
Introduo a Linguagem C
Expresses
Entrada e Sada Bsicas
Na linguagem C/C++ no h comandos de entrada e sada de dados,
existem funes para tal fim.
Tais funes de entrada e sada esto dentro de uma biblioteca
padro, a qual sempre deve estar no incio de cada programa.
#include <stdio.h>
Exemplo:
#include <stdio.h> //Biblioteca contendo as funes de entrada e
sada.
int main (void)
{
}
Introduo a Linguagem C
Expresses
Funo printf
A funo printf possibilita a sada de valores (constantes, variveis e
resultados de expresses) conforme um determinado formato.
Utilizao:
printf ( formato, valores );
onde:
formato
%c especifica um char
%d especifica um int
%u especifica um unsigned int
%f especifica um double (ou float)
%e especifica um double (ou float) no formato cientfico
%g especifica um double (ou float) mais apropriado (%f ou %e)
%s especifica uma cadeia de caracteres
valores
Introduo a Linguagem C
Expresses
Exemplos:
printf ( "%d %g \n", 33, 5.3);
Sada na tela:
33 5.3
printf ( "Inteiro = %d
Sada na tela:
Inteiro = 33
Real = 5.3
Introduo a Linguagem C
Expresses
Alguns formatos de sada utilizados:
\n
\t
caractere de tabulao
\r
caractere de retrocesso
\"
\\
imprime o caractere \
%% imprime o caractere %
possvel tambm especificar o tamanho dos campos (exemplo
anterior):
%d %4d
4
5
%f %7.2f
2
7
Introduo a Linguagem C
Expresses
Funo scanf
A funo scanf permite capturar valores fornecidos via teclado pelo
usurio do programa e os armazena em variveis dentro do programa.
Utilizao:
Scanf ( formato, endereos );
onde:
formato
%c
especifica um char
%d
especifica um int
%u
%f, %e, %g
especifica um float
especifica um double
Introduo a Linguagem C
Expresses
Exemplos:
int n;
scanf ( "%d", &n);
O valor digitado pelo usurio ser armazenado na varivel n.
int n, m;
scanf ( "%d %d", &n, &m);
Os valores digitados pelo usurio sero armazenados nas variveis n
e m, respectivamente.
Introduo a Linguagem C
Expresses
Exerccio: Converter altura em metros para ps (ft) e polegadas
(pol).
#include <stdio.h>
int main
{
int f;
float p;
float h;
(void)
//nmero de ps.
//nmero de polegadas.
//altura em metros.
Introduo a Linguagem C
Controle de Fluxo
A linguagem C/C++ disponibiliza alguns mecanismos para o controle
de fluxo de dados dentro dos programas codificados, como: tomadas de
deciso, laos, interrupes com break e continue e seleo.
Tomadas de Deciso
O comando if o comando bsico para codificar tomadas de em C.
Exemplo:
if ( expressao )
{
bloco de comandos 1
...
}
ou
Introduo a Linguagem C
Controle de Fluxo
if ( expressao )
{
bloco de comandos 1
...
}
else //caso contrrio...
{
bloco de comandos 2
...
}
Neste exemplo se a condio de avaliao da expresso for diferente
de zero, o bloco de comandos 1 ser executado. Caso contrrio, se a
condio de avaliao da expresso for igual a zero, o bloco de
comandos 2 ser executado.
Introduo a Linguagem C
Controle de Fluxo
Exemplo de Cdigo: Verificar se um nmero par ou impar.
#include <stdio.h>
int main (void)
{
int a;
printf("Digite um nmero inteiro: ");
scanf("%d ", &a);
if (a % 2 == 0)
{
printf("O nmero fornecido par!\n");
}
else
{
printf("O nmero fornecido impar!\n");
}
}
Introduo a Linguagem C
Controle de Fluxo
Construes com Laos
A linguagem C disponibiliza vrios mecanismos para a realizao de
laos interativos utilizando o comando while( ), do while( ) e for( ).
Utilizao do comando while( ):
while ( expressao )
{
bloco de comandos
}
Exemplo:
int i = 0;
while ( i <= 100)
100.
{
i++;
}
Introduo a Linguagem C
Controle de Fluxo
Utilizao do comando do - while( ):
do
{
bloco de comandos
...
} while ( expressao );
Exemplo:
int i = 0;
do
{
i++;
} while ( i <= 100) //O programa ir executar at que a i seja igual a
100.
Introduo a Linguagem C
Controle de Fluxo
Utilizao do comando for( ):
for
(expressao_inicial;
expressao_booleana;
expressao_incremental)
{
bloco de comandos
}
onde:
expressao_inicial: a condio de incio do lao. Ex: i = 0.
expressao_booleana: a condio de parada do lao. Ex: i<= 100.
expressao_incremental: a condio de incremento do lao. Ex:
i++, i += 2, etc.
Exemplo:
for (int i = 0; i < 100; i++)
{
bloco de comandos
Introduo a Linguagem C
Controle de Fluxo
Interrupes com break e continue
A linguagem C oferece duas formas de interrupo antecipada de um
determinado lao. O comando break interrompe e termina a execuo do
lao. J o comando continue interrompe momentaneamente a execuo
do lao e segue para a prxima iterao.
Exemplo com break:
int i = 0;
for (i = 0; i < 15; i++)
{
if (i == 5)
{
break;
}
printf("%d", i);
}
printf("fim\n");
Sada do programa:
0 1 2 3 4 fim
Introduo a Linguagem C
Controle de Fluxo
Exemplo com continue:
int i = 0;
for (i = 0; i < 15; i++)
{
if (i == 5)
{
continue;
}
printf("%d", i);
}
printf("fim\n");
Sada do programa:
0 1 2 3 4 6 7 8 9 10 11 12 13 14 fim
Observe que o nmero 5 no foi impresso...
Introduo a Linguagem C
Controle de Fluxo
Comando de Seleo switch
A linguagem C disponibiliza um outro comando para a seleo de um
elemento dentre um conjunto de casos possveis (tipos aceitos char e
int).
Exemplo:
int expressao = 0;
switch( expressao)
{
case op1:
//comandos executados se expressao == op1.
bloco de comandos
break;
case op2:
//comandos executados se expressao == opn.
bloco de comandos
break;
default:
//executados se expressao for diferentes de todas as
opes.
bloco de comandos
break;
Introduo
a Linguagem C
Funes
Definio de funes
No desenvolvimento de programas estruturados, prefervel dividir
tarefas computacionais complexas em tarefas menores e utilizar seus
resultados parciais, compondo o resultado final. Na linguagem C
utilizamos funes para codificar tarefas especficas. Essa estratgia de
codificao beneficia a resoluo de problemas especficos, do que
codificar uma nica funo maior que resolva o problema como um todo.
A forma geral para a definio de funes em C :
tipo_de_retorno nome_da_funo ( lista de parmetros)
{
bloco de comandos
return ( valores );
}
Introduo a Linguagem C
Funes
onde:
tipo_de_retorno
inteiros.
Exemplo:
double soma (double valor1, double valor2) //funo para somar dois
valores.
{
double resultado = valor1 + valor2;
return (resultado); //retorno do valor calculado para o programa.
Introduo a Linguagem C
Funes
Ponteiro de Variveis
Uma funo normalmente retorna um tipo de valor para a atribuio
ou outra funo que a requisitou. No entanto, uma funo apenas
retorna um determinado valor. Muitas vezes necessitamos retornar mais
que um valor para a funo que a requisitou e isso no pode ser feito de
uma forma explcita de retorno. Dessa forma, devemos utilizar ponteiros.
Exemplo 1: Retorno de apenas um valor pela funo.
#include <stdio.h>
int soma( int a, int b )
{
int c = a + b;
return c;
}
int main (void)
{
int s = soma(3, 5);
//Forma explcita de retorno de valores.
printf("soma = %d\n", s);
return 0;
}
Introduo
a Linguagem C
Funes
Exemplo 2: Retorno de mais valores pela mesma funo.
#include <stdio.h>
void somaprod( int a, int b, int *p, int *q )
{
*p = a + b; // o contedo armazenado no ponteiro p ser alterado.
*q = a * b; // o contedo armazenado no ponteiro q ser alterado.
}
int main (void)
{
int s, p;
somaprod(3, 5, &s, &p);
printf("soma = %d Produto = %d \n", s, p);
return 0;
}
Introduo a Linguagem C
Funes
Variveis do Tipo Ponteiro
A linguagem C permite o armazenamento e a manipulao de valores
de endereos de memria. Os ponteiros permitem armazenar endereos
de
memria
em
que
existam
valores
do
tipo
correspondente
armazenados. Caso seja declarada uma varivel do tipo inteiro, reservase um espao de memria para armazenar dados inteiros de 4 bytes. Da
mesma forma que so reservados espaos de memria para o
armazenamento de valores inteiros, pode-se declarar variveis para
armazenar valores de endereos de memria em que existam valores
inteiros armazenados. A declarao de ponteiros feita da mesma forma
que a declarao de uma varivel normal. No entanto, o tipo da
declarao precedida pelo caractere *.
Exemplo:
int a;
valores inteiros).
Introduo a Linguagem C
Funes
Representao da utilizao e manipulao de dados por ponteiros.
Pilha de Execuo
/* Varivel do tipo inteiro */
int a;
/* Varivel do ponteiro p/ inteiro */
112
int *p;
Introduo a Linguagem C
108
104
Funes
Representao da utilizao e manipulao de dados por ponteiros.
Pilha de Execuo
//varivel a recebe o valor 5
a = 5;
112
Introduo a Linguagem C
108
104
Funes
Representao da utilizao e manipulao de dados por ponteiros.
Pilha de Execuo
/* varivel p recebe o endereo de a
(diz-se que p aponta para a) */
p = &a;
112
Introduo a Linguagem C
104
108
104
Funes
Representao da utilizao e manipulao de dados por ponteiros.
Pilha de Execuo
/* contedo de p recebe o valor 6 */
*p = 6;
112
Introduo a Linguagem C
104
108
104
Funes
Representao da utilizao e manipulao de dados por ponteiros.
Pilha de Execuo
Introduo a Linguagem C
Ponteiro declarado p
104
Varivel declarada a
104
Funes
Variveis Globais
As variveis globais so variveis declaradas fora do corpo das
funes, sendo visvel a todas as funes subsequentes. As variveis
globais existem mesmo depois que uma determinada funo termina sua
execuo, pois no so armazenadas na pilha de execuo.
Exemplo:
#include <stdio.h>
int x, y; //Variveis Globais.
int main (void)
{
bloco de comandos
}
Introduo a Linguagem C
Funes
Diretivas
Na linguagem C existem diretivas que definem os arquivos de
bibliotecas que so utilizadas pelo compilador e definem rtulos para
determinadas ocorrncias.
Exemplo:
#include <stdio.h>
#define PI
3.14159F
Vetores
Para realizar a estruturao de um conjunto de dados, de uma forma
simples, por meio de vetores. A definio de vetores em C feita da
seguinte forma:
int v[10];
(40 bytes)
Essa forma de declarao diz que v um vetor de inteiros
dimensionado para o armazenamento de 10 elementos inteiros, com um
tamanho de 4 bytes.
Para acessar cada elemento do vetor necessria a indexao da
varivel v, comeando em 0 a n-1, onde n o tamanho total do vetor.
v[0] acesso ao primeiro elemento do vetor v
v[1] acesso ao segundo elemento do vetor v
...
Introduo a Linguagem C
Vetores
Exemplo: Declarar um vetor de 10 posies do tipo inteiro.
int v[10] = {5, 8, 3, 9, 6, 3, 7, 1, 2, 4};
[0]
[7]
[1]
[8]
[2]
[9]
[3]
[4]
[5]
[6]
posio
apenas
atribuindo
um
novo
valor
v[1],
Vetores
Representao do vetor v com 10 posies
Podemos indexar (acessar as informaes) da posio [0] a [9], o que
totaliza 10 posies. Caso seja feito o acesso da posio [10] obteremos
um erro de invaso de memria.
Exemplo:
v[10]Invaso de memria144
v[9]
v[8]
v[7]
v[6]
v[5]
v[4]
v[3]
v[2]
v[1]
v[0]
Introduo a Linguagem C
104
Vetores
Exemplo: Clculo da mdia e da varincia de 10 elementos reais
#include <stdio.h>
int main (void)
{
float v[10];
//declara vetor com 10 elementos
float med, var; //variveis para a mdia e varincia
int i;
//varivel utilizada para ndice de vetor
for (i = 0; i < 10; i++) //leitura dos valores
{
scanf("%f", &v[i]); //leitura de cada elemento do
vetor
}
med = 0.0f;
//inicializa med com zero
for (i = 0; i < 10; i++)
{
med = med + v[i]; //acumula soma dos elementos
}
med = med / 10;
//calcula a mdia
Introduo a Linguagem C
Vetores
var = 0.0f;
//inicializa com zero
for (i = 0; i < 10; i++)
{
var = var + (v[i] - med) * (v[i] - med);
}
var = var / 10;
//calculo da varincia
//acumula valores
//exibio do resultado
printf("Media = %f
Variancia = %f \n", med, var);
}
Introduo a Linguagem C
Vetores
Passagem de Vetores para Funes
Quando
passamos
um
vetor
para
uma
funo
estamos
Introduo a Linguagem C
Vetores
Outra opo de uso:
Caso o tamanho de vetor seja conhecido pode ser utilizada esta
forma, no entanto, no a forma mais utilizada.
Exemplo:
void imprime (float v[10])
{
int i = 0;
for (i = 0; i < 10; i++)
{
printf ("Valor da posicao %d = %7.2f", i, v[ i ]);
}
}
Utilizao no programa:
float v[10] = {5.0, 8.0, 3.0, 9.0, 6.0, 3.0, 7.0, 1.0, 2.0, 4.0};
imprime (v);
Introduo a Linguagem C
Vetores
Exemplo: Clculo da mdia passando o vetor como parmetro para a
funo.
#include <stdio.h>
float media (int n, float *v )
{
int i = 0;
float s = 0.0f;
for (i = 0; i < n; i++)
{
s += v[ i ];
}
return (s/n);
}
int main (void)
{
float med = 0.0f;
float vetor[5] = { 5, 10, 15, 20, 25};
med = media(5, vetor);
printf("Media = %5.2f \n", med);
return (0);
}
Introduo
a Linguagem C
Matrizes
Basicamente,
matrizes
so
conjuntos
de
dados
bi
ou
[0
]
[1
]
[0]
[3]
[1]
[2]
[0]
Acessar o segundo elemento da primeira linha: m[0][1] = 8; [3]
Introduo a Linguagem C
[1]
[2]
Matrizes
Quando declaramos a matriz reservado um espao de memria
necessrio para armazenar os 8 elementos da matriz, que so
armazenados de maneira contnua, linha a linha. Para acessar os
elementos da matriz necessria indexao dupla (i x j).
Alocao dos elementos de uma matriz
int m[2][4] = {
{5, 8, 3,
9} ,
{6, 3, 7,
1} };j
i
m
[0
]
[1
]
132
7
3
6
[0]
[3]
[1]
[2]
m[0][1]
8
5
Introduo a Linguagem C
104
Matrizes
Passando Matrizes para Funes
Passar uma matriz para uma funo a forma mais fcil de realizar
esta tarefa seria definir a matriz de forma esttica (tamanhos definidos),
uma vez que sabemos de antemo as dimenses a serem utilizadas.
Exemplo:
#include <stdio.h>
#include <stdlib.h>
int mat[2][4] = { {5, 8, 3, 9} , {6, 3, 7, 1} };
void imprime (int m[2][4])
{
int i = 0, j = 0;
for (i = 0; i < 2; i++)
for (j = 0; j < 4; j++)
printf ("Valor da linha x coluna [%d,%d] = %d\n", i, j, m[ i ][ j ]);
}
int main (void)
{
imprime(mat);
}
Introduo a Linguagem C
Cadeia de Caracteres
Caracteres
A linguagem C no disponibiliza um tipo caractere e sim cdigos
numricos representados internamente na memria do computador,
atravs da utilizao do tipo char de 1 byte, 8 bits, representando assim
256 valores distintos.
A correspondncia entre os caracteres e seus cdigos numricos
feita utilizando uma tabela de cdigos conhecida como tabela ASCII:
Exemplo:
int main (void)
{
char c = 97;
printf ("Decimal: %d Caractere: %c\n", c, c);
}
Sada da Tela:
Decimal: 97 Caractere: a
Introduo a Linguagem C
Cadeia de Caracteres
Exemplo2:
int main (void)
{
char c = a;
printf ("Decimal: %d Caractere: %c\n", c, c);
}
Sada da Tela:
Decimal: 97 Caractere: a
0 1 2
40 ( ) *
50 2 3 4
60 < = >
70 F G H
80 P Q R
90 Z
Cdigos ASCII
0
7
8
9
10
13
12
7
de alguns caracteres que podem
Introduo a Linguagem C
3 4
+ ,
5 6
? @
I J
S T
5
7
A
K
U
6 7 8 9
. / 0 1
8 9 : ;
B C D E
L M N O
V W X Y
controle.
Cadeia de Caracteres
Leitura de Caracteres
A captura de caracteres simples via teclado feito utilizando a funo
scanf, e como formato "%c", colocando-se um & na frente da varivel
que armazenar o caractere.
Exemplo:
int main (void)
{
char a;
//scanf("%c", &a);
scanf(" %c", &a);
Introduo a Linguagem C
Cadeia de Caracteres
Para armazenar uma cadeia de caracteres devemos reservar uma
posio adicional para o caractere de fim de cadeia. Ao utilizar o
comando printf para imprimir a cadeia de caracteres usamos o formato
%s e ser impresso caractere a caractere at encontrar o finalizador da
cadeia de caracteres \0.
Exemplo 1:
int main (void)
{
char cidade [4];
cidade
cidade
cidade
cidade
[0]
[1]
[2]
[3]
=
=
=
=
R;
i;
o;
\0;
Cadeia de Caracteres
Exemplo 2:
Sem especificar o tamanho da string com o caractere nulo explcito.
int main (void)
{
char cidade [ ] = { R , i , o , \0 );
printf ("Cidade: %s", cidade);
return 0;
}
Exemplo 3:
Sem especificar o tamanho da string com o caractere nulo implcito.
int main (void)
{
char cidade [ ] = "Rio";
printf ("Cidade: %s", cidade);
return 0;
}
Introduo a Linguagem C
Cadeia de Caracteres
Leitura de Cadeia de Caracteres
A captura de cadeias de string via teclado feito da seguinte forma:
Exemplo:
int main (void)
{
char cidade [81];
scanf(" %s", &cidade);
scanf(" %[^\n]", &cidade); //Leitura de caracteres at encontrar \n
.
scanf(" %80[^\n]", &cidade); //leitura de no mximo 80 caracteres.
printf ("Cidade: %s\n", cidade);
}
O formato %[...] caracteres aceitos na leitura e (^) negao.
Caracteres aceitos para digitao: "%[aeiou].
Caracteres aceitos at que seja encontrada (pressionada) a tecla
Introduo a Linguagem C
Cadeia de Caracteres
Funes que Manipulam Cadeia de Caracteres
Exemplo 1:
void imprime (char *s)
{
printf ("%s\n, s);
}
Exemplo 2:
int comprimento (char *s)
{
int n = 0;
//contador.
Cadeia de Caracteres
Vetor de Cadeia de Caracteres
Para representar um vetor onde cada elemento uma cadeia de
caracteres, devemos implementar um vetor bidimensional (matriz) para
armazen-los.
Exemplo:
char alunos [50][80];
Nessa declarao o vetor alunos[ i ] acessa a cadeia de caracteres do
(i + 1) simo aluno da lista. J ao utilizar alunos[ i ][ j ] acessa a (j + 1)
sima letra do nome do (i + 1) simo aluno da lista.
void imprime (int n, char alunos[ ][80])
{
for (int i = 0; i < n; i++)
{
printf ( "%s\n", alunos[ i ];
}
}
Introduo
a Linguagem C
Tipos Estruturados
A
linguagem C
informaes
compostas
por
diversos
campos
atravs
de
tipos
estruturados.
Tipo Estrutura
Em C, podemos definir um tipo de dado cujos campos so compostos
de vrios valores de tipos mais simples. Imaginemos um ponto do plano
cartesiano, representado por suas coordenadas x e y, contendo valores
reais. Sem uma estrutura, teramos que representar cada coordenada
por dois pontos independentes.
float x;
float y;
Podemos definir uma estrutura ponto com os dois campos que
representam o ponto.
structa ponto
{ C
Introduo
Linguagem
Tipos Estruturados
Exemplo:
#include <stdio.h>
struct ponto {
float x;
float y;
};
int main (void)
{
struct ponto p;
printf("Digite as coordenadas do ponto (x , y): ");
scanf("%f %f", &p.x, &p.y );
printf("O ponto fornecido foi: (%.2f, %.2f)\n", p.x, p.y);
return 0;
}
Introduo a Linguagem C
Tipos Estruturados
Definio de novos tipos de dados
Podemos criar outros tipos de dados na linguagem C, utilizando o
comando typedef.
Exemplo:
typedef float Real;
typedef unsigned char Uchar;
Introduo a Linguagem C
Introduo a Linguagem C
Exerccios
1) Fazer um LED piscar, ficando aceso por 1 segundo e
apagado por 1 segundo.
2) Fazer dois LED piscarem de forma alternada, (LED1
aceso/LED 2 apagado LED1 apagado/LED 2 aceso), com um
tempo de 0,5 segundo.
3) Acender um LED ao pressionar um boto, sendo apagado
aps soltar o boto.
4) A partir do exerccio 2, utilizar um boto para fazer com
que os LEDs pisquem de forma alternada e ao pressionar
novamente este boto, os leds se apagaro.
5)
partir
de
trs
LEDs
posicionados
no
barramento
do
partir
de
trs
LEDs
posicionados
no
barramento
do
Introduo a Linguagem C