Escolar Documentos
Profissional Documentos
Cultura Documentos
CONCEITOS BSICOS
www.harpia.eng.br
HISTRICO
Necessidade de escrever o Unix
Evoluo:
BCPL
B
Martin Richards;
ainda em uso na
Europa
Ken Thompson
www.harpia.eng.br
Dennis Ritchie;
concludo na
dcada de 70.
RECURSOS AVANADOS
Hardware
acesso porta serial;
acesso memria de vdeo (aplicaes
grficas);
acesso memria RAM: manipulao de
segmentos e overlays;
acesso rede de comunicao;
www.harpia.eng.br
RECURSOS AVANADOS
Software
criao de processos em multitarefa;
comunicao inter-processos:
Semforos;
Filas de mensagens;
www.harpia.eng.br
APLICAES
Desenvolvimento de software bsico;
Complemento de aplicativos :
rotinas mais rpidas;
Aplicaes cliente-servidor;
Rotinas de baixo nvel para prover baixo
tempo de resposta;
www.harpia.eng.br
UM PROGRAMA EM C
Uma funo principal e zero ou mais
funes auxiliares;
Distribuio:
Funo
principal
Funo 1
Funo
principal
Funo 1
Funo 2
Funo 2
1 arquivo fonte
www.harpia.eng.br
UM PROGRAMA EM C
Tipos de arquivos:
fonte
contm cdigo;
extenso c ou cpp
cabealho
definies e declaraes - extenso h
vrios so oferecidos pelo compilador
o programador pode criar os seus
so includos no fonte atravs do comando
# include <nome_do_arquivo.h>
www.harpia.eng.br
Gerao do Programa C
EDIO
prog.c
aux.c
pr-processamento
Mdulo expandido dos fontes
compilao
prog.obj aux.obj
link-edio
PROG.EXE
www.harpia.eng.br
Arquivos
da
biblioteca
Estrutura do Programa C
/* COMENTRIOS */
definies de pr-processamento
declaraes de funes;
declaraes de variveis globais e arrays;
main ( )
{
declaraes de variveis locais e arrays;
inicializaes;
/* COMENTRIOS */
comandos;
chamadas a funes;
}
< cdigo das funes >
www.harpia.eng.br
Definio de
constantes e
incluso de
arquivos
cabealho - .h
Todas as linhas
de comando
terminam em ;
Comandos de bloco so
delimitados por {}
Primeiro programa C
arquivo - pgrad1.c
# include <stdio.h>
main ( )
{
printf ("Hello World !");
}
www.harpia.eng.br
*/
www.harpia.eng.br
LINGUAGEM C
Introduo
www.harpia.eng.br
VARIVEIS
Forma geral para declarao (criao):
tipo lista de variveis;
www.harpia.eng.br
Variveis
Tipos Bsicos
char
1 caracter - 1 byte
int
inteiro - 2 a 4 bytes
float
real - 4 bytes, preciso de 6 dgitos
double
real - 8 bytes, preciso de 10 dgitos
www.harpia.eng.br
Variveis
Modificadores de Tipo
Podem ser aplicados aos tipos bsicos
para criar extenses a eles:
long
inteiro longo com sinal - >= int
short
inteiro curto com sinal - <= int (pouco usado)
unsigned
inteiro sem sinal
signed
inteiro com sinal - redundante
www.harpia.eng.br
Variveis
Combinaes vlidas:
long int
em geral 4 bytes
long double
16 bytes, preciso de 10 dgitos
unsigned long
em geral 4 bytes
unsigned char
1 byte
unsigned int
2 bytes
www.harpia.eng.br
Variveis
Nome:
tamanho depende do ambiente
maisculas, minsculas, nmeros e "_"
na prtica:
minsculas: variveis, funes, comandos
maisculas: constantes
exemplos:
int x, y, z;
char opcao;
double Pi;
www.harpia.eng.br
Variveis
Inicializao
pode ser na prpria declarao
int x = 0;
double Pi = 3.1415;
Constantes
H duas formas de definir constantes:
usando definio de pr-processamento
define
www.harpia.eng.br
Constantes
Com # define
# define PRIMEIRO '1'
# define VINTE
20
# define MES
Janeiro
# define TRINTA
036
# define TRINTA
0x1E
# define PI
3.1415
/* caracter */
/* inteiro */
/* string */
/* octal */
/* hexa */
/* real */
Constantes
Com const
Forma geral:
const tipo nome = valor;
Exemplo:
const int y = 2;
www.harpia.eng.br
Operadores
Aritmticos
comuns: + - * / =
resto da diviso de x por y : x%y
r = x % y;
/* se x 7 e y 2, r = ? */
atribuio:
a = 2;
b = a = 2;
i = i + 2; => i += 2;
Operadores
Incremento e Decremento
i++ (ps-incremento):
utiliza varivel e incrementa;
++i (pr-incremento):
incrementa varivel e utiliza;
i (ps-decremento);
--i (pr-decremento).
www.harpia.eng.br
Operadores
Incremento e Decremento
Exemplo:
int a, b = 10;
a = b++;
F valor de a? valor de b?
a = ++b;
F valor de a? valor de b?
/* incrementa de 1 a varivel a */
E/S Formatada
Sada: printf
copia dados com formatao para a sada
padro
sintaxe:
printf ("controle", lista de variveis);
Texto +
Formatao de varivel +
caracteres de controle
www.harpia.eng.br
E/S Formatada
Formatos de varivel
%d inteiros;
%ld inteiros longos;
%o octal;
%x hexadecimal;
%u inteiro sem sinal;
%c caracter;
%f real, com 6 decimais;
%lf real, com 10 dgitos;
%s cadeia de caracteres;
www.harpia.eng.br
E/S Formatada
Caracteres de Controle
www.harpia.eng.br
www.harpia.eng.br
E/S Formatada
Detalhes importantes:
Como limitar o nmero de decimais:
"%.nf
n o nmero de decimais desejado
E/S Formatada
Entrada: scanf
l dados com formatao da entrada padro
sintaxe:
scanf ("controle", lista de variveis);
Apenas formatao de
varivel
www.harpia.eng.br
Operadores
Relacionais
> < <= >= == !=
Cuidado!
if (a = b)
faz a = b e verifica se a TRUE
if (a == b)
verifica se a igual a b
www.harpia.eng.br
Operadores
Lgicos
AND - &&
OR - ||
NOT - !
Exemplo:
if (a == b && a != 0)
printf ("a diferente de zero");
www.harpia.eng.br
www.harpia.eng.br
www.harpia.eng.br
www.harpia.eng.br
main ()
{
char op;
float soma=0,
num;
scanf ("%c",
&op);
while (op != 's')
{
switch (op)
{
case 'i':
scanf ("%f",
&num);
soma +=
num;
break;
www.harpia.eng.br
case 'l':
printf ("%.2f", soma);
break;
default:
printf ("\nOpcao Invalida\n");
}
scanf ("%c", &op);
}
printf ("\nSoma total: %.2f", soma);
}
www.harpia.eng.br
Controle de fluxo
COMANDO: for
for (inicializao; condio; incremento)
{
comandos;
}
Valor inicial da
varivel que ir
controlar o for
www.harpia.eng.br
Condio
para que o
for continue;
o mesmo que
while
Incremento
da varivel
de controle
do for
www.harpia.eng.br
LINGUAGEM C
Funes e Escopo de Variveis
www.harpia.eng.br
Funes
Trecho de um programa independente com um
objetivo
determinado,
simplificando
o
entendimento do programa e proporcionando
menores chances de erro e complexidade;
Justificativa:
Dividir e estruturar um programa em partes
logicamente coerentes;
Facilidade em testar os trechos em separado;
Maior legibilidade de um programa;
O programador cria sua prpria biblioteca de funes;
Evita que uma certa seqncia de comandos seja
escrita repetidamente.
www.harpia.eng.br
Funes
Uma funo um bloco contendo incio e fim,
sendo identificada por um nome, pelo qual ser
referenciada em qualquer parte e em qualquer
momento do programa;
Podem estar em um ou mais arquivos;
O uso de funes envolve dois passos:
Declarao:
antes do main ou no prprio main;
Definio:
normalmente aps o main ou em outro arquivo;
www.harpia.eng.br
Funes - Definio
o cdigo da funo e deve seguir a
sintaxe:
tipo nome (declarao de parmetros)
{
declarao de variveis;
comandos;
}
Funes - Declarao
Indica o formato da funo:
tipo nome (lista de parmetros);
Tipo: tipo de dado retornado pela funo:
se a funo no retorna nada void;
www.harpia.eng.br
Funes - Definio
Como retornar valor de uma funo?
F comando return
return (expressao); /* os ( ) so opcionais */
www.harpia.eng.br
Funes - Exemplo 1
Clculo da soma de dois nmeros
int soma (int a, int b);
main ()
{
int n1, n2, res;
scanf ("%d%d", &n1, &n2);
res = soma (n1, n2);
printf (Soma de %d e %d: %d", n1, n2, res);
}
www.harpia.eng.br
Funes - Exemplo 1
Clculo da soma de dois nmeros
int soma (int a, int b)
{
int x;
x = a + b;
return x;
}
www.harpia.eng.br
www.harpia.eng.br
Escopo de variveis
O C dispe das seguintes classes de
armazenamento de variveis:
Automticas;
globais*;
Externas;
Estticas;
Escopo de Variveis
Automticas:
variveis locais e parmetros de funes;
vlidas apenas na funo em que so
declaradas;
o valor perdido quando a funo termina;
Globais:
vlidas no arquivo fonte onde so criadas;
declaradas fora de qualquer funo.
www.harpia.eng.br
Escopo de Variveis
Externas
vlidas em todos os arquivos fonte
compilados que faro parte do executvel;
devem ser declaradas em todos os fontes
onde sero usadas:
no primeiro cdigo fonte: tipo nome;
nos demais arquivos: extern tipo nome;
exemplo:
programa de clculo de mdia de um array.
www.harpia.eng.br
www.harpia.eng.br
Escopo de Variveis
Estticas
declarao:
static tipo nome;
exemplo:
srie numrica.
www.harpia.eng.br
Escopo de Variveis
Estticas
usadas tambm para inicializar arrays em
funes
void inic_array (int impar [])
{
static int impar [] = {1, 3, 5, 7, 9};
}
www.harpia.eng.br
Funes Exerccios
Considerando que o compilador utilizado no
contm a funo de potenciao pow, escrever
uma funo para calcular x elevado a potncia
n;
Escrever uma funo para calcular o fatorial de
um nmero dado pelo usurio;
Escrever uma funo que receba trs nmeros
e coloque-os em ordem crescente;
Escrever uma funo menu para caixa de banco
eletrnico (1-saldo; 2-depsito; 3-saque; 4-nova
conta; 5-encerra conta; 6-sai do programa);
www.harpia.eng.br
www.harpia.eng.br
www.harpia.eng.br
www.harpia.eng.br
Barramentos I/O
Envio ou recebimento de dados
Deve-se informar o endereo dos barramentos pelos quais a
informao vai trafegar.
PORTA PARALELA:
Endereo para o conjunto de 8 bits.
A informao (entrada ou sada) trafega sempre em 8 bits!
Barramentos de I/O
Modos de Operao:
A porta paralela atualmente possui trs modos de operaes.
So eles (IEEE 1284):
SPP (Standard Parallel Port) bits de dados unidirecional;
EPP (Enhanced Parallel Port) bits de dados bidirecional;
ECP (Extended Capabilities Port) bits de dados
bidirecional;
Estes modos de operao so configurados pelo BIOS Setup.
Diferenciam-se:
Bidirecionabilidade;
Velocidade de tranmisso;
Forma de transmisso;
Etc.
www.harpia.eng.br
Barramentos de I/O
Pinagem da porta paralela:
STATUS
Endereo 379h
CONTROLE
Endereo 37Ah
DADOS
Endereo 378h
D7
11
D7
NC
D7
D6
10
D6
NC
D6
D5
12
D5
NC
D5
D4
13
D4
NC
D4
D3
15
D3
17
D3
D2
NC
D2
16
D2
D1
NC
D1
14
D1
D0
NC
D0
D0
www.harpia.eng.br
Padronizao:
www.harpia.eng.br
Pinagem:
www.harpia.eng.br
www.harpia.eng.br
Formato do Sinal
Forma dos sinais:
Sinal Analgico
Freqncia ciclos/segundo [hz]
Sinal Digital
Taxa de Transmisso pulsos/segundo [bauds/s]
Se representa dois nveis lgicos [bits/s]
www.harpia.eng.br
Restries Passagem do
Sinal
Banda Passante e Freqncia de Corte (Filtro)
Todo meio de transmisso tem uma capacidade de passagem
de freqncias estabelecida pela freqncia de corte
Assim um Sinal com F = 50 kHz:
www.harpia.eng.br
Restrio a passagem da
informao
Sinal Analgico: passa/no passa
pequena degenerao
www.harpia.eng.br
Restrio a passagem da
informao
Analisando o
Espectro do
Sinal Digital:
www.harpia.eng.br
Restrio a passagem da
informao
Conjunto das
Restries:
Atenuao (Atenuation)
Filtro (Limited Bandwidth)
Rudo (Noise)
Atraso (Delay)
Comparativo dos Atrasos
Satlite: 257 ms
Microondas: 3 s/Km
Cabo Coaxial: 5 s/Km
Rudo Aleatrio
www.harpia.eng.br
www.harpia.eng.br
Envio de Dados
Como o compilador identifica as funo de envio
e recebimento de dados pela porta paralela?
Utilizando funes para chamada de dll;
Chamando a dll dinamicamente;
Cabealhos
Procedimentos
para chamar a
dll
dll
Cdigo do programa em C
www.harpia.eng.br
Resto
do
cdigo
www.harpia.eng.br
CDIGO!
FreeLibrary(hLib); //Libera memria alocada pela DLL.
return 0;
}
+ Funes
+ Variveis
+ Cabealhos
+ implementaes
www.harpia.eng.br
www.harpia.eng.br
Envio de Dados
O comando em C que atribui valores referente porta
desejada o: outportB(ENDERECO, VALOR)
Significado de tais parmetros:
ENDERECO
So valores em hexadecimal que representa o endereamento
da porta desejada. Normalmente so:
www.harpia.eng.br
0x378
0x278
-
0x379
0x279
-
0x37a
0x37a
-
D2
4
2
1
D1 D0
3 2
1 0
1 1
Envio de Dados
outportB(ENDERECO, VALOR);
VALOR:
o valor decimal da representao binria relacionada bit a bit
com a pinagem da do conector DB25.
Decimal
Binrio
00000001
2 - D0
00000010
3 - D1
00000100
4 - D2
00001000
5 - D3
16
00010000
6 - D4
32
00100000
7 - D5
64
01000000
8 - D6
128
10000000
9 - D7
www.harpia.eng.br
Comentrio
Envio de Dados
Ento, para ativar o pino 3 D1 dos oitos pinos da porta
de dados de endereo 0x378 atravs de comando em C:
outportB(0x378, 2);
C1 C0
14 1
1 0
1 1
int i;
unsigned char enviar=128; //10000000 em binrio.
for (i=0; i<7; i++)
{
outportB(LPT1,enviar);
//Envia para a Porta LPT1 - Acende o
LED colocado na posio enviar.
enviar = enviar >> 1;
//A cada passagem, o bit 1 movido
para a direita.
sleep(100);
//Tempo para o prximo LED acender.
}
www.harpia.eng.br
Acionamento de motor de
passo via porta paralela
www.harpia.eng.br
Acionamento de motor de
passo via porta paralela
www.harpia.eng.br
Recebimento de dados
Varivel = inportB(ENDERECO)
Valor retornado:
o byte retornado pela porta paralela, com representao binria
relacionada bit a bit com a pinagem da do conector DB25.
S7 S6 S5 S4 S3
Nenhum
Pino
11
10
12
13
15
Posio
Byte
www.harpia.eng.br
www.harpia.eng.br
{
Byte = inportB(0x379); // l um byte da porta paralela
printf(%d\n, Byte); // mostra na tela o valor
correspondente em inteiro.
...
}
}
www.harpia.eng.br
Cuidado !!!
A Porta Paralela est ligada diretamente placa me de
seu computador. Muito cuidado ao conectar circuitos
eletrnicos a essa porta, pois, uma descarga eltrica ou
um componente com a polaridade invertida, poder causar
danos irreparveis ao seu computador, seja coerente.
www.harpia.eng.br
LINGUAGEM C
Arquivos
www.harpia.eng.br
Arquivos
O sistema de E/S do C permite
manipulao de arquivos:
na representao binria interna;
no formato do tipo texto;
O arquivo uma
seqncia de
caracteres onde
cada linha
terminada com \n
www.harpia.eng.br
O arquivo
formado de
registros; entretanto
no mandatrio
seguir apenas um
formato de registro
Arquivos
Para efetuar operaes em arquivos C:
Criar descritor de arquivo:
FILE *fp;
Inserir/Ler Registros:
Fechar Arquivo:
fclose (fp);
www.harpia.eng.br
Arquivos
Modo indica, para arquivos texto:
www.harpia.eng.br
Arquivos - Exemplo 1
Criando um arquivo texto
void main (void)
{
FILE *arq;
arq = fopen (nome do arquivo, "w");
if (arq == NULL)
{
return;
}
fclose (arq);
}
www.harpia.eng.br
Arquivos - Funes
Inserir/Ler Registros - Arquivos Texto
fputs (s, fp);
escreve a cadeia de caracteres s no arquivo fp
Arquivos - Funes
Outras Funes
fseek (fp, nbytes, origem);
reposiciona fp de nbytes a partir da origem;
origem uma constante definida no stdio.h:
SEEK_CUR - posio atual;
SEEK_SET - incio do arquivo;
SEEK_END - final do arquivo;
rewind (fp);
reposiciona fp no incio do arquivo;
remove (nome);
apaga arquivo nome;
www.harpia.eng.br
Arquivos - Exemplo 2
int main()
{
int a,b,c,valor1,valor2,valor3;
FILE *rafa;
rafa=fopen("testando.txt","w");
if(rafa==NULL)
{
printf("Nao foi possivel criar o arquivo \"%s\"\n", "testando.txt");
}
else
{
printf("Arquivo \"%s\" criado com sucesso\n", "testando.txt");
printf("Digite valores para salvar no arquivo: ");
scanf("%d%d%d", &valor1,&valor2,&valor3);
fprintf(rafa,"%d\t%d\t%d",valor1,valor2,valor3);
}
fclose(rafa);
rafa=fopen("testando.txt","r");
fscanf(rafa, "%d%d%d", &a,&b,&c);
printf("%d, %d e %d foram encontrados no arquivo\n", a,b,c);
fclose(rafa);
}
www.harpia.eng.br
Arquivos - Exemplo 3
int main(int argc, char *argv[])
{
int cont=0;
char caractere;
FILE *ponteiro;
ponteiro=fopen("contem_caracteres.txt","r");
if(ponteiro==NULL)
{
printf("Erro ao abrir o arquivo.\n");
}
else
{
do
{
caractere=getc(ponteiro);
if(caractere=='$')
{
cont++;
}
}
while(caractere!=EOF);
www.harpia.eng.br
}
printf("Foram encontrados %d caracteres $\n", cont);
}
LINGUAGEM C
Arrays
www.harpia.eng.br
Arrays Unidimensionais
Conjunto finito de elementos homogneos
Limites de um array:
inferior: primeiro elemento, ndice 0
superior: nmero de elementos - 1
www.harpia.eng.br
Arrays Unidimensionais
Uso:
manter tabelas em memria
quantidade conhecida de itens
Operaes possveis
extrao de elemento
armazenamento de elemento
www.harpia.eng.br
Arrays Unidimensionais
Declarao:
tipo nome_array [dim];
Exemplo:
int num [15];
char cadeia [80];
Extrao/Armazenamento
x = num [7];
printf (%d, num [14]);
num[0] = 4;
www.harpia.eng.br
www.harpia.eng.br
Arrays Unidimensionais
Array de Caracteres STRINGS
forma de operar com strings em C
terminado com o caracter NULL, que indica o
fim da cadeia
o NULL conta como caracter no tamanho do
array
em C, NULL = '\0'
www.harpia.eng.br
www.harpia.eng.br
www.harpia.eng.br
Arrays Unidimensionais
Inicializao de Arrays
Numricos
tipo nome_array [dim] = { i0, i1, i2,..., in};
Caracteres
char nome_array [dim] = "i0i1i2...in";
www.harpia.eng.br
Arrays Bidimensionais
Declarao:
tipo nome_array [n_linhas][n_colunas];
Exemplo:
int num [15][10];
char nomes [30][40];
Extrao/Armazenamento
x = num [7][6];
printf (%d, num [3][2]);
num[0][3] = 4;
www.harpia.eng.br
Arrays Bidimensionais
Matriz de Caracteres
cada linha armazena um array de caracteres
o array tambm termina com '\0'
pode-se tambm armazenar caracteres
independentes
www.harpia.eng.br
Arrays Bidimensionais
Inicializao de Matrizes
Numricas
tipo nome_array [<nl>] [nc] = { {i00, i01, ..., i0n}, ...
{in0, in1, ..., inn} };
Caracteres
char nome_array [<nl>] [nc] = {"i00i01...i0n", ...
"in0in1...inn"};
www.harpia.eng.br
LINGUAGEM C
Ponteiros
www.harpia.eng.br
Ponteiros
Variveis que armazenam um endereo
de memria;
Existem dois operadores:
Operador *
usado para declarar o ponteiro e;
para retornar o contedo da varivel apontada;
Operador &
retorna o endereo do operando.
www.harpia.eng.br
Ponteiros
Declarao de um ponteiro:
tipo *nome;
nome um ponteiro;
tipo indica o tipo de contedo para onde
nome aponta;
Ponteiros - Exemplo
#include <stdio.h>
int main()
{
int i, j, *p;
p = &i;
*p = 5;
j = i;
printf("%d %d %d\n", i, j, *p);
return 0;
}
www.harpia.eng.br
Ponteiros - Exemplo
A diferena entre os operadores
main ()
{
int num, *pont;
scanf (%d, &num);
pont = #
printf (\n%d, pont);
printf (\n%d, *pont);
printf (\n%d, &pont);
}
www.harpia.eng.br
Ponteiros
Diversos apontadores para o mesmo
endereo:
int i;
int *p, *q, *r;
A varivel i passa
a ter 4 nomes: i,
*p, *q, *r.
p = &i;
q = &i;
r = p; /*ponteiro para ponteiro*/
www.harpia.eng.br
www.harpia.eng.br
void main()
{
int a,b;
a=5;
b=10;
printf("%d %d\n", a, b);
permuta(a,b);
printf("%d %d\n", a, b);
}
void main()
{
int a,b;
a=5;
b=10;
printf("%d %d\n",a,b);
permuta(&a,&b);
printf("%d %d\n",a,b);
}
*i passa a ser outro nome para a e *j passa a ser outro nome para b
www.harpia.eng.br
Ponteiros e arrays
Ponteiros e arrays intimamente ligados:
#define MAX 10
int main()
{
int a[MAX];
int b[MAX];
int i;
for(i=0; i<MAX; i++)
a[i]=i;
b=a;
return 0;
}
www.harpia.eng.br
Ponteiros e arrays
Ponteiros e arrays intimamente ligados:
#define MAX 10
void main()
{
int a[MAX];
int i;
int *p;
p = a; /* a um ponteiro */
for(i=0; i<MAX; i++)
a[i]=i;
printf("%d\n",*p);
}
www.harpia.eng.br
Ponteiros e arrays
Substituindo for (i=0; i<MAX; i++) b[i]=a[i];
p=a;
q=b;
for (i=0; i<MAX; i++)
{
*q = *p;
q++;
p++;
}
www.harpia.eng.br
Ponteiros e arrays
Passando array como parmetro:
www.harpia.eng.br
Ponteiros Exerccios
www.harpia.eng.br
Ponteiros
Alocao Dinmica de Memria:
quando uma varivel definida, o compilador
aloca o espao necessrio automaticamente;
quando um ponteiro definido, compilador
aloca espao para armazenar o endereo,
no um valor.
O programador tem que pedir explicitamente
uma rea para guardar os dados que deseja:
alocao dinmica.
www.harpia.eng.br
Ponteiros
Podemos usar ponteiros para:
criar arrays dinamicamente;
criar estruturas de dados dinmicas;
Ponteiros - Funes
malloc:
aloca 1 bloco de armazenamento:
no limpa regio alocada:
p = malloc (n de bytes).
calloc
aloca vrios blocos contguos em memria;
limpa regio alocada:
p = calloc (n de blocos, n de bytes);
www.harpia.eng.br
Ponteiros - Funes
free
libera rea de memria alocada
free (p)
Ponteiros - Funes
Se no se sabe quanto de memria
alocar:
usar operador : sizeof (tipo)
exemplo:
p = malloc (sizeof (int))
permite portabilidade
Ponteiros - Exemplo
Ler array e listar invertido
main ()
{
char *s;
int t;
if ((s = malloc (80 * sizeof (char)) == NULL)
{
return;
}
gets (s);
for (t = strlen (s) - 1; t >= 0; t--)
putchar (s [t]);
free (s);
}
www.harpia.eng.br
Parmetros do main
Pode-se criar um programa em C para
receber um ou mais valores de diversos
tipos;
Esses valores so passados cada vez que
o programa executado:
exemplo: utilitrio cp do Unix;
www.harpia.eng.br
Parmetros do main
Forma geral:
void main (int num, char *cad [ ])
contm o
nmero de
parmetros que
foram digitados
contm todos os
parmetros que
foram digitados,
inclusive o nome
do programa
LINGUAGEM C
Tipos Estruturados
www.harpia.eng.br
Tipos Estruturados
No C h vrios recursos para criao de
novos tipos de dados:
dos quais veremos estruturas;
Estruturas:
Agrupamento de variveis de tipos diferentes,
referenciado por um mesmo nome;
tambm chamadas de registros.
www.harpia.eng.br
Tipos Estruturados
Como utiliz-los no programa
especificar a estrutura:
equivale a criar um novo tipo no programa;
pode ser feito em qualquer lugar; de preferncia,
no incio do arquivo;
da
Tipos Estruturados
Criao da estrutura:
struct nome
{
tipo1 elem1;
tipo2 elem2;
...
};
Declarao de variveis:
struct nome var1, var2, ...;
www.harpia.eng.br
Endereco tem os
campos rua, num,
apto, bairro
Tipos Estruturados
Referncia a elementos da estrutura:
var. elem
var => nome da varivel;
elem => elemento da estrutura;
No exemplo anterior:
strcpy (Endereco.rua, Wanderley Pinho);
Endereco.num = 577;
Endereco.apto = 902;
strcpy (Endereco.bairro, Itaigara);
www.harpia.eng.br
Tipos Estruturados
Pode-se copiar o contedo de uma
varivel estrutura para outra de mesmo
tipo:
struct end EnderecoNovo, EnderecoAntigo;
EnderecoNovo = le_dados ();
EnderecoAntigo = EnderecoNovo;
www.harpia.eng.br