Introdução a Linguagem C

30
Estrutura de Dados Linguagem C Profª Ms. Eveline B. Rodrigues 1

Transcript of Introdução a Linguagem C

Estrutura de DadosLinguagem C

Profª Ms. Eveline B. Rodrigues

1

Conteúdo da aula de hoje:

• Introdução sobre a linguagem C• Variáveis• Vetores• Lista• Fila• Pilha

2

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

Linguagem C

Por que desenvolveram a linguagem C?

•O objetivo da lin­guagem era prover acesso de baixo nível ao hard­ware (CPU, I/Os e per­iféri­cos), pre­cisava ser portável para que o SO pudesse rodar em difer­entes platafor­mas de hard­ware, além de ter um bom desem­penho e otimizar o uso de memória;•Prin­ci­pal­mente numa época em que estavam começando a sur­gir as primeiras CPUs, e o preço por byte de memória era carís­simo.

4

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

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

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

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

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

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

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 imprimeum texto na tela doseu computador

11

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

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

Variáveis

• É um espaço de memória que pode conter, a cada tempo, valores diferentes;

14

Exemplo de Variávelmain( ){

int num;num=2;printf(“Este é o número dois: %d”, num);

}

15

16

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

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

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

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 ("\n\n\n\t Os numeros que voce digitou foram:\n\n");

for (count=0;count<100;count++) { printf (“Nro: %d", num[count]); }}

20

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 ("\n\n\n\t Os numeros que voce digitou foram:\n\n");for (count=0;count<totalnums;count++)

{ printf (" %d", num[count]); }}

21

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

Estrutura de DadosSegundo 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

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

Listas

25

• Os elementos em uma lista são acessados em qualquer ordem (acesso randômico).

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°

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°

Exercícios1) 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 %d\n, a,b,c,d)

}

28

Exercícios

3) Qual será a saída do programa abaixo:main(){

printf(“%s \n %s \n %s”, “um”, “dois”, “tres”);

}

29

BibliografiaBásicaSchildt, H., C Completo e Total, Editora Makron Books do Brasil Editora Ltda, 1996.

ComplementarEvaristo, 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