Capítulo 2
Recapitulação

2.0 Estruturas de Dados - Definição
2.1 Pilhas usando Vetores
    2.1.1 Programação Estruturada
    2.1.2 Modelagem da Pilha em Programação Estruturada
    2.1.3 Pilha - Implementação em "C"
2.2 Listas Ordenadas usando Vetores [ArquivoPowerPoint]
2.3 Trabalhos de Implementação de Pilha e Fila com Vetor

 
 


2.0 Estruturas de Dados - Definição Estruturas de Dados - 2 Aspectos:




2.1 Pilhas usando Vetores Implementação de Pilhas utilizando Programação Estruturada
2.1.1 Programação Estruturada


Na Programação Estruturada:

Programação Estruturada - Aspecto Estrutural dos Dados tipo Empregado { caracter nome[100];
caracter cargo[20];
caracter endereço[200];
inteiro  salario;
};

Variáveis

Empregado chefe;
Programação Estruturada - Aspecto Funcional Variáveis Empregado chefe;


Procedimento baixaSalario (inteiro porcentagem)
variaveis

real auxiliar;


início

auxiliar <- chefe.salario * porcentagem;
chefe.salário <- chefe.salario - auxiliar;
fim;

2.1.2 Modelagem da Pilha em Programação Estruturada constantes Maxpilha = 100; tipo Pilha { inteiro dados[Maxpilha];
inteiro topo;
};
Modelagem da Pilha
    1. Colocar e retirar dados da pilha.
    2. Testar se a pilha está vazia ou cheia.
    3. Inicializar
Algoritmo InicializaPilha

FUNÇÃO inicializaPilha()
início

aPilha.topo <- -1;
fim; Algoritmo PilhaCheia

Booleano FUNÇÃO pilhaCheia()

início

SE (aPilha.topo = Maxpilha - 1) ENTÃO
RETORNE(Verdade)
SENÃO
RETORNE(Falso);
fim;
Algoritmo PilhaVazia

Booleano FUNÇÃO pilhaVazia()

início

SE (aPilha.topo = -1) ENTÃO
RETORNE(Verdade)
SENÃO
RETORNE(Falso);
fim;

Algoritmo Empilha

Constantes

ErroPilhaCheia = -1;
ErroPilhaVazia = -2;
Inteiro FUNÇÃO empilha(inteiro dado)
início
SE (pilhaCheia) ENTÃO
RETORNE(ErroPilhaCheia);
SENÃO
aPilha.topo <- aPilha.topo + 1.
aPilha.dados[aPilha.topo] <- dado;
RETORNE(aPilha.topo);
FIM SE
fim;

Algoritmo Desempilha

Inteiro FUNÇÃO desempilha()
início

SE (pilhaVazia) ENTÃO
RETORNE(ErroPilhaVazia);
SENÃO
aPilha.topo <- aPilha.topo - 1;
RETORNE(aPilha.topo);
FIM SE
fim;

Algoritmo Desempilha - Variante

Inteiro FUNÇÃO desempilha()
início

SE (pilhaVazia) ENTÃO
ESCREVA("ERRO: Pilha vazia ao tentar desempilhar!");
RETORNE(ErroPilhaVazia);
SENÃO
aPilha.topo <- aPilha.topo - 1;
RETORNE(aPilha.dados[aPilha.topo]);
FIM SE
fim;

Algoritmo Topo

Inteiro FUNÇÃO topo()
início

SE (pilhaVazia) ENTÃO
ESCREVA("ERRO:Pilha vazia ao acessar!");
RETORNE(ErroPilhaVazia);
SENÃO
RETORNE(aPilha.dados[aPilha.topo]);
FIM SE
fim;


2.1.3 Pilha - Implementação em "C"         #include <stdio.h>
        #include "pilha.h"


Pilha - Exemplo de Programa Principal em "C"

/* Aplicacao: Leitura de Dados Int. do Usuário e */
/* Armazenamento em uma Pilha. */
/* PROGRAMA PRINCIPAL */
main()
{
    char tecla = ´a´;
    int dado;

    WHILE ( tecla != ´f´ )
    {
        printf("\nDigite E p/empilhar, D p/desempilhar \n");
        printf("Digite M para mostra pilha e F p/fim \n");
        tecla = getchar();
        getchar(); /* Ler o [enter] */
        SWITCH (tecla) {
          ´E´: {  printf("Digite o vaor p/empilhar: ");
                    scanf("%d%", &dado); /* Não esqueça do & */
                    if (empilha(dado) < 0)
                        { printf("Erro: Pilha cheia! \n"); }
                  }
            - - - -
        } /* fim switch */
    } /* fim while */
}

Pilha - Forma geral de um programa "C":
 

#include <cabeçalhos-padrão>
#include "cabeçalhos específicos"

função1()
- - -
- - -
- - -

funçãoN()
- - -
- - -
- - -

main()
{
- - -
- - -
- - -
}
 

  • Headerfiles nunca possuem comandos, somente definições
  • Headerfiles sempre são incluídos.
  • Contém todas as definições.
  • Arquivos de programa (comandos):
  • Nunca são incluídos
  • Nunca possuem diretivas #define
  • Arquivos de programa sempre têm sufixo .c
  • Mais tarde veremos:
  • Como utilizar mais de um arquivo .c (módulos)
  • Como garantir que definições não sejam repetidas com as diretivas #ifndef e #ifdef
  • Pilha - Compilação "C"      gcc -g -o <executavel> arq1.c arq2.c ? arqN.c
      Pilhas com Vetores - Roteiro de Laboratório