Anda di halaman 1dari 22

Universidade Federal do Par

Instituto de Tecnologia Faculdade de Engenharia da Computao

Algoritmos
Um algoritmo uma seqncia finita de instrues bem definidas e no ambguas. Com tempo finito e com uma quantidade de esforo finita. No representa, necessariamente, um programa de computador, e sim os passos necessrios para realizar uma tarefa.

ESTRUTURAS DE DADOS I
Prof Penha Abi Harb mpenhaufpa@gmail.com

Algoritmos
Podem repetir passos (fazer iteraes) ou necessitar de decises (tais como comparaes) at que a tarefa seja completada. Um algoritmo corretamente executado no ir resolver um problema:
se estiver implementado incorretamente ou se no for apropriado ao problema.

Problema: fazer um bolo!


Uma receita uma descrio de um conjunto de passos ou aes que fazem a combinao de um conjunto de ingredientes com vista a obter um produto gastronomico particular.

Leite Ovos Mateiga Receita (passos e aes)

Recebe um ou mais valores (entrada) e produz um ou mais valores (sada).

Farinha de trigo Acar Fermento

Problema: Como fazer o bolo?


Como vimos, um algoritmo opera sobre um conjunto de entradas (farinha ovos, fermento, etc. no caso do bolo) de modo a gerar uma sada que seja til (ou agradvel) para o utilizador (o bolo pronto).
Leite Ovos Mateiga Receita (passos e aes)

Algoritmo: (receita) para a execuo do bolo


1) Bater duas claras em ovos; 2) Adicionar duas gemas; 3) Adicionar um xcara de acar; 4) Adicionar duas colheres de manteiga; 5) Adicionar uma xcara de leite; 6) Adicionar farinha e fermento; 7) Colocar numa forma e levar ao forno em fogo brando.
Lembrar: Um algoritmo uma seqncia finita de instrues bem definidas e no ambguas.

Farinha de trigo Acar Fermento

Algoritmos: Caractersticas fundamentais


Um algoritmo deve ter 5 caractersticas fundamentais:
Finitude: um algoritmo deve sempre terminar aps um nmero finito de passos. Definio: cada passo de um algoritmo deve ser precisamente definido. As aes devem ser definidas rigorosamente e sem ambiguidades.

Algoritmos: Caractersticas fundamentais


Entradas: um algoritmo deve ter uma ou mais entradas, isto quantidades que lhe so fornecidas antes do algoritmo iniciar. Sadas: um algoritmo deve gerar uma ou mais sadas Eficincia: um algoritmo deve ser eficiente. Isto significa que todas as operaes devem ser suficientemente bsicas de modo que possam ser em princpio executadas com preciso em um tempo finito por um ser humano usando papel e lpis.

Algoritmos: Passos para a construo


Compreender o problema Identificar os dados de entrada Identificar os dados de sada Determinar o que preciso para transformar dados de entrada em dados de sada:
observar regras e limitaes identificar todas as aes a realizar eliminar ambiguidades

Algoritmos: Passos para a construo


Construir o algoritmo Testar o algoritmo Executar o algoritmo

Algoritmos: Representao
Linguagem Natural
Os algoritmos so expressos diretamente em linguagem natural (exemplos: receita de bolo e troca de pneu furado). Algoritmo: Troca de pneu furado
Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas

Algoritmos: Linguagem Natural


Oportunidade de ms interpretaes, ambigidades e imprecises. Por exemplo, a instruo afrouxar ligeiramente as porcas est sujeita a interpretaes diferentes por pessoas distintas. Uma instruo mais precisa seria: afrouxar a porca, girando-a de 30 no sentido anti-horrio.

Algoritmos: Representao
Fluxograma (ou Diagrama de Fluxo)
Representao grfica Emprega formas geomtricas padronizadas Indicam as diversas aes e decises que devem ser executadas para resolver o problema.

Algoritmos: Fluxograma
Incio e fim de fluxograma Teste e deciso

Entrada e sada de dados

Processamento

Conector para mesma pgina

Entrada de dados manual

Conector para outra pgina

Impresso de resultados

Algoritmos: Fluxograma
Incio

Algoritmos: Representao
Pseudo-linguagem ou pseudo-cdigo

Algoritmo: dividir dois nmeros

Obter a

Obter b

b0 Diviso invlida C = a/b

Emprega uma linguagem intermediria entre a linguagem natural e uma linguagem de programao para descrever os algoritmos. Algoritmo: dividir dois nmeros

Imprime C

Fim

Algoritmos: Pseudo-linguagem
Para o computador 1. Incio de programa interpretar este algoritmo devemos 2. ler a, b reescreve-lo em uma linguagem de 3. se b0 ento programao. c=a/b imprimir c seno imprimir diviso invlida fim de se 4. Fim de programa

Algoritmos e Computao
Hoje em dia a noo e domnio dos algoritmos tornou-se absolutamente essencial, pois qualquer programa de computador deve ser provavelmente uma descrio de um algoritmo. Programao consiste na codificao de um algoritmo, segundo uma linguagem de programao especfica.

Algoritmos e Computao
Segundo Toscani e Veloso, algoritmos so o cerne da computao: um programa codifica um algoritmo de modo a ser executado em um computador, resolvendo assim um problema. (Complexidade de Algoritmos, 2008)

Algoritmos e Programas
Existem trs fases distintas na elaborao de programas:
a anlise do problema (especificao do problema, anlise de requisitos, pressupostos, etc.) a concepo do algoritmo a traduo desse algoritmo na linguagem de programao
Problema Algoritmo Programa

Linguagens
Qualquer tipo de informao que deva ser transferida, processada ou armazenada deve estar na forma de uma linguagem.
Linguagem natural Linguagem de maquina Linguagens de programao

Linguagem Natural
A linguagem natural a maneira como expressamos nosso raciocnio e trocamos informao. Como a expresso da cultura de uma sociedade, desenvolvida atravs das geraes e em diferentes situaes, raramente constitui um sistema de regras rgidas que possa ser implementada numa mquina ou que possa ser transcrita logicamente. Alm da linguagem falada, fazem parte da nossa comunicao gestos e posturas.

Linguagem de maquina
Linguagem que o computador entende Esta linguagem composta somente por nmeros, representados de forma binria, que, sob o ponto de vista do computador, representam as operaes e os operandos que sero usados no processamento do programa.

Linguagem de programao
Linguagem que os programadores entendem As linguagens de programao so um meio termo entre a linguagem de mquina e a linguagem natural.
Linguagem de baixo nvel Linguagem de alto nivel

Linguagem de programao
Linguagem de baixo nvel:
muito parecidas com linguagem de mquina suas instrues parecem-se muito com aquelas que sero executadas pelo processador Ex: linguagem de montagem (assembly)

Conceitos Iniciais de Programao


Conceitos iniciais:
Varivel: espao da memria onde guardamos informaes. Chamamos de identificador. Tipos de dados primitivos: inteiro, alfanumrico, booleanos Declarao de uma varivel do tipo inteiro
Soma, a, b: inteiro

Linguagem de alto nvel:


semelhanas com a linguagem natural Pascal, C, Fortran, Java, Perl, Python, Lisp, PHP, entre outras.

Comando de atribuio: =
a = 56;

Conceitos Iniciais de Programao


Atribuindo valores ALGORITMO Teste CONSTANTE real = 3.141592654 VAR inteiro soma = 0, idade char nome = Maria INICIO <comandos> FIM

Conceitos Iniciais de Programao


Entrada e saida: Leitura dos valores de entrada do algoritmo: ler <lista de variveis>

ler a, b; Cin >> Linguagem C++

Impresso dos resultados: imprimir <lista de expresses>


imprimir a,b imprimir Meu primeiro algoritmo Cout << Linguagem C++

Definindo tipos

Conceitos Iniciais de Programao


Conceitos iniciais:
Comando de teste (desvio) : se
Se <expresso lgica> ento <lista de comandos1> seno <lista de comandos2> Fim se Linguagem C++ If <expresso lgica> <lista de comandos1> else <lista de comandos2>

Conceitos Iniciais de Programao


Conceitos iniciais: Comando de repetio: enquanto (While) / fim enquanto Deve ser usado sempre que no sabemos quantas vezes um loop ser executado. So executados repetidamente enquanto a condio de teste for satisfeita.
i=0 enquanto i<10 faa imprimir i, i*i i=i+1 fimenquanto

Conceitos Iniciais de Programao


Conceitos iniciais: Comando de repetio: para (for) Usado sempre que se deseja que um cdigo seja executado um determinado nmero de vezes.
para (inicializao;condio de parada;expresso) { COMANDO(S); }

Linguagem de Programao JAVA

Exemplo:
para (int i=1 ; i<=5 ; i++) { // O loop executado ??? vezes
Escreva(i+" ")

Por que usar Java?


Java multiplataforma, ou seja, um programa escrito em Java pode ser executado em qualquer plataforma (sistema operacional combinado com hardware) sem necessidade de alteraes no cdigo fonte Java uma arquitetura aberta, extensvel, com vrias implementaes, o que a torna independente do fornecedor. Java pode ser baixada gratuitamente do site da Sun.

Por que usar Java?


Java uma linguagem independente de plataforma que pode ser utilizada em vrios produtos eletrnicos, tais como torradeiras e refrigeradores. Java uma linguagem completamente orientada a objeto com forte suporte a tcnicas adequadas de engenharia de software Java uma das linguagens de desenvolvimento de softwares mais utilizadas no mundo.

Como Java Funciona


Em uma linguagem de programao como C e Pascal, temos o seguinte quadro quando vamos compilar um programa..
Cdigo fonte em c Teste.c Compila
Gera cdigo binrio para um determindao SO Teste.exe

Como Java funciona


Maquina Virtual
, em poucas palavras, um mecanismo que permite executar cdigo em Java em qualquer plataforma.
Java utiliza o conceito de mquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicao, responsvel por traduzir (no apenas isso) o que sua aplicao deseja fazer para as respectivas chamadas do sistema operacional no qual ela est rodando no momento.

SO

Como Java Funciona


AloMundo.java Compila
AloMundo.class

Comentrios
Utilizados para documentar parte do cdigo No fazem parte do programa no so compilados Documentar programas atravs de comentrios uma boa prtica de programao

Comentrios
Os comentrios podem ocupar mais de uma linha Quando ocupam uma linha usamos a sequncia de caracteres // que indica que o comentrio dura at o final da linha Quando se quer comentar mais de uma linha devemos usar a sequncia /*(inicio) e */(fim) . O comentrio dura at os caracteres */ serem encontrados

Comentrios

Primeiro Programa em Java


Especificador de Acesso
Em java todo cdigo deve ser colocado em uma classe Nome da Classe

Primeiro Programa em Java


Indica o incio de um bloco

Indica que, a classe est acessivel a outras classes de outros pacotes Indica o fim de um bloco

Primeiro Programa em Java


Mtodo realiza uma tarefa, mas no retorna informao A execuo de qualquer programa em java inicia pelo main
Exceto Applets

Primeiro Programa em Java


System.out a sada padro do sistema

Os parentese indicam que o main um mtodo

A mensagem

Primeiro Programa em Java

Primeiro Programa em Java

Primeiro Programa em Java


Sada de Dados
Para sada dos dados podemos usar um dos comandos:
System.out.print() System.out.println()

Sada do Programa

Tipos de Dados Primitivos

Declarando e inicializando variveis e constantes Tipos de Dados Primitivos


A palavra chave final declara uma constante e especifica seus valores. As constantes devem ser inicializadas no momento de sua declarao J no caso das variveis a inicializao no momento da declarao opcional

Declarando e inicializando variveis e constantes

Declarando e inicializando variveis e constantes


Se a varivel no for inicializada est assumira , dependendo do tipo , um dos valore descritos abaixo: boolean = false char = \u000 ( caractere vazio ) inteiro , byte , short = 0 ponto flutuante = +0.0f Referencia para objetos = null

Declarando e inicializando variveis e constantes


int n1 = 10; int n2 = 10000; boolean fim_do_arquivo = false; float valor = 20.10 char melhor_time = Remo';

Declarando e inicializando variveis e constantes


public class Constantes { static final float PI = 3.14159265f; public static void main(String args[]) { float raio = 25f; float comprimento = raio * 2 * PI; float area = (raio * raio) * PI; System.out.println("Dados de um crculo de " + raio + "cm:\n + "comprimento: " + comprimento + "cm\n + "rea: " + area + "cm"); } }

Exemplo

As 53 palavras-chave de Java

Operadores

Operadores de Incremento

Operadores de Incremento int a = 10; int b = 20; int c, d; c = a++; Qual valor de c?? 10 d = ++b; Qual valor de d?? 21

Operadores Relacionais

Operadores Lgicos

Obtendo entrada do teclado


Existem algumas formas:
Classe Scanner Interface Grfica

Classe Scanner
Encontrada no pacote java.util

Etapas para obter uma entrada


Indica que queremos utilizar a classe Scanner Mtodo main

Declara a classe

Etapas para obter uma entrada


Indica que queremos utilizar a classe Scanner

Etapas para obter uma entrada

Cria uma varivel do tipo Scanner

Imprime uma mensagem para o usurio

Recebe a entrada do usurio

Imprime o valor da entrada

Classe Swing
Encontrada no pacote javax

Etapas para obter uma entrada


import javax.swing.*; public class Exercicio {
Mtodo main

Etapas para obter uma entrada


import javax.swing.*;
Imprime uma public mensagem para o usurio

Indica que queremos utilizar a classe Swing

class Exercicio {

public static void main (String args []){ int numero; Declara a classe String aux= ""; aux=JOptionPane.showInputDialog(null, "Digite um numero:); numero=Integer.parseInt(aux); Imprime uma JOptionPane.showMessageDialog(null, numero); mensagem para o
usurio

Recebe a entrada do usurio

public static void main (String args []){ Imprime o int numero; valor da String aux= ""; entrada aux=JOptionPane.showInputDialog(null, "Digite um numero:); numero=Integer.parseInt(aux); JOptionPane.showMessageDialog(null, numero);

Converso de String
possvel converter qualquer tipo primitivo String para

Converso de String

int Integer.parseInt( string ) Float Float.parseFloat( string ) Double - Double.parseDouble( string )

Convertendo de String para inteiro

Da mesma forma possvel converter tipos primitivos para String

Estruturas de Controle
Estruturas de Seleo Estruturas de Repetio
if

Estrutura de Seleo
Java possui as seguintes estruturas de seleo

if else switch

Comando if
Especifica que um comando ou bloco ser executado se e somente se uma determinada condio booleana for verdadeira

Comando if - else
Especifica que um comando ou bloco ser executado quando uma condio booleana for verdadeira e outro comando quando a condio for falsa

Comando switch
Permite multiplicidade de escolha

Estruturas de Repetio
Permite executar um bloco de instrues um nmero determinado de vezes
while do while for

Comando while
Os comandos no lao while so executados enquanto uma condio booleana for verdadeira

Comando do - while
A principal diferena no do while que os comandos so executados pelo menos uma vez;

Comando for
Permite a execuo de um comando ou um bloco um pr-definido nmero de vezes

Exerccios
1) Faa um programa que receba um numero inteiro e imprima a tabuada deste numero. 2) Construir uma sub-rotina que calcule o quadrado de um nmero. 3) Construir uma sub-rotina que verifique se um dado nmero par.

Exerccios
4) Construir uma calculadora que receba dois valores e efetue as operaes bsicas (soma, subtrao, diviso e multiplicao). Deve-se utilizar a estrutura CASE para criao de um menu e sub-rotinas para cada uma das operaes.

Referncias
Java: Como Programar - HARVEY M. DEITEL & PAUL J. DEITEL Prentice-Hall - 2005 Estruturas de Dados e Algoritmos em Java: Miclael T. Goodrih e Roberto Tamasia Bookman 2007 Slides Bruno Correa Laboratrio Nacional de Computao Cientifica

Anda mungkin juga menyukai