Vous êtes sur la page 1sur 25

INE5408

Estruturas de Dados

Programação estruturada e noções


básicas da linguagem C
Programação Estruturada
Programação Estruturada:

inventada por Niklaus Wirth


(Univ. de Zurique - década 1970)

também chamada de “Programação sem


GoTo”
Programação com GoTo (2ª geração de
linguagens de programação
Exemplo 1: FORTRAN
C AREA OF A TRIANGLE - HERON'S FORMULA
C INPUT - CARD READER UNIT 5, INTEGER INPUT, ONE BLANK CARD FOR END-OF-DATA
C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT
C INPUT ERROR DISPAY ERROR MESSAGE ON OUTPUT
501 FORMAT(3I5)
601 FORMAT(4H A= ,I5,5H B= ,I5,5H C= ,I5,8H AREA= ,F10.2,12HSQUARE UNITS)
602 FORMAT(10HNORMAL END)
603 FORMAT(23HINPUT ERROR, ZERO VALUE)
INTEGER A,B,C
10 READ(5,501) A,B,C
IF(A.EQ.0 .AND. B.EQ.0 .AND. C.EQ.0) GO TO 50
IF(A.EQ.0 .OR. B.EQ.0 .OR. C.EQ.0) GO TO 90
S = (A + B + C) / 2.0
AREA = SQRT( S * (S - A) * (S - B) * (S - C))
WRITE(6,601) A,B,C,AREA
GO TO 10
50 WRITE(6,602)
STOP
90 WRITE(6,603)
STOP
END
Programação com GoTo (2ª geração de
linguagens de programação
Exemplo 2: COBOL
000100 ID DIVISION.
000200 PROGRAM-ID. ACCEPT1.
000300 DATA DIVISION.
000400 WORKING-STORAGE SECTION.
000500 01 WS-FIRST-NUMBER PIC 9(3).
000600 01 WS-SECOND-NUMBER PIC 9(3).
000700 01 WS-TOTAL PIC ZZZ9.
000800*
000900 PROCEDURE DIVISION.
001000 0000-MAINLINE.
001100 DISPLAY 'ENTER A NUMBER: '.
001200 ACCEPT WS-FIRST-NUMBER.
001300*
001400 DISPLAY 'ANOTHER NUMBER: '.
001500 ACCEPT WS-SECOND-NUMBER.
001600*
001700 COMPUTE WS-TOTAL = WS-FIRST-NUMBER + WS-SECOND-NUMBER.
001800 DISPLAY 'THE TOTAL IS: ', WS-TOTAL.
001900 STOP RUN.
Programação Estruturada
• Baseada na expressão de algoritmos única e
exclusivamente através de 4 grupos de
estruturas de controle:
– bloco: comando ou conjunto de comandos sempre
executados em seqüência.
Ex.: (Pascal): begin … end;
– estrutura condicional: SE-ENTÃO-SENÃO
Ex.: (Pascal): if (cond) then bloco1 else bloco2;
– estrutura de repetição: ENQUANTO COND FAÇA
BLOCO
Ex.: (Pascal): while (cond) do bloco;
– estrutura de abstração: procedimento ou função.
Agrupamento de comandos com um nome e
eventualmente também parâmetros nomeados.
Programação Estruturada
• Para nós parece um retrocesso.
• Na época:
– fazia-se programas completamente ininteligíveis;
– foi um grande avanço no sentido de:
• produzir código mais fácil de se manter e entender;
• produzir código com mais qualidade.
• A Programação Estruturada definiu:
– uma nova disciplina na programação;
– um novo grupo de linguagens de programação, a 3ª
Geração.
• Exemplos: Pascal, Algol, C, PL/1
• Ainda muito utilizada hoje em dia:
– Sistemas Operacionais;
– Análise Numérica/Computação Gráfica;
– Redes de Computadores.
Programação Estruturada
• Não existem objetos:
– dados e seu comportamento são considerados em separado;
– unificar uma estrutura de dados com as operações definidas
sobre a mesma é função do programador.
• Existem variáveis e tipos (dados):
– variáveis podem ser globais ou locais (escopo);
– tipos podem ser primitivos, derivados ou estruturados.
• Existem procedimentos e funções (comportamento):
– conjunto de comandos referenciados por um nome;
– um procedimento é especial e se chama Programa Principal.
Programação Estruturada
• Modelamos as estruturas de dados propriamente
ditas como um tipo estruturado:
– estrutura é uma coleção de variáveis referenciada por um
mesmo nome;
– imagine um objeto sem métodos;
– chamamos a cada elemento desta coleção de campo.
• Algoritmicamente:
tipo Empregado {
caracter nome[100];
Campos
caracter cargo[20];
caracter endereço[200];
inteiro salário;
};
Variáveis
Variável global
Empregado chefe;
Programação Estruturada
• Modelamos as operações sobre uma estrutura de dados como
procedimentos ou funções:
– variáveis globais valem dentro de qualquer função (escopo global).
• Antes de vermos alocação dinâmica de memória e ponteiros vamos
trabalhar com funções sem alguns parâmetros.

• Algoritmicamente:
Variáveis
Empregado chefe;

Procedimento baixaSalário (inteiro porcentagem)


variáveis
real auxiliar;
início
auxiliar <- chefe.salário * (porcentagem / 100);
chefe.salário <- chefe.salário - auxiliar;
fim;
A Linguagem C
Declaração de Variáveis
Podem ter qualquer nome, desde que sejam iniciadas com letra ou
sublinhado (_);
int _numero;
Não podem ter nomes iguais aos de funções definidas pelo programador,
nem palavras reservadas da linguagem, tampouco nomes utilizados
nas bibliotecas do C;
int main;
int while;
int char;
O C é Case Sensitive, ou seja, int numero é diferente de int Numero;
Pode ter nomes de até 32 caracteres;
Existem 5 tipos básicos de variáveis: char, int, float, double e void;
Declaração de Constantes
Podemos utilizar mais de uma forma para definir constantes no C, a saber:

#define constante = 100


ou
const int constante = 100;
Declaração de Vetores e Matrizes
int Vetor[5]; // declara um vetor de 5 posições, indices 0 a 4

int Matriz[5][3]; // declara uma matriz de 5 linhas e 3 colunas

É possível utilizar constantes ou mesmo variávei para definir o tamanho de


um vetor:

#define TAM_MAX 10 // constante TAM_MAX = 10

double VetReais[TAM_MAX];
Decl. Vetores e Matrizes (Cont.)
int tamanho = 10;

double Vetor [tamanho];

Observe que a reserva de espaço em memória para a matriz Vetor é feita no


momento da declaração. Se a variável tamanho tiver seu valor alterado no
decorrer do programa, isto NÃO significa que Vetor terá o tamanho alterado.
Modelagem de tipos
#define MAXLISTA 100

typedef struct {
char nome[31];
char fone[11];
} tAgenda;

typedef struct {
tAgenda dados[MAXLISTA];
int ultimo;
} tLista;

Acessando:
x = aLista.dados[10].fone;
Declaração de Funções
As funções no C são nomeadas da seguinte forma geral:

tipo_de_retorno nome_da_função (declaração_de_parâmetros)


{
corpo_da_função
}

Utilizam para o retorno da função a palavra reservada return;

int funcao_teste (int a, int b)


{
int resultado;
resultado = a + b;
return (resultado);
}
Função Main
Esta é a primeira função a ser executada quando o programa é executado.
A palavra “void” indica que seu retorno é vazio.

#include <stdio.h> /* biblioteca standart I/O */


void main () {
int Dias; /* Declaracao de variáveis
float Anos;
printf ("Entre com o número de dias: ");
/* Entrada de Dados */
scanf ("%d",&Dias);
Anos=Dias/365.25;
/* Conversao Dias->Anos */
printf ("\n\n%d dias equivalem a %f anos.\n",Dias,Anos);
}
Operadores
Aritméticos e de atribuição:
+ Soma inteira e ponto flutuante
- Subtração ou troca de sinal
* Multiplicação
/ Divisão
% Resto de divisão
++ Incremento
-- Decremento

Lógicos e relacionais:
&& = and
|| = or
! = not, ou não
== igualdade (dois sinais de igual)
Estruturas de Controle de Fluxo
SE (if)

if(condicao) {
bloco de codigo;
} else {
bloco de codigo 2;
}
Estruturas de Controle de Fluxo
(Cont.)
switch (variável)
{
case constante_1:
declaração_1;
break;
case constante_n:
declaração_n;
break;
default
declaração_default;
}
Estruturas de Controle de Fluxo
(Cont.)
for (inicialização;condição;incremento) declaração;
int z = 0;
for (z=0;z < 30; z++) {
printf(“\nO Valor de Z é %d”,\);
}

while (condição) declaração;


int z = 0;
while (z < 30) {
printf(“\nO Valor de Z é %d”,\);
z++;
}
Estruturas de Controle de Fluxo
(Cont.)
while (condição) declaração;

int z = 0;
while (z < 30) {
printf(“\nO Valor de Z é %d”,\);
z++;
}
Formatação de saídas
\n Quebra de linha (Pula para a próxima linha)
\r Retrocede o cursor para o início da linha
\t Insere uma tabulação no texto
\b Retrocede o cursor uma posição
\“ Imprime a aspas
\\ Imprime uma barra invertida

Ex: printf(“\nEste é um \nExemplo”);


Formatação de saídas (Cont.)
%i inteiros com sinais (base decimal)
%d inteiros com sinais (base decimal)
%f ponto flutuante
%s cadeia de caracteres (string)
%u inteiros sem sinal
%x imprime um número na base hexadecimal. As letras serão minúsculas.
%X imprime um número na base hexadecimal. As letras serão maiúsculas.
%p Apresenta endereço de memória.
Ex: printf(“\nEste é um \nExemplo que imprime o número %d”,
var_numero);
Documentação de código

http://www.bgsu.edu/departments/compsci/docs/documentation.html

Vous aimerez peut-être aussi