O documento apresenta uma aula sobre a linguagem C, abordando: 1) Introdução à linguagem C, variáveis, vetores, listas e filas; 2) Histórico e características da linguagem C; 3) Estrutura básica de programas em C e uso de variáveis e vetores.
2. Conteúdo da aula de hoje:
• Introdução sobre a linguagem C
• Variáveis
• Vetores
• Lista
• Fila
• Pilha
2
3. Linguagem C
• Criada por Dennis M. Ritchie e Ken Thompson
no laboratório Bell, em 1972.
• Baseada na Linguagem B de Thompson.
Ken Thompson e Dennis Ritchie em 1984
3
4. Linguagem C
Por que desenvolveram a linguagem C?
•O objetivo da linguagem era prover acesso de baixo
nível ao hardware (CPU, I/Os e periféricos), pre
cisava ser portável para que o SO pudesse rodar em
diferentes plataformas de hardware, além de ter um
bom desempenho e otimizar o uso de memória;
•Principalmente numa época em que estavam
começando a surgir as primeiras CPUs, e o preço por
byte de memória era caríssimo.
4
5. Linguagem C
O que podemos fazer com a linguagem C?
•Programação de qualquer tipo de sistema:
▫ Sistemas Operacionais (como o UNIX);
▫ Planilhas eletrônicas;
▫ Processadores de texto;
▫ Gerenciadores de BD;
▫ Processadores gráficos;
5
6. Linguagem C
• A linguagem C continua a ser largamente
utilizada no desenvolvimento de aplicações e
sistemas operacionais e a sua influência pode ser
vista em linguagens de programação mais
recentes, tais como C++, Java, C#, PHP e
JavaScript.
6
7. Linguagem C
• C é recomendada para aplicações de missão
critica, ou seja, que exige respostas rápidas, ex:
▫ servidores de aplicação;
▫ drivers;
▫ kernels de S.O.
7
8. Compilador C
• Maneira de comunicar com o computador:
programa;
• Linguagem que o computador entende:
linguagem de máquina;
• Os programas em C são traduzidos para
linguagem de máquina através de um
compilador.
8
9. Compilador C
• O ser humano compreende a linguagem natural
(português, inglês, ...), enquanto que o
computador entende a linguagem de máquina
(binária – 0 e 1)
9
compilador
10. Compilador C
• Lê cada instrução do programa e se não houver
erro converte-a para linguagem de máquina;
• O compilador gera um programa em disco com
o sufixo .OBJ com as instruções traduzidas.
• A este arquivo são agregadas rotinas em
linguagem de máquina que permitirão sua
execução, criando um produto final em disco
com sufixo .EXE.
10
11. Estrutura básica de um programa em C
• Um programa em C consiste em uma ou
várias funções.
• Vamos começar pelo menor programa
possível em C:
main( )
{
printf ( “primeiro programa”);
}
primeira função a ser executada.
inicia o corpo da função
termina a função
função que imprime
um texto na tela do
seu computador
11
12. Estrutura básica de um programa em C
• Programas de computador devem
poder ler e receber informações
• Como essas informações são
armazenadas?
12
13. Variáveis
• Aspecto fundamental de qualquer linguagem de
computador;
• É um espaço de memória reservado para
armazenar um certo tipo de dado;
• Tem um nome para que seu conteúdo possa ser
referenciado.
13
14. Variáveis
• É um espaço de memória que pode conter, a
cada tempo, valores diferentes;
14
17. Vetores
• Vetores são uma estrutura de dados muito
utilizada.
• Os vetores possuem todos os elementos
pertencentes ao mesmo tipo de dado.
• Para se declarar um vetor podemos utilizar a
seguinte forma geral:
tipo_da_variável nome_da_variável [tamanho];
17
18. Vetores
• Quando o C vê uma declaração como esta ele
reserva um espaço na memória suficientemente
grande para armazenar o número de células
especificadas em tamanho. Por exemplo, se
declararmos:
float nota[20];
18
19. Vetores
• o C irá reservar 4x20=80 bytes.
• Estes bytes são reservados de maneira contínua. Na linguagem C a
numeração começa sempre em zero.
• Isto significa que, no exemplo acima, os dados serão indexados de 0
a 19. Para acessá-los vamos escrever:
nota[0]
nota[1]
.
.
.
nota[19]
19
20. Exemplo 1
#include <stdio.h>
void main ()
{
int num[100]; /* Declara um vetor de inteiros de 100 posicoes */
for(cont=0;cont<100;cont++)
{
printf ("nEntre com um numero %d “, cont);
scanf ("%d", &num[count]);
}
printf ("nnnt Os numeros que voce digitou foram:nn");
for (count=0;count<100;count++)
{
printf (“Nro: %d", num[count]);
}
}
20
21. Exemplo 2
#include <stdio.h>
void main ()
{
int num[100]; /* Declara um vetor de inteiros de 100 posicoes */
int count=0;
int totalnums;
do
{
printf ("nEntre com um numero (-999 p/ terminar): ");
scanf ("%d", &num[count]);
count++;
} while (num[count-1]!=-999);
totalnums=count-1;
printf ("nnnt Os numeros que voce digitou foram:nn");
for (count=0;count<totalnums;count++)
{
printf (" %d", num[count]);
}
}
21
22. Exercício
• Reescreva o exemplo anterior, realizando a cada
leitura um teste para ver se a dimensão do vetor
não foi ultrapassada. Caso o usuário entre com
100 números, o programa deverá abortar o loop
de leitura automaticamente. O uso do Flag não
deve ser retirado.
22
23. Estrutura de Dados
Segundo o professor da COPPE/UFRJ, Jayme Luiz Szwarcfiter, em seu livro
Estruturas de Dados e seus Algoritmos:
“As estruturas diferem uma das outras pela disposição ou manipulação
de seus dados. A disposição de dados em uma estrutura obedece a
condições preestabelecidas e caracteriza a estrutura.
O estudo de estrutura de dados não pode ser desvinculado de seus
aspectos algoritmos. A escolha certa da estrutura adequada a cada caso
depende diretamente do conhecimento de algoritmos para manipular a
estrutura de maneira diferente.”
23
24. Listas
• Uma lista encadeada é uma representação de
uma sequência de objetos na memória do
computador.
• Cada elemento da sequência é armazenado em
uma célula da lista: o primeiro elemento na
primeira célula, o segundo na segunda e assim
por diante.
24
26. Filas
• Filas nada mais são que estruturas lineares de
informação que são acessadas na ordem FIFO (primeiro
que entra é o primeiro a sair).
• O primeiro item colocado na Fila é o primeiro item a ser
recuperado, e assim por diante.
• Uma característica especial da fila é não permitir o
acesso randômico a seus dados.
26
1° 2° 3°
27. Pilhas
• Uma Pilha é o contrário de uma Fila porque usa o
acesso LIFO (o último a entrar é o primeiro a sair).
• Imagine uma pilha de provas para serem corrigidas
por um certo professor.
• A prova da base da pilha será a última a ser corrigida
pelo professor e a prova do topo será a primeira a ser
corrigida.
27
3° 2° 1°
28. Exercícios
1) Um dos alunos preparou o seguinte programa e o apresentou para ser avaliado.
Ajude-0.
main{}
(
printf(Existem %d semanas no ano., 56);
)
2) O programa seguinte tem vários erros em tempo de compilação. Execute-o e
observe as mensagens apresentadas por seu compilador.
Main()
{
int a=1; b=2, c=3;
printf(“Os numeros são: %d %d %dn, a,b,c,d)
}
28
29. Exercícios
3) Qual será a saída do programa abaixo:
main()
{
printf(“%s n %s n %s”, “um”, “dois”, “tres”);
}
29
30. Bibliografia
Básica
Schildt, H., C Completo e Total, Editora Makron Books do Brasil
Editora Ltda, 1996.
Complementar
Evaristo, J., Aprendendo a programar programando em
linguagem C, Book Express, 2001.
Mizrahi, V. V., Treinamento em Linguagem C, Curso Completo,
Módulos 1 e 2, Makron Books do Brasil Editora Ltda,1990.
Kernighan, B.W & Ritchie, D. M., C a Linguagem de
Programação, Editora Campus, 1986.
Liberty, Jesse, Aprenda em 24 horas C++, Editora Campus,
1998.
30