Programa¸c˜ ao Estruturada I
Introdu¸c˜ao a Elabora¸c˜ao de Algoritmos
Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos2
1thiago.tavares@ifsuldeminas.edu.br
2mateus.santos@ifsuldeminas.edu.br
Ultima Atualiza¸´ c˜ao: 23 de fevereiro de 2015
Programa¸c˜ao Estruturada I 1 / 37
Conte´ udo
1 Introdu¸c˜ao
2 A an´alise de s´ıntese de um algoritmo
3 Modelagem de Problemas
4 O papel da l´ogica em Programa¸c˜ao
Programa¸c˜ao Estruturada I 2 / 37
Conte´ udo
1 Introdu¸c˜ao
2 A an´alise de s´ıntese de um algoritmo
3 Modelagem de Problemas
4 O papel da l´ogica em Programa¸c˜ao
Programa¸c˜ao Estruturada I 3 / 37
Introdu¸c˜ ao
O que ´e um algoritmo???
Programa¸c˜ao Estruturada I 4 / 37
Algoritmo
”Um algoritmo ´e uma sequˆencia de instru¸c˜oes ordenadas de forma l´ogica para a resolu¸c˜ao de uma determinada tarefa ou problema.”
Programa¸c˜ao Estruturada I 5 / 37
Algoritmo
”Um conjunto finito de regras que provˆe uma sequˆencia de opera¸c˜oes para resolver um tipo de problema espec´ıfico”
Programa¸c˜ao Estruturada I 6 / 37
Algoritmo
”Sequˆencia ordenada, e n˜ao amb´ıgua, de passos que levam `a solu¸c˜ao de um dado problema. [TREMBLAY]”
Programa¸c˜ao Estruturada I 7 / 37
Algoritmo
”Processo de c´alculo, ou de resolu¸c˜ao de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restri¸c˜oes, as
regras formais para a obten¸c˜ao do resultado ou da solu¸c˜ao do problema.
[AUR ´ELIO]”
Programa¸c˜ao Estruturada I 8 / 37
Exemplos de algoritmos
Instru¸c˜oes para se utilizar um aparelho eletrodom´estico;
Uma receita para preparo de algum prato;
Guia de preenchimento para declara¸c˜ao do Imp. Renda;
A maneira como as contas de ´agua, luz e telefone s˜ao calculadas mensalmente e etc.
Programa¸c˜ao Estruturada I 9 / 37
Por que precisamos de Algoritmos?
”A no¸c˜ao de algoritmo ´e b´asica para toda a programa¸c˜ao de computadores.[KNUTH]”
”O conceito central da programa¸c˜ao e da ciˆencia da computa¸c˜ao ´e o conceito de algoritmo. [WIRTH]”
Programa¸c˜ao Estruturada I 10 / 37
Por que precisamos de Algoritmos?
”A no¸c˜ao de algoritmo ´e b´asica para toda a programa¸c˜ao de computadores.[KNUTH]”
”O conceito central da programa¸c˜ao e da ciˆencia da computa¸c˜ao ´e o conceito de algoritmo. [WIRTH]”
Programa¸c˜ao Estruturada I 10 / 37
Por que precisamos de Algoritmos?
”A no¸c˜ao de algoritmo ´e b´asica para toda a programa¸c˜ao de computadores.[KNUTH]”
”O conceito central da programa¸c˜ao e da ciˆencia da computa¸c˜ao ´e o conceito de algoritmo. [WIRTH]”
Programa¸c˜ao Estruturada I 10 / 37
Algoritmo
”Como seria uma algoritmo para realizar uma liga¸c˜ao telefˆonica em um telefone p´ublico???”
Programa¸c˜ao Estruturada I 11 / 37
Liga¸c˜ ao Telefˆ onica
Programa¸c˜ao Estruturada I 12 / 37
L´ ogica de Programa¸c˜ ao
Uso correto das leis do pensamento e de processos de racioc´ınio para a produ¸c˜ao de solu¸c˜oes logicamente v´alidas e coerentes, que resolvam com
qualidade os problemas que se deseja programar.
Programa¸c˜ao Estruturada I 13 / 37
Caracter´ısticas dos Algoritmos
Ter fim;
N˜ao deve ser amb´ıguo;
Receber dados;
Gerar informa¸c˜oes de sa´ıda;
Ser efetivo.
Programa¸c˜ao Estruturada I 14 / 37
Atividades
Defina com suas palavras, o que ´e algoritmo.
Cite alguns algoritmos que podemos encontrar no nosso dia a dia.
Na sua vis˜ao, qual ´e a caracter´ıstica mais importante em um algoritmo? Justifique a sua resposta.
Um algoritmo n˜ao pode conter um comando como “Escreva todos os n´umeros inteiros positivos”. Por quˆe?
Programa¸c˜ao Estruturada I 15 / 37
Conte´ udo
1 Introdu¸c˜ao
2 A an´alise de s´ıntese de um algoritmo
3 Modelagem de Problemas
4 O papel da l´ogica em Programa¸c˜ao
Programa¸c˜ao Estruturada I 16 / 37
Descri¸c˜ ao Narrativa
A resolu¸c˜ao de problemas envolve duas grandes fases:
An´alise;
S´ıntese.
Programa¸c˜ao Estruturada I 17 / 37
An´ alise
Na fase de an´alise, o problema ´e entendido de forma que se descubra o que deve ser feito:
Quais dados s˜ao necess´arios?
Quais condi¸c˜oes?
Modelagem:
Equa¸c˜oes;
Gr´aficos;
Desenhos.
Programa¸c˜ao Estruturada I 18 / 37
An´ alise
O resultado da fase de an´alise deve ser umplano de a¸c˜ao:
A experiˆencia em problema similares vistos anteriormente;
Pode ser necess´ario a utiliza¸c˜ao de problemas similares.
Processos de abstra¸c˜ao:
Elaborar modelos mentais do problema;
Encaminhamento da solu¸c˜ao.
Programa¸c˜ao Estruturada I 19 / 37
S´ıntese
Executa-se o plano definido na fase de an´alise:
Representa-se os passos por meio de um algoritmo;
Utiliza-se a representa¸c˜ao formal.
Verifica-se a solu¸c˜ao est´a correta:
Percorrer o algoritmo do seu in´ıcio at´e seu fim Caso ocorra alguma discrepˆancia:
Verificar a causa e analisar novamente o problema;
Repete-se esse processo at´e que a solu¸c˜ao tenha sido obtida.
Programa¸c˜ao Estruturada I 20 / 37
Conte´ udo
1 Introdu¸c˜ao
2 A an´alise de s´ıntese de um algoritmo
3 Modelagem de Problemas
4 O papel da l´ogica em Programa¸c˜ao
Programa¸c˜ao Estruturada I 21 / 37
Modelagem de Problemas
Modelagem (geralmente desprezada): dificuldade ou facilidade de resolver o problema:
Matem´atica e engenharia utilizam linguagem matem´atica;
Computa¸c˜ao utiliza algoritmos (fluxogramas e linguagens de programa¸c˜ao)
Exemplo:
Compram-se 30 canetas iguais, que foram pagas com uma nota de R$100,00, obtendo-se R$67,00 como troco. Quanto custou cada caneta?
Programa¸c˜ao Estruturada I 22 / 37
Modelagem de Problemas
Problema da Caneta:
Se eu tinha R$100,00 e recebi R$67,00 de troco, o custo total de canetas
´
e a diferen¸ca entre os R$100,00 que eu tinha e os R$67,00 do troco. Ora, isto vale R$33,00; portanto; esse valor foi o total pago pelas canetas. Para saber quanto custou cada caneta, basta dividir os R$33,00 por 30,
resultando no pre¸co de cada caneta. Assim, cada caneta custou o equivalente a R$1,10
Programa¸c˜ao Estruturada I 23 / 37
Modelagem de Problemas
Problema da caneta, matematicamente falando:
30x+ 67 = 100 30x= 100−67
x= 33/30 x= 1,1
Programa¸c˜ao Estruturada I 24 / 37
Modelagem de Problemas
Algoritmo 1: Problema da caneta, algoritmo (Instˆancia Particular):
inicio
Pegar os valores 30, 100 e 67
Subtrair 67 de 100 e dividir o resultado por 30 Mostrar o resultado final
fim
Programa¸c˜ao Estruturada I 25 / 37
Modelagem de Problemas
Caso geral:
Compraram-se N canetas iguais, que foram pagas com uma nota de Z reais, obtendo-se Y reais como troco. Quanto custou cada caneta?
Algoritmo 2: Problema da caneta, algoritmo: Ler os valores de N, Y e Zinicio
Pegar os valores N,Y e Z
Subtrair Y de Z e dividir o resultado por N Mostrar o resultado final
fim
Programa¸c˜ao Estruturada I 26 / 37
Modelagem de Problemas
Caso geral:
Compraram-se N canetas iguais, que foram pagas com uma nota de Z reais, obtendo-se Y reais como troco. Quanto custou cada caneta?
Algoritmo 3: Problema da caneta, algoritmo:
Ler os valores de N, Y e Zinicio Pegar os valores N,Y e Z
Subtrair Y de Z e dividir o resultado por N Mostrar o resultado final
fim
Programa¸c˜ao Estruturada I 26 / 37
Modelagem de Problemas
Caso geral: possui restri¸c˜oes!
E se algu´em pensar comprar 0 ou -3 canetas? Faz sentido?
Sim. Para algu´em que n˜ao possua a forma de interpretar o resultado:
N=10, Z=10 e Y=15.
Cada caneta: -R$0,50
Programa¸c˜ao Estruturada I 27 / 37
Modelagem de Problemas
Caso geral: possui restri¸c˜oes!
Pr´e-condi¸c˜oes:
Valor pago deve ser maior que o troco recebido;
Valor pago e quantidade de canetas maior que 0;
Troco maior ou igual a zero Matematicamente falando:
Z>Y,N>0,Z >0 eY ≥0
Programa¸c˜ao Estruturada I 28 / 37
Modelagem de Problemas
Algoritmo 4: Problema da caneta, algoritmo (caso geral):
Ler os valores de N, Y e Zinicio
seZ > Y e N > 0e Y ≥ 0e Z ≥ 0 entao Subtrair Y de Z e dividir o resultado por N.;
Mostrar o resultado final.;
senao
Exibir a mensagem: ”Erro: os valores s˜ao inconsistentes!”;
fimse fim
Programa¸c˜ao Estruturada I 29 / 37
Conte´ udo
1 Introdu¸c˜ao
2 A an´alise de s´ıntese de um algoritmo
3 Modelagem de Problemas
4 O papel da l´ogica em Programa¸c˜ao
Programa¸c˜ao Estruturada I 30 / 37
O papel da l´ ogica em Programa¸c˜ ao
Imagine as seguintes proposi¸c˜oes:
1 Se estiver chovendo, eu pegarei meu guarda-chuva.
2 Eu peguei meu guarda-chuva.
Conclui-se
“´E plaus´ıvel que esteja chovendo!”
Programa¸c˜ao Estruturada I 31 / 37
O papel da l´ ogica em Programa¸c˜ ao
Imagine as seguintes proposi¸c˜oes:
1 Se estiver chovendo, eu pegarei meu guarda-chuva.
2 Eu peguei meu guarda-chuva.
Conclui-se
“´E plaus´ıvel que esteja chovendo!”
Programa¸c˜ao Estruturada I 31 / 37
O papel da l´ ogica em Programa¸c˜ ao
O exemplo anterior fornece uma id´eia do que a l´ogica se preocupa em estudar;
Toda l´ogica proposta devem ser formalizadas em:
Elementos Sint´aticos: especificam como escrever suas proposi¸c˜oes;
Elementos Semˆanticos: avaliam o significado das proposi¸c˜oes - suas interpreta¸c˜oes.
O papel da l´ogica est´a relacionado com a correta sequˆencia de instru¸c˜oes: funcionamento correto do programa.
Programa¸c˜ao Estruturada I 32 / 37
O papel da l´ ogica em Programa¸c˜ ao
Em um algoritmo em execu¸c˜ao, o valor das vari´aveis representa um estado;
Com a execu¸c˜ao do algoritmo, essesestadosv˜ao sendo modificados;
Algoritmo correto:
Estado inicial(vari´aveis)→instru¸c˜oes→Estado Final(vari´aveis)
Programa¸c˜ao Estruturada I 33 / 37
O papel da l´ ogica em Programa¸c˜ ao
Algoritmo 5: Problema da caneta, algoritmo (caso geral):
Ler os valores de N, Y e Zinicio
seZ > Y e N > 0e Y ≥ 0e Z ≥ 0 entao Subtrair Y de Z e dividir o resultado por N.;
Mostrar o resultado final.;
senao
Exibir a mensagem: ”Erro: os valores s˜ao inconsistentes!”;
fimse fim
L´ogica de programa¸c˜ao:
Prova que um algoritmo est´a correto.
Simula¸c˜ao (execu¸c˜ao com dados reais):
Verifica se o algoritmo est´a correto e leva a valores consistentes.
Programa¸c˜ao Estruturada I 34 / 37
Obrigado pela aten¸c˜ao!!!
thiago.tavares@ifsuldeminas.edu.br
Programa¸c˜ao Estruturada I 35 / 37
Referˆ encias I
ASCENCIO, A.; CAMPOS, E. de.Fundamentos da programa¸c˜ao de computadores: algoritmos, Pascal, C/C++ e Java. Pearson Prentice Hall, 2008. ISBN 9788576051480. Dispon´ıvel em:
<https://books.google.com.br/books?id=p-mTPgAACAAJ>.
C: A Reference Manual. Pearson Education, 2007. ISBN 9788131714409. Dispon´ıvel em:
<https://books.google.com.br/books?id=Wt2NEypdGNIC>.
DAMAS, L. LINGUAGEM C. LTC. ISBN 9788521615194. Dispon´ıvel
em: <https://books.google.com.br/books?id=22-vPgAACAAJ>.
FEOFILOFF, P. Algoritmos Em Linguagem C. CAMPUS - RJ, 2009.
ISBN 9788535232493. Dispon´ıvel em:
<http://books.google.com.br/books?id=LfUQai78VQgC>.
Programa¸c˜ao Estruturada I 36 / 37
Referˆ encias II
KERNIGHAN, B.; RITCHIE, D.C: a linguagem de programa¸c˜ao padr˜ao ANSI. Campus, 1989. ISBN 9788570015860. Dispon´ıvel em:
<https://books.google.com.br/books?id=aVWrQwAACAAJ>.
MIZRAHI, V. Treinamento em linguagem C. Pearson Prentice Hall, 2008. ISBN 9788576051916. Dispon´ıvel em:
<https://books.google.com.br/books?id=7xt7PgAACAAJ>.
SCHILDT, H.; MAYER, R. C completo e total. Makron, 1997. ISBN 9788534605953. Dispon´ıvel em:
<https://books.google.com.br/books?id=PbI0AAAACAAJ>.
Programa¸c˜ao Estruturada I 37 / 37