Вы находитесь на странице: 1из 53

Linguagens de Programao I

Tema # 1

Introduo a Algoritmos e Lgica de Programao

Dany Sanchez Dominguez dany@labbi.uesc.br

Dany Sanchez Dominguez LP1

Aula 1 - 1

ROTEIRO AULA 1
1. Introduo
2. O computador e operaes bsicas 3. Principios de engenharia de software 4. Algoritmos e suas propriedades 5. Exerccios

Dany Sanchez Dominguez LP1

Aula 1 - 2

INTRODUO
Que um programa de computador? Um programa de computador o produto resultante da atividade intelectual de um programador. Para criar um programa de computador devemos ter conhecimentos em: abstrao e modelagem de problemas linguagens e ferramentas de programao uso da lgica na verificao das solues
Dany Sanchez Dominguez LP1 Aula 1 - 3

INTRODUO
Um programa de computador um

conjunto de instrues e dados que algum


ser humano define e que ao serem executadas

por um computador cumprem algum objetivo.


instrues: pequenas tarefas ou operaes

que a mquina deve realizar, geralmente


modificam dados.
Dany Sanchez Dominguez LP1 Aula 1 - 4

INTRODUO
dados: valores armazenados no computador,

utilizados
programa, dados de

para

alcanar
so

objetivo
fornecidos

do
ao

entrada:

programa por um ser humano ou dispositivo, dados de sada: resultados oferecidos pelo

computador aps o processamento dos dados


de entrada.
Dany Sanchez Dominguez LP1 Aula 1 - 5

INTRODUO
Que um computador?

Dany Sanchez Dominguez LP1

Aula 1 - 6

INTRODUO
Quais operaes um computador pode realizar? Leitura ou escrita na memria, Operaes aritmticas, Operaes lgicas, Operaes de entrada\sada

Todas as instrues dadas ao computador devem considerar apenas as operaes que ele pode realizar.
Dany Sanchez Dominguez LP1 Aula 1 - 7

ENGENHARIA DE SOFTWARE
O desenvolvimento de um programa ou

software deve ser encarado como um processo


bem definido de engenharia. O desenvolvimento de um software e definido nas seguintes etapas: 1.Anlise: criam-se as especificaes que

detalham como o software vai a funcionar,

Dany Sanchez Dominguez LP1

Aula 1 - 8

ENGENHARIA DE SOFTWARE
2.Projeto: criam-se especificaes que detalham o resultado da anlise em termos prximos da implementao do software (criao do algoritmo), 3.Implementao: utilizando-se uma linguagem de programao e as especificaes de projeto, o software construdo, 4.Testes: aps a construo do software, so realizados testes para conferir a conformidade com os requisitos iniciais.
Dany Sanchez Dominguez LP1 Aula 1 - 9

ALGORITMO
Um algoritmo representa um conjunto de regras que fornecem a soluo de um problema (definio geral), pode ser aplicada a qualquer problema. Ex: fritar um ovo. Em programao, um algoritmo especifica com clareza e forma correta as instrues que um software devera conter, para que, ao ser executado, fornea os resultados esperados.
Dany Sanchez Dominguez LP1 Aula 1 - 10

ALGORITMO
Como criar um algoritmo? Modelagem e Implementao Modelagem conhecer o problema a ser resolvido (entender o problema), extrair todas as informaes ao respeito do problema (dados e operaes), se necessrio, buscar informaes em outras fontes
Dany Sanchez Dominguez LP1 Aula 1 - 11

ALGORITMO
Como criar um algoritmo? Implementao

descrever claramente os passos para chegar a soluo, organizar os passos segundo uma seqncia lgica que leve a soluo.

Dany Sanchez Dominguez LP1

Aula 1 - 12

ALGORITMO
Exemplo: crie um algoritmo para calcular a rea de um triangulo de base b e altura h.

A = bh/2
Inicio 1. Pedir ao usurio fornecer os valores de b e h 2. Calcular a rea A usando a formula 3. Exibir o valor de A na tela Fim

Dany Sanchez Dominguez LP1

Aula 1 - 13

ALGORITMO
Exerccio 1: Escreva um algoritmo para, dado

um jogo de cartas, o usurio escolhe uma carta e vc mostra sua posio no baralho.

Dany Sanchez Dominguez LP1

Aula 1 - 14

ALGORITMO
Exerccio 2: Escreva um algoritmo para resolver o

seguinte problema. Tm-se trs hastes A, B e C, na haste A repousam trs anis de dimetros diferentes, em ordem crescente por dimetro. Transfira os anis de A para B, usando C se necessrio. Considere: deve-se mover um nico anel por vez, um anel de dimetro maior no pode repousar sobre outro de dimetro menor.

A
Dany Sanchez Dominguez LP1

C
Aula 1 - 15

ALGORITMO
Segundo o dicionrio Aurlio:

Matemtica: Processo de clculo ou de resoluo de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restries, regras formais para o obteno do resultado ou da soluo do problema.

Dany Sanchez Dominguez LP1

Aula 1 - 16

ALGORITMO
Segundo o dicionrio Aurlio:

Informtica: Conjunto de regras e operaes bem-definidas e ordenadas, destinadas soluo de um problema ou de uma classe de problemas, em um nmero finito de passos. Algoritmo Caminho de soluo para um problema
Aula 1 - 17

Dany Sanchez Dominguez LP1

ALGORITMO
Caractersticas de um algoritmo: 1. Um algoritmo representa uma seqncia de regras, 2. Essas regras devem ser executadas em uma ordem preestabelecida, 3. Cada algoritmo possui um conjunto finito de regras, 4. Essas regras devem possuir um significado e ser formalizadas segundo alguma conveno.
Dany Sanchez Dominguez LP1 Aula 1 - 18

PROPRIEDADES - ALGORITMO
Valores de entrada: Todo algoritmo deve possuir zero, uma o mais entradas. [Ex] Valores de sada: Todo algoritmo possui uma o mais sadas que simboliza(m) seu(s) resultado(s) [Ex] Finitude: Toda tarefa a ser realizada possui um incio, meio e fim. Os algoritmos representam a soluo de um problema, tambm possuem incio, meio e fim.
Dany Sanchez Dominguez LP1 Aula 1 - 19

PROPRIEDADES - ALGORITMO
Finitude ... Todo algoritmo deve ser finito, deve possuir um conjunto de passos que ao serem executados, levaro sempre ao seu trmino ou fim. Deve-se prestar especial ateno a esta propriedade, freqentemente criamos algoritmos que nunca chegaram a um resultado, tornando-se infinito. [Ex]

Dany Sanchez Dominguez LP1

Aula 1 - 20

PROPRIEDADES - ALGORITMO
Passos elementares: Um algoritmo deve ser explicitado por meio de operaes elementares, sem que possa haver diferenas de interpretao, da forma tal que possa ser executado por mquinas sem inteligncia (computador). Operaes elementares?

Dany Sanchez Dominguez LP1

Aula 1 - 21

PROPRIEDADES - ALGORITMO
Correo: Um algoritmo deve ser correto, deve permitir que ao ser executado, se chegue s sadas com resultados coerentes com as entradas. Para verificar se um algoritmo correto ou no deve-se fazer uma simulao, testes com diversos valores de entrada, cujas sadas se conhecem a priori e, ento, comparar estes resultados com os produzidos pelo algoritmo.
Dany Sanchez Dominguez LP1 Aula 1 - 22

Exerccios
1. 2. 3. 4. Calcular a rea de um crculo. Estabelecer se um nmero inteiro n par. Estabelecer se um nmero inteiro n primo. Dados dois nmeros inteiros n1 e n2 determinar se o maior divisvel pelo menor. 5. Calcular a mdia de um conjunto de n elementos. 6. Procurar o maior elemento de um conjunto de n elementos inteiros.
Dany Sanchez Dominguez LP1 Aula 1 - 23

Exerccios
7. Dadas as coordenadas de um ponto (x1, y1), e o centro (x2, y2) e o raio r de uma circunferncia. Determinar se o ponto externo ou interno circunferncia. 8. Receber disciplina situao aprovado o nmero de crditos de uma e as notas de um aluno. Informe a do aluno: (A aprovado, AF em prova final, R - reprovado).
Aula 1 - 24

Dany Sanchez Dominguez LP1

ROTEIRO AULA 2
1. Formalizando algoritmos,
2. Portugol, 3. Fluxogramas, 4. Exemplos, 5. Exerccios, 6. Dicas e conselhos.

Dany Sanchez Dominguez LP1

Aula 1 - 25

FORMALIZANDO ALGORITMOS
A tarefa de especificar os algoritmos consiste em detalhar os dados que sero processados pelo programa e as instrues que vo a operar sobre esses dados. importante formalizar a descrio dos algoritmos segundo alguma conveno, para que todas as pessoas possam entend-lo da mesma forma. Para formalizar um algoritmo precisamos definir a sintaxe e a semntica.
Dany Sanchez Dominguez LP1 Aula 1 - 26

FORMALIZANDO ALGORITMOS
Regras de sintaxe: regras que regulam a escrita do algoritmo, A sintaxe de um algoritmo resume-se nas regras para escrev-lo corretamente, Essas regras indicam quais so os tipos de comando que podem ser utilizados e tambm como neles escrever expresses, Os tipos de comandos de um algoritmo so tambm denominados estruturas de programao.
Dany Sanchez Dominguez LP1 Aula 1 - 27

FORMALIZANDO ALGORITMOS
Existem trs tipos de estruturas que podem ser utilizadas: estruturas seqncias, de deciso e de repetio. Regras de semntica: so as regras que permitem interpretar um algoritmo, Os smbolos ou comandos de um algoritmo por se s no tem um significado a menos que este seja bem definido. A semntica de um algoritmo sempre acompanha sua sintaxe, fornecendo um significado.
Dany Sanchez Dominguez LP1 Aula 1 - 28

FORMALIZANDO ALGORITMOS
A importncia de formalizar um algoritmo (sintaxe e semntica) pode ser resumida assim: 1. Evitar ambigidades, pois definimos regras que sempre so interpretadas da mesma forma, 2. Impedir a criao de smbolos ou comandos desnecessrios na representao de um algoritmo (conjunto mnimo de regras), 3. Permitir uma aproximao das regras as linguagens de programao, facilitando a codificao do algoritmo.
Dany Sanchez Dominguez LP1 Aula 1 - 29

FORMALIZANDO ALGORITMOS
Existem diversos mecanismos que formalizam a representao de algoritmos, em nosso curso abordaremos: 1.Fluxogramas: representao grfica. 2.Portugol: linguagem para representar algoritmos. Introduzimos ambas tcnicas atravs de exemplos.

Dany Sanchez Dominguez LP1

Aula 1 - 30

REPRESENTAO DE ALGORITMOS
Portugol Operaes bsicas
Inicio de bloco, Inicio Fim de bloco, Fim Atribuio de valores a variveis, <Operaes aritmticas, +, -, *, /, %, Operaes lgicas, <, >, =, <> Operaes relacionais, e, ou Condicionais, Se, Seno Laos, Enquanto Chamadas a funo, Nome_Funcao Retorno de funo, Retorna Receber um valor de entrada, Leia Mostrar um valor de sada, Exiba
Aula 1 - 31

Dany Sanchez Dominguez LP1

REPRESENTAO DE ALGORITMOS
Smbolos - Fluxograma
terminador Representa a sada ou entrada do ambiente externo processo linha Representa qualquer tipo de processo (funes, operaes) Representa o fluxo de dados ou controles Representar os dados que sejam fornecidos em tempo de processamento
Aula 1 - 32

entrada manual
Dany Sanchez Dominguez LP1

REPRESENTAO DE ALGORITMOS
Smbolos - Fluxograma
exibio Representa dados que sero mostrados (tela, impressora) Representa uma deciso ou desvio (uma entrada; sadas: uma, duas, mltiplas) de acordo com a deciso se tomara apenas uma sada.

deciso

Dany Sanchez Dominguez LP1

Aula 1 - 33

REPRESENTAO DE ALGORITMOS
Exemplo: crie um algoritmo para calcular a rea de um triangulo de base b e altura h.

A = bh/2
Algoritmo informal:
Inicio 1. Pedir ao usurio fornecer os valores de b e h 2. Calcular a rea A usando a formula 3. Exibir o valor de A na tela Fim
Dany Sanchez Dominguez LP1 Aula 1 - 34

REPRESENTAO DE ALGORITMOS
Portugol:
Inicio 1. Leia(b, h) 2. A <- (b*h)/2 3. Exiba(A) Fim

Fluxograma:
Incio

b, h

s <- (b*h)/2

s
Fim
Dany Sanchez Dominguez LP1 Aula 1 - 35

REPRESENTAO DE ALGORITMOS
Exemplo: Compraram-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?
Se paguei R$ 100,00 e recebi como troco R$ 67,00, o custo total das canetas foi R$ 100,00 R$ 67,00 = R$ 33,00 Para saber quanto paguei por cada caneta dividimos R$ 33,00 por 30, Assim, cada caneta custou R$ 1,10
Dany Sanchez Dominguez LP1 Aula 1 - 36

REPRESENTAO DE ALGORITMOS
Exemplo...
Podemos ilustrar este raciocnio matematicamente Seja x o custo de cada caneta quantogastei = 30x quantogastei + troco = 100,00 Resolvemos a equao anterior (quadro)

Dany Sanchez Dominguez LP1

Aula 1 - 37

REPRESENTAO DE ALGORITMOS
Exemplo... Algoritmo informal:
Inicio 1. Pegar os valores 30, 100 e 67 2. Subtrair 67 de 100 e dividir resultado por 30 3. Mostrar o resultado final Fim

Deve-se observar que esse algoritmo resolve apenas uma instncia particular do problema.
Dany Sanchez Dominguez LP1 Aula 1 - 38

REPRESENTAO DE ALGORITMOS
Exemplo... Se quisermos solucionar o caso geral teramos o seguinte: Compraram-se N canetas iguais que foram

pagas com uma nota de Z reais, obtendo-se Y reais de troco. Quanto custou cada caneta?
Portugol:
Inicio 1. Leia(N, Z, Y) 2. C <- (Z-Y)/N 3. Exiba(C) Fim
Aula 1 - 39

Dany Sanchez Dominguez LP1

REPRESENTAO DE ALGORITMOS
Exemplo... O algoritmo apresentado tem uma serie de restries (problemas com os dados de entrada analisar) Para obter um algoritmo consistente devemos levar em considerao as precondies do problema: 1. O valor pago pelas canetas tem que ser maior que o troco recebido 2. O valor pago e a quantidade de canetas tem que ser maiores que zero 3. O troco tem que ser maior ou igual a zero
Dany Sanchez Dominguez LP1 Aula 1 - 40

REPRESENTAO DE ALGORITMOS
Exemplo... Algoritmo geral e correto em portugol
Inicio 1. Leia(N, Z, Y) 2. Se (Z>Y) e (N>0) e (Z>0) e (Y>=0) Ento 3. C <- (Z-Y)/N 4. Exiba(C) 5. Seno 6. Exiba(Erro: Valores inconsistentes!) 7. Fim Se Fim
Dany Sanchez Dominguez LP1 Aula 1 - 41

REPRESENTAO DE ALGORITMOS
Exemplo... Algoritmo geral e correto Fluxograma
Incio N, Y, Z

Falso

(Z>Y) e (N>0) e (Y>=0) e (Z>0)

Verdadeiro

C <- (Z-Y)/N

Erro!!!
C Fim
Dany Sanchez Dominguez LP1 Aula 1 - 42

REPRESENTAO DE ALGORITMOS
Exerccio: Que faz o seguinte algoritmo
Inicio 1. Leia(x, y) 2. Enquanto (y<>0) Faa 3. r <- x % y 4. x <- y 5. y <- r 6. Fim Enquanto 7. Exiba(x) Fim

Considere x e y valores inteiros. Elabore o fluxograma do algoritmo anterior.


Dany Sanchez Dominguez LP1 Aula 1 - 43

REPRESENTAO DE ALGORITMOS
Exerccio... Fluxograma
Incio x, y
Verdadeiro

Falso

y<>0

r <- x % y x

x <- y
Fim y <- r

Dany Sanchez Dominguez LP1

Aula 1 - 44

REPRESENTAO DE ALGORITMOS
Exerccio: Crie um algoritmo que calcule quantas notas de 50, 10, 5 e 1 so necessrias para pagar uma conta cujo valor fornecido. Considere valores inteiros. Utilize alguma das tcnicas de representao de algoritmos estudadas (fluxograma ou portugol).

Dany Sanchez Dominguez LP1

Aula 1 - 45

Exerccios
Utilize as tcnicas de representao de algoritmos (portugol e fluxogramas), crie algoritmos para os exerccios 1-8 slides 23 e 24.

Dany Sanchez Dominguez LP1

Aula 1 - 46

COMO TER SUCESSO EM UM CURSO DE PROGRAMAO?


O grande problema apresentado pelos estudantes em um primeiro curso de programao, no so as caractersticas da linguagem, mas sim a dificuldade em se abstrair e descrever as solues de problemas contando com poucas e simples estruturas. Um novo problema pode ser gerado a partir de um j existente, alterando-se apenas poucos elementos de seu enunciado (Ex).
Dany Sanchez Dominguez LP1 Aula 1 - 47

COMO TER SUCESSO EM UM CURSO DE PROGRAMAO?


um erro decorar as solues em computao, elas no servem para outros problemas que com certeza sero diferentes. Procure o entendimento de como foi obtida uma soluo, guarde-lo na memria e utilize essa experincia adaptando-la a outras situaes, por analogia, generalizao ou especializao. Acumule experincia e use-la em novos desafios.
Dany Sanchez Dominguez LP1 Aula 1 - 48

DICAS
1.Ao se deparar com um problema novo, tente entend-lo: O que se deve descobrir ou calcular? (Objetivo) Quais so os dados disponveis? So suficientes? Quais as condies necessrias e suficientes para resolver o problema? Se possvel, modele o problema de forma matemtica.
Dany Sanchez Dominguez LP1 Aula 1 - 49

DICAS
2.Crie um plano com a soluo: Consulte sua memria e verifique se voc j resolveu algum problema similar (analogia, generalizao, especializao) Verifique se necessrio introduzir algum elemento novo no problema, como um problema auxiliar. Se o problema for muito complicado, tente quebr-lo em partes menores e solucionar essas partes.
Dany Sanchez Dominguez LP1 Aula 1 - 50

DICAS
3.Formalize a soluo:

Crie um algoritmo informal com os passos que


resolvam o problema. Verifique se cada passo do algoritmo esta correto. Escreva um algoritmo formalizado (fluxograma

ou portugol)

Dany Sanchez Dominguez LP1

Aula 1 - 51

DICAS
4.Exame dos resultados: Teste o algoritmo com diversos dados e verifique os resultados (teste de mesa) Se o algoritmo no gerou resultado algum. Volte e tente encontrar o erro. Se o algoritmo gerou resultados, estes esto corretos? Se no esto corretos, alguma condio, operao ou a ordem, esto incorretas. Volte e tente encontre o erro.
Dany Sanchez Dominguez LP1 Aula 1 - 52

DICAS
5.Otimizao da soluo: possvel melhorar o algoritmo? possvel reduzir o nmero de passos ou dados? possvel conseguir uma soluo tima?

Dany Sanchez Dominguez LP1

Aula 1 - 53