16.04.2013 Views

Introdução ao conceito de algoritmo e programação ... - UFMG

Introdução ao conceito de algoritmo e programação ... - UFMG

Introdução ao conceito de algoritmo e programação ... - UFMG

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

8QLYHUVLGDGH )HGHUDO GH 0LQDV *HUDLV 8)0*<br />

,QVWLWXWR GH &LrQFLDV ([DWDV ,&([<br />

'LVFLSOLQD 3URJUDPDomR GH &RPSXWDGRUHV<br />

3URIHVVRU 'DYLG 0HQRWL<br />

$XOD<br />

,1752'8d­2 $2 &21&(,72 '( $/*25,702 ( 352*5$0$d­2<br />

(6758785$'$<br />

2EMHWLYRV:<br />

- Fornecer o <strong>conceito</strong> <strong>de</strong> <strong>algoritmo</strong> e estrutura <strong>de</strong> dados;<br />

- Introduzir as estruturas básicas <strong>de</strong> controle;<br />

- Apresentar a <strong>programação</strong> estruturada como metodologia para <strong>de</strong>senvolvimento <strong>de</strong><br />

<strong>algoritmo</strong>s.<br />

2 &21&(,72 '( $/*25,702 ( $6 (6758785$6 %È6,&$6 '( &21752/(<br />

Programar é basicamente construir <strong>algoritmo</strong>s<br />

$omR: é um evento que ocorre num período <strong>de</strong> tempo finito. Interesse no efeito que ela produz<br />

“caminhar até a próxima esquina”<br />

“colocar um livro em cima <strong>de</strong> uma mesa”<br />

“<strong>de</strong>scascar as batatas para o jantar”<br />

“atribuir o valor 3,14 a uma variável”<br />

(VWDGR: conjunto <strong>de</strong> proprieda<strong>de</strong>s relevantes que objetos apresentam na situação consi<strong>de</strong>rada.<br />

a) batatas com casca ou <strong>de</strong>scascadas;<br />

b) o conjunto <strong>de</strong> valores das variáveis do programa num certo instante da execução.<br />

(YHQWR: é um conjunto <strong>de</strong> (sub) ações. Um evento po<strong>de</strong> geralmente ser consi<strong>de</strong>rado como<br />

uma ação (primitiva) ou como um processo, <strong>de</strong>pen<strong>de</strong>ndo se estamos interessados<br />

simplesmente no efeito total, ou seja, nos estados antes e <strong>de</strong>pois, ou se também estamos<br />

interessados em um ou vários estados intermediários.<br />

3URFHVVR VHT HQFLDO : quando se consi<strong>de</strong>ra um evento como uma seqüência temporal <strong>de</strong><br />

(sub) ações, cujo efeito acumulado é igual <strong>ao</strong> efeito do evento total;<br />

([HPSOR GH (YHQWR 5HODWR GH XP 2EVHUYDGRU<br />

“uma dona-<strong>de</strong>-casa <strong>de</strong>scasca as batatas para o jantar”<br />

“traz a cesta com batatas do porão”;<br />

“traz a panela do armário”;<br />

“<strong>de</strong>scasca as batatas”; (R1)<br />

“<strong>de</strong>volve a cesta <strong>ao</strong> porão”<br />

símbolo <strong>de</strong> sequenciamento “;” (VHT rQFLD VLPSOHV, estrutura <strong>de</strong> controle básica)<br />

<strong>UFMG</strong> – ICEx – DCC – Programação <strong>de</strong> Computadores – 1º. Sem 2005 – David Menoti<br />

1


Dois eventos distintos possuem um mesmo padrão comportamento, po<strong>de</strong>m ter o mesmo relato<br />

<strong>de</strong> um observador.<br />

O efeito <strong>de</strong> um evento está totalmente <strong>de</strong>terminado pelo padrão <strong>de</strong> comportamento e<br />

eventualmente pelo estado inicial.<br />

Um DOJRULWPR é a <strong>de</strong>scrição <strong>de</strong> um padrão <strong>de</strong> comportamento, expressado em termos <strong>de</strong> um<br />

repertório bem <strong>de</strong>finido e finito <strong>de</strong> ações “primitivas”, das quais damos por certo que elas<br />

po<strong>de</strong>m ser executadas.<br />

Caráter imperativo, nome <strong>de</strong> ação → comando<br />

“traga a cesta com batatas do porão”;<br />

“traga a panela do armário”;<br />

“<strong>de</strong>scasque as batatas”; (A1)<br />

“<strong>de</strong>volva a cesta <strong>ao</strong> porão”<br />

Algoritmo x Evento<br />

“traz a cesta com batatas do porão”;<br />

“traz a panela do armário”;<br />

“coloca o avental”; (R2)<br />

“<strong>de</strong>scasca as batatas”;<br />

“<strong>de</strong>volve a cesta <strong>ao</strong> porão”<br />

“traga a cesta com batatas do porão”;<br />

“traga a panela do armário”;<br />

VH “saia é clara” HQWmR “coloque avental”;<br />

“<strong>de</strong>scasque as batatas”; (A2)<br />

“<strong>de</strong>volva a cesta <strong>ao</strong> porão”<br />

conectivo condicional: VH HQWmR (a DOWHUQDWLYD, estrutura <strong>de</strong> controle básica)<br />

“traz a cesta com batatas do porão”;<br />

“traz a panela do armário”;<br />

“<strong>de</strong>scasca uma batata”<br />

“<strong>de</strong>scasca uma batata”<br />

... (10 vezes) (R3)<br />

“<strong>de</strong>scasca as batatas”;<br />

“<strong>de</strong>volve a cesta <strong>ao</strong> porão”<br />

“traz a cesta com batatas do porão”;<br />

“traz a panela do armário”;<br />

“<strong>de</strong>scasca uma batata”<br />

“<strong>de</strong>scasca uma batata”<br />

... (30 vezes) (R4)<br />

“<strong>de</strong>scasca as batatas”;<br />

“<strong>de</strong>volve a cesta <strong>ao</strong> porão”<br />

<strong>UFMG</strong> – ICEx – DCC – Programação <strong>de</strong> Computadores – 1º. Sem 2005 – David Menoti<br />

2


“traga a cesta com batatas do porão”;<br />

“traga a panela do armário”;<br />

VH “saia é clara” HQWmR “coloque avental”;<br />

VH “numero <strong>de</strong> batatas é insuficiente” HQWmR<br />

“<strong>de</strong>scasque uma batata”<br />

VH “numero <strong>de</strong> batatas é insuficiente” HQWmR<br />

“<strong>de</strong>scasque uma batata”<br />

... (50 vezes) (A3)<br />

VH “numero <strong>de</strong> batatas é insuficiente” HQWmR<br />

“<strong>de</strong>scasque uma batata”<br />

“<strong>de</strong>volva a cesta <strong>ao</strong> porão”<br />

a) Ao executar o <strong>algoritmo</strong>, se a dona-<strong>de</strong>-casa constatar que cinco batas foram<br />

suficientes, <strong>de</strong> fato ela a não precisaria olhar para a panela outras 45 vezes para se<br />

certificar.<br />

b) Muitas vezes é difícil dar um limite superior: po<strong>de</strong> ser que um dia surjam muitos<br />

convidados e que as batatas estejam muito pequenas, ocasionando uma falha no<br />

<strong>algoritmo</strong>.<br />

“traga a cesta com batatas do porão”;<br />

“traga a panela do armário”;<br />

VH “saia é clara” HQWmR “coloque avental”;<br />

HQTXDQWR “numero <strong>de</strong> batatas é insuficiente” IDoD<br />

“<strong>de</strong>scasque uma batata” (A4)<br />

“<strong>de</strong>volva a cesta <strong>ao</strong> porão”<br />

conectivo repetitivo HQTXDQWR IDoD (UHSHWLomR, estrutura básica <strong>de</strong> controle)<br />

HQTXDQWR “inspeção” IDoD “ação”<br />

(ORRS LQILQLWR ± não é executável em tempo finito)<br />

HQTXDQWR “saia é clara” IDoD “<strong>de</strong>scasque uma batata”<br />

Um <strong>algoritmo</strong> <strong>de</strong>ve ser <strong>de</strong>terminístico, isto é, dadas as mesmas condições iniciais <strong>de</strong>ve<br />

produzir, <strong>de</strong>pois <strong>de</strong> executado, os mesmos resultados.<br />

Exercício: Escreva um <strong>algoritmo</strong>, que conte <strong>de</strong> 0 até 50.<br />

352*5$0$6 ( (6758785$6 '( '$'26<br />

&RPSXWDGRU: é uma máquina capaz <strong>de</strong> seguir uma certa espécie <strong>de</strong> <strong>algoritmo</strong>s, chamados<br />

programas. Ele possui memória, capaz <strong>de</strong> armazenas dados, e uma unida<strong>de</strong> aritmética/lógica,<br />

que é capaz <strong>de</strong> causar mudanças nos dados armazenados na memória. Além disso, é capaz <strong>de</strong><br />

comunicar-se com o mundo exterior através <strong>de</strong> operações <strong>de</strong> entrada e saía.<br />

&RPSLODGRU: Computador Real A, que só aceita linguagem <strong>de</strong> máquina, e queremos um<br />

computador i<strong>de</strong>al B, que aceita uma linguagem com construções que nos permitam exprimir<br />

<strong>de</strong> uma forma “natural” o nosso raciocínio algorítmico.<br />

<strong>UFMG</strong> – ICEx – DCC – Programação <strong>de</strong> Computadores – 1º. Sem 2005 – David Menoti<br />

3


Processo <strong>de</strong> abstração.<br />

3 (sistema <strong>de</strong>cimal)<br />

| | | (barras)<br />

3 + 4 = 7<br />

| | | + | | | | = | | | | | | |<br />

Processo (Manipulação-Representação) estão envolvidas três fases<br />

a) A escolha das proprieda<strong>de</strong>s relevantes do objeto real que queremos representar;<br />

b) A escolha da representação, com base nas operações a serem efetuadas sobre elas;<br />

c) A <strong>de</strong>monstração <strong>de</strong> que o par representação-manipulação produz resultados <strong>de</strong> acordo<br />

com os fenômenos do mundo real correspon<strong>de</strong>nte.<br />

Uma linguagem <strong>de</strong> <strong>programação</strong> é uma técnica <strong>de</strong> notação para programar, com a intenção <strong>de</strong><br />

servir <strong>de</strong> veículo para:<br />

a) Expressão <strong>de</strong> raciocínio algorítmico;<br />

b) Execução Automática <strong>de</strong> um <strong>algoritmo</strong> por um computador.<br />

352*5$0$d­2 (6758785$'$<br />

Consiste numa metodologia <strong>de</strong> projeto <strong>de</strong> programas visando:<br />

- Facilitar a escrita dos programas;<br />

- Facilitar a leitura (o entendimento) dos programas;<br />

- Permitir a verificação a priori dos programas;<br />

- Facilitar a manutenção e modificação dos programas.<br />

A idéia básica da Programação Estruturada, que vai <strong>ao</strong> encontro da mencionada tarefa do<br />

programador, é reduzir a complexida<strong>de</strong>, através <strong>de</strong>:<br />

- Desenvolvimento 7RS-'RZQ (refinamento sucessivo);<br />

o Estruturas <strong>de</strong> Dados<br />

- Modularização;<br />

- Estruturas <strong>de</strong> Controle;<br />

-<br />

Motivação: Problemas na Produção <strong>de</strong> Software.<br />

- Confiabilida<strong>de</strong> x Complexida<strong>de</strong><br />

- Manutenibilida<strong>de</strong><br />

- Flexibilida<strong>de</strong><br />

- Importância da Documentação<br />

- Fluxo <strong>de</strong> Controle em Algoritmos;<br />

o Aspecto estático e dinâmico;<br />

o Problema <strong>de</strong> GOTO.<br />

(;(5&Ë&,26 352326726<br />

1) Descreva com suas palavras o que você enten<strong>de</strong> por<br />

a) AÇÃO:;<br />

b) PROCESSO;<br />

c) ESTADO;<br />

d) EVENTO;<br />

e) PADRÃO DE COMPORTAMENTO<br />

2) Escreva um <strong>algoritmo</strong> para <strong>de</strong>screver como você faz para ir da sua casa até a escola.<br />

<strong>UFMG</strong> – ICEx – DCC – Programação <strong>de</strong> Computadores – 1º. Sem 2005 – David Menoti<br />

4


3) O que você enten<strong>de</strong> por DVSHFWR HVWiWLFR e DVSHFWR GLQkPLFR <strong>de</strong> um <strong>algoritmo</strong>? Qual o<br />

<strong>conceito</strong> que relaciona estes dois aspectos?<br />

4) Quais são as três estruturas básicas <strong>de</strong> controle com as quais po<strong>de</strong>mos <strong>de</strong>senvolver<br />

qualquer <strong>algoritmo</strong>?<br />

5) O que é um programa?<br />

6) O que é um bom programa?<br />

7) Cite alguns critérios usados atualmente para avaliação da qualida<strong>de</strong> <strong>de</strong> um programa.<br />

8) Cite algumas características <strong>de</strong> um Programa Estruturado.<br />

9) Com relação <strong>ao</strong> aspecto <strong>de</strong> documentação, qual a vantagem <strong>de</strong> se utilizar uma<br />

pseudolinguagem, para <strong>de</strong>senvolvimento <strong>de</strong> programas?<br />

10) Cite algumas características <strong>de</strong> um programa que usa o “GOTO” <strong>de</strong> forma irrestrita.<br />

5HIHUrQFLD %LEOLRJUiILFD<br />

GUIMARÃES, A. M. e LAGES, N. A. C. $OJRULWPRV H (VWUXWXUDV GH 'DGRV. Rio <strong>de</strong> Janeiro:<br />

LTC, 1994.<br />

<strong>UFMG</strong> – ICEx – DCC – Programação <strong>de</strong> Computadores – 1º. Sem 2005 – David Menoti<br />

5

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!