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
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'8d2 $2 &21&(,72 '( $/*25,702 ( 352*5$0$d2<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$d2 (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