Escolar Documentos
Profissional Documentos
Cultura Documentos
Ricardo Terra
rterrabh@gmail.com
LP
4 de abril de 2011
1 / 119
Contedo
Introduo Arquitetura de um Sistema de Computador Histrico da Computao Utilizao dos Computadores Lgica Proposicional Algoritmos e Programao Estruturada Portucol Algoritmos com Qualidade
2 3 4 5
LP
4 de abril de 2011
2 / 119
Introduo
Arquitetura de um Sistema de Computador
LP
4 de abril de 2011
3 / 119
LP
4 de abril de 2011
4 / 119
LP
4 de abril de 2011
5 / 119
Perifricos (dispositivos de entrada e sada) Objetivo: prover dados ao computador e obter respostas do processamento Dispositivos Teclado e mouse
Dispositivos de entrada comum. Existe mais algum?
Monitor
Dispositivo de sada comum. Existe mais algum?
LP
4 de abril de 2011
6 / 119
Memria Objetivo: armazenar dados ou programas (sequncias de instrues) em um base temporria ou permanente Dispositivos ROM, RAM, HD... Existe mais algum?
LP
4 de abril de 2011
7 / 119
Unidade Central de Processamento (CPU) Tambm conhecido como processador a parte de um computador que realiza a maior parte do processamento CPU e memria constituem a parte central de um computador, no qual os perifricos sero anexados
Veremos a arquitetura Von Neumann
LP
4 de abril de 2011
8 / 119
Resumo do que realmente importa Programas residem na memria As instrues de um programa soma, diviso, atribuio, laos de repetio, instrues condicionais etc so executadas pela CPU Os dados necessrios para execuo do programa so obtidos pelos dispositivos de entrada (mouse, teclado, por exemplo) e os resultados so apresentados atravs dos dispositivos de sada (monitor, por exemplo)
LP
4 de abril de 2011
9 / 119
Introduo
Histrico da Computao
LP
4 de abril de 2011
10 / 119
LP
4 de abril de 2011
11 / 119
Introduo Histrico da Computao Arquitetura Von Neumann Von Neumann, temtico hngaro, naturalizado norte-americano, props nos anos 40 do sculo XX, um padro de arquitetura de computadores utilizado at os dias de hoje
LP
4 de abril de 2011
12 / 119
Necessidade Antigamente, processamentos em geral, como clculos matemticos complexos, folhas de pagamento etc Atualmente, sistemas bancrios, ERP sistemas de gesto, , sistemas web etc Necessidade Enm, o que um computador faz bem?
LP
4 de abril de 2011
13 / 119
Necessidade Antigamente, processamentos em geral, como clculos matemticos complexos, folhas de pagamento etc Atualmente, sistemas bancrios, ERP sistemas de gesto, , sistemas web etc Necessidade Enm, o que um computador faz bem? REPETIO!
LP
4 de abril de 2011
13 / 119
Linguagens Evoluo Assembly Pascal C C++ PHP Java .NET (C#, J#...)
LP
4 de abril de 2011
15 / 119
Introduo
Utilizao dos Computadores
LP
4 de abril de 2011
16 / 119
Nessa seo, veremos: Conceito de programa e sistema Linguagem de alto nvel e baixo nvel Compiladores / Interpretadores Codicao ASCII reas de aplicao dos computadores
LP
4 de abril de 2011
17 / 119
Sistema
Grupo de componentes de hardware e sistemas de software, projetados e montados para executar uma funo especca ou grupo de funes
LP
4 de abril de 2011
18 / 119
Nveis de linguagem Representa o nvel de abstrao da linguagem Quanto mais longe do cdigo de mquina (ou, em outras palavras, quanto mais prximo linguagem humana) mais alto o seu nvel Nveis:
Alto: Pascal, COBOL, Java... Mdio: C, C++... Baixo: Assembly...
LP
4 de abril de 2011
19 / 119
Compiladores X Interpretadores Interpretador l o cdigo-fonte linha a linha, executando a instruo especca daquela linha Compilador l o programa inteiro, converte-o em um cdigo-objeto (ou cdigo de mquina) de modo que o computador consiga execut-lo diretamente Qual mais rpido?
LP
4 de abril de 2011
20 / 119
Codicao ASCII Cdigos ASCII representam texto em computadores, equipamentos de comunicao e outros dispositivos que utilizam texto Por exemplo, o computador no sabe o que A, mas se voc informar 65 e dizer que um caractere, ele saber que refere-se ao caractere A
Na verdade, na verdade mesmo, ele nem sabe o que 65, sabe o que 01000001
LP
4 de abril de 2011
21 / 119
LP
4 de abril de 2011
22 / 119
Contedo
1 2
Introduo Lgica Proposicional Introduo Material Algoritmos e Programao Estruturada Portucol Algoritmos com Qualidade
3 4 5
LP
4 de abril de 2011
23 / 119
Lgica Proposicional
Introduo
LP
4 de abril de 2011
24 / 119
Introduo Antes de entrarmos com desenvolvimento de algoritmos, interessante aprendermos a organizar nossas ideias e saber como organiz-las Nesse intuito, apresentada um pouco da lgica proposicional para que vocs treinem formalizao em linguagens no naturais
No caso, uma linguagem matemtica No futuro, Portugol e C
Este captulo servir como uma base forte para a nossa disciplina, cujos resultados comearo a logo perceber
LP
4 de abril de 2011
25 / 119
Problema do Bezerro Em uma fazenda existem 20 vacas e seus 21 bezerros. Nenhuma possui dois bezerros. possvel existir tal fazenda?
LP
4 de abril de 2011
26 / 119
Paradoxo do Barbeiro Em uma determinada cidade: Todo homem que capaz de se barbear, o faz O barbeiro da cidade faz a barba daqueles e apenas daqueles que no so capazes de se barbear possvel existir tal cidade?
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 27 / 119
Lgica Proposicional
Material
LP
4 de abril de 2011
29 / 119
Material Iremos utilizar o material do Prof. Dr. Newton Jos Vieiraa , um dos melhores e mais renomados professores da Universidade Federal de Minas Gerais (UFMG) Vejam materiais:
logicaproposicional_apostila.pdf logicaproposicional_slides.pdf
www.dcc.ufmg.br/~nvieira
LP
4 de abril de 2011
30 / 119
Contedo
1 2 3
Introduo Lgica Proposicional Algoritmos e Programao Estruturada Conceitos Importantes Portucol Algoritmos com Qualidade
4 5
LP
4 de abril de 2011
31 / 119
LP
4 de abril de 2011
32 / 119
LP
4 de abril de 2011
33 / 119
Algoritmo Um algoritmo a descrio de um padro de comportamento, expressado em termos de um repertrio bem denido e nito de aes primitivas, das quais damos por certo que elas podem ser executadas. ou Um algoritmo , em outras palavras, uma norma executvel para estabelecer um certo efeito desejado, que na prtica ser geralmente a obteno de uma soluo a um certo tipo de problema.
LP
4 de abril de 2011
34 / 119
LP
4 de abril de 2011
35 / 119
Estrutura de dados Representam as informaes do problema a ser resolvido A formulao do algoritmo e a denio das estruturas de dados esto intimamente ligadas Enm decises sobre a estruturao de dados no podem ser feitas sem conhecimento dos algoritmos aplicados a eles e a estrutura e a escolha dos algoritmos depende muitas vezes fortemente da estrutura dos dados
LP
4 de abril de 2011
36 / 119
LP
4 de abril de 2011
37 / 119
Qual das estruturas de dados anteriores melhor para: retornar os elementos ordenados? pesquisar um elemento? acrescentar um elemento? inserir um elemento? remover um elemento? alterar o valor de um elemento?
LP
4 de abril de 2011
38 / 119
Programa Programas so formulaes concretas de algoritmos abstratos, baseados em representaes e estruturas especcas de dados Programar basicamente construir algoritmos
LP
4 de abril de 2011
39 / 119
Algoritmos e Programao Estruturada Conceitos Importantes Programao Estruturada Basicamente, uma metodologia de projeto de programas visando:
Facilitar a escrita dos programas Facilitar a leitura (o entendimento) dos programas permitir a vericao a priori dos programas facilitar a manuteno e modicao dos programas
principal ( ) { i n t e i r o i = 1 ; / Declarando um i n t e i r o / imprima ( " Nmeros pares at 100: " ) ; enquanto ( i <= 100) { se ( i mod 2 == 0) { imprima ( i ) ; } i = i + 1; } }
Observaes Observe a sequncia, a deciso e a iterao No se preocupe com sintaxe, veremos o PortuCol logo
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 41 / 119
LP
4 de abril de 2011
42 / 119
Dada a modelagem acima, pense em um algoritmo para: descobrir o menor caminho entre duas cidades (Dijsktra) resolver o problema do caixeiro viajante
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 43 / 119
Contedo
1 2 3 4
Introduo Lgica Proposicional Algoritmos e Programao Estruturada Portucol Introduo Comandos Bsicos Arranjos Funes Algoritmos com Qualidade
LP
4 de abril de 2011
44 / 119
Portucol
Introduo
LP
4 de abril de 2011
45 / 119
Portucol Introduo
LP
4 de abril de 2011
46 / 119
Portucol Introduo
LP
4 de abril de 2011
47 / 119
Portucol Introduo
Regras Bsicas Os comandos devem ser escritos sempre em caixa baixa Ao nal de cada comando dever ser colocado um ponto e vrgula (;) Os nomes das variveis e identicadores devem:
ser compostos por letras (caixa baixa) e nmeros, mas devem comear com uma letra Ex: idade, nome, a4...
LP
4 de abril de 2011
48 / 119
Real
qualquer nmero real, negativo, nulo ou positivo Ex: -5, 30.5, 0, 40.1, -5.2 ...
Caractere
um caractere alfanumrico, exemplo: A, a, 0 ...
String
conjunto de caracteres alfanumricos Ex: Lgica, LP, Carnaval ...
Lgico
verdadeiro ou falso
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 49 / 119
Portucol Introduo
Declarao de variveis inteiro idade; real preco; caractere inicial; String nome; lgico flag;
LP
4 de abril de 2011
50 / 119
Portucol Introduo Comentrios recomendado e muito importante inserir comentrios em seus cdigos Os comentrios devem estar entre /* e */ Exemplo
2
10
principal ( ) { i n t e i r o i = 1 ; / Declarando um i n t e i r o / imprima ( " Nmeros pares at 100: " ) ; enquanto ( i <= 100) { se ( i mod 2 == 0) { / se o r e s t o f o r 0 par / imprima ( i ) ; } i = i + 1 ; / incrementa contador / } } / fim da funo p r i n c i p a l /
LP
4 de abril de 2011
51 / 119
Portucol Introduo Operadores = atribuio + soma - subtrao * multiplicao / diviso % resto (pode ser mod tambm) Funes mais comuns sqrt raiz quadrada ex: sqrt(4) pow exponenciao ex: pow(3,2) (equivale a 32 )
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 52 / 119
Portucol Introduo Operadores Relacionais == comparao != diferente <= menor ou igual >= maior ou igual > < maior menor
no negao
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 53 / 119
Portucol Introduo
Precedncia
1
LP
4 de abril de 2011
54 / 119
Portucol Introduo
imprima
Faz a impresso de qualquer varivel e texto Exemplos:
imprima(x); imprima(O valor digitado foi $x)
LP
4 de abril de 2011
55 / 119
Portucol
Comandos Bsicos
LP
4 de abril de 2011
56 / 119
LP
4 de abril de 2011
57 / 119
Observaes: Os parnteses que envolvem a condio so OBRIGATRIOS A condio dever retornar um tipo lgico Os comandos somente sero executados se a condio for verdadeira
LP
4 de abril de 2011
58 / 119
Portucol Comandos Bsicos Comandos condicionais - se O uso dos braos NO obrigatrio caso seja apenas um nico comando Porm, a boa prtica recomenda a utilizao de braos independente do nmero de comandos
Melhor indentao do cdigo
se ( verdade ) comando;
equivale a:
se ( verdade ) { comando; }
LP
4 de abril de 2011
59 / 119
Portucol Comandos Bsicos Comandos condicionais - se Como fao o conhecido: se verdade ento . . . seno . . .
se ( condicao ) { comando1; comando2; comando3; } seno { comando4; comando5; comando6; }
Pergunta-se Quais comandos sero executados se a condio for verdadeira? E se for falsa?
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 60 / 119
Comandos condicionais - se
1
principal ( ) { i n t e i r o a, b; l e i a (a ) ; l e i a (b ) ; se ( a >= b ) { imprima ( " $a e maior ou i g u a l a $b ! " ) ; } seno { imprima ( " $a e menor que $b ! " ) ; } }
LP
4 de abril de 2011
61 / 119
11
13
principal ( ) { i n t e i r o nota ; l e i a ( nota ) ; se ( nota >= 90 ) { imprima ( " Nota A" ) ; } seno se ( nota >= 80 ) { imprima ( " Nota B " ) ; } seno se ( nota >= 70 ) { imprima ( " Nota C" ) ; } seno { imprima ( " Reprovado " ) ; } }
LP
4 de abril de 2011
62 / 119
Exemplo se
2
10
principal ( ) { caractere op ; l e i a (op ) ; se (op == + ou op == ) { imprima ( " Operador de Baixa Prioridade " ) ; } seno se (op == / ou op == ) { imprima ( " Operador de Alta Prioridade " ) ; } seno { imprima ( " Operador I n v l i d o " ) ; } }
LP
4 de abril de 2011
63 / 119
Exerccio de Fixao 01 Crie um algoritmo que leia dois nmeros inteiros e imprima a soma, a subtrao, a multiplicao, a diviso e o resto da diviso entre esses dois nmeros. Observe que o valor do segundo nmero no deve ser 0, portanto faa um se para evitar isto.
LP
4 de abril de 2011
64 / 119
Exerccio de Fixao 02 Crie um algoritmo que leia os dois catetos de um tringulo (nmeros reais a e b) e calcule a hipotenusa: h2 = a 2 + b2
LP
4 de abril de 2011
65 / 119
Comandos repetio (enquanto, faa...enquanto e para) Comandos de repetio so utilizados para repetir um bloco de cdigo Veremos trs comandos de repetio:
enquanto faa...enquanto para
LP
4 de abril de 2011
66 / 119
Comandos repetio - enquanto O comando enquanto utilizado para repetir um bloco de acordo com uma condio considerado um loop de pr-teste
Isto , testa a condio antes de executar o bloco
Sintaxe:
enquanto ( condicao ) { comando1; comando2; comandoN; }
LP
4 de abril de 2011
67 / 119
LP
4 de abril de 2011
68 / 119
Exerccio de Fixao Faa um algoritmo que liste todos os nmeros de 0 a 100 divisveis por 3
LP
4 de abril de 2011
69 / 119
Comandos repetio - faa...enquanto O comando faa...enquanto semelhante ao enquanto, contudo um comando de repetio de ps-teste
Isto , somente ao nal da execuo do bloco que se verica a condio
Geralmente, utilizado quando se deseja testar a condio somente a partir da segunda iterao
Por exemplo, uma leitura da opo de um menu. Pede para digitar uma primeira vez. Somente se no digitar uma opo vlida que pede para digitar novamente
LP
4 de abril de 2011
70 / 119
Sintaxe:
faa { comando1; comando2; comandoN; } enquanto ( condicao ) ;
LP
4 de abril de 2011
71 / 119
LP
4 de abril de 2011
72 / 119
Exemplo
principal ( ) { inteiro i ; faa { imprima ( " D i g i t e um numero entre 0 e 1 0 : " ) ; leia ( i ) ; } enquanto ( i < 0 ou i > 10 ) ; imprima ( " " Numero digitado : $ i " ) ; }
LP
4 de abril de 2011
73 / 119
Exerccio de Fixao Faa um algoritmo que estipule um nmero mgico (entre 0 e 100) e pea para o usurio digitar nmeros at que ele acerte. Quando no acertar, diga se o nmero mgico menor ou maior que o nmero que ele digitou. Por exemplo: Nmero mgico estipulado: 7 1a tentativa: 90 (nmero mgico menor) 2a tentativa: 4 (nmero mgico maior) 3a tentativa: 7 (parabns!)
LP
4 de abril de 2011
74 / 119
Portucol Comandos Bsicos Comandos de repetio - para Comando de repetio mais poderoso do Portucol composto por:
Inicializao: executado uma nica vez no incio do loop Condio: executado sempre antes de cada iterao. Se verdadeira, o bloco executado. Se falsa, nalizado Operao : executado sempre ao trmino de cada iterao
Sintaxe
para ( i n i c i a l i z a c a o ; condicao ; operacao ) { comando1; comando2; ... comandoN; }
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 75 / 119
Exemplo
2
LP
4 de abril de 2011
76 / 119
Portucol Comandos Bsicos Sintaxe No lao para, a inicializao, condio e operao so todas opcionais Exemplo
1
Comandos de repetio - para Podemos ter um para dentro de outro, e outro dentro de outro, e outro dentro de outro...
1
principal ( ) { inteiro i , j ; para ( i = 0 ; i <= 2 ; i = i +1) { para ( j = 0 ; j < 2 ; j = j +1) { imprima ( " $ i $ j " ) } } }
Comandos de repetio - para Um comando para pode ter vrias inicializaes, uma condio complexa e vrias operaes Exemplo
1
LP
4 de abril de 2011
79 / 119
Portucol Comandos Bsicos Comando abandone Inserido dentro de um bloco de repetio (pode tambm ser enquanto ou faa...enquanto) Caso seja executado, o bloco de repetio nalizado Exemplo
1
LP
4 de abril de 2011
80 / 119
Portucol Comandos Bsicos Comando continue Inserido dentro de um bloco de repetio Caso seja executado, a iterao atual do bloco de repetio interrompida e parte para a prxima iterao Exemplo
2
10
LP
4 de abril de 2011
81 / 119
Portucol Comandos Bsicos Comando de repetio - para Logicamente, pode-se utilizar abandone e continue conjuntamente Exemplo
2
principal ( ) { inteiro i , j ; para ( i = 0 ; i < 3 ; i = i + 1) { se ( i == 1) { continue ; } para ( j = 0 ; j < 2 ; j ++) { imprima ( " $ i $ j " ) ; abandone ; / abandona sempre o lao mais i n t e r n o / } } }
10
12
LP
4 de abril de 2011
82 / 119
Exerccio de Fixao Faa um algoritmo que leia diversas idades e depois exiba a mdia. Duas consideraes: - O algoritmo dever ignorar idades acima de 120 anos; - O algoritmo s para de ler idades quando receber o valor -1.
LP
4 de abril de 2011
83 / 119
Funes importantes tamanho retorna o tamanho de um string ou arranjo. Por exemplo, suponha que str contenha ANA, assim tamanho(str) retornar 3 encerra encerra o programa abruptamente
LP
4 de abril de 2011
84 / 119
Portucol Comandos Bsicos Importante Ao ler um string, voc pode acessar cada posio utilizando colchetes [ ]
ndices vo de 0 a tam-1
Exemplo
1
principal ( ) { s t r i n g s t r = "ANA" ; i n t e i r o i , contador = 0 ; para ( i =0; i < tamanho( s t r ) ; i = i + 1 ) { se ( s t r [ i ] == A ) { contador = contador + 1 ; } } imprime ( " Numero de A s : $contador " ) ; }
LP
4 de abril de 2011
85 / 119
Portucol
Arranjos
LP
4 de abril de 2011
86 / 119
Portucol Arranjos
Arranjos - Conceito Arranjos tambm conhecidos como vetor, array etc so colees de um mesmo tipo em sequncia Arranjos podem ser de qualquer tipo visto (inteiro, real, caractere, string ou lgico) Pode se ter um arranjo de inteiros ou um arranjo de caracteres ou um arranjo de arranjo de reais
Contudo, no se pode ter um arranjo que contenha inteiros e strings
LP
4 de abril de 2011
87 / 119
Portucol Arranjos
Assim como variveis comuns, os elementos do arranjo no so inicializados automaticamente. Contudo, voc pode declarar j inicializando:
2
i n t e i r o notas [ 5 ] = { 4 , 6 , 6 , 9 , 8 } ; caractere l e t r a s [ 5 ] = { A , E , I , O , U } ;
LP
4 de abril de 2011
88 / 119
Portucol Arranjos
Arranjos - Declarao Um arranjo de tamanho n, tem suas posies indexadas de 0 a n-1 Para obter o tamanho de um arranjo, basta chamar a funo tamanho Exemplo
2
principal ( ) { inteiro v[5] = {1 , 2 , 3 , 4 , 5}; inteiro i ; para ( i =0; i < tamanho( v ) ; i = i + 1 ) { imprima ( v [ i ] ) ; } }
LP
4 de abril de 2011
89 / 119
Portucol Arranjos Arranjos - Acesso aos elementos Arranjos permite recuperar ou alterar qualquer um de seus elementos Os arranjos sempre iniciam-se na posio 0
Isto indica que ele termina em uma posio inferior ao tamanho (n-1)
Exemplo
1
v[2] = I ;
7
LP
4 de abril de 2011
90 / 119
Portucol Arranjos Arranjos Multidimensionais Pode-se criar um arranjo de arranjos O mais comum o bidimensional que vemos como uma matriz A declarao somente acrescentar o nmero de colunas Por exemplo: inteiro matriz[4][3] declara-se uma matriz de 4 linhas e 3 colunas
matriz[4][3] = {{1,0,0},{0,1,2},{2,3,4},{0,6,7}};
Representao :
1 0 2 0
0 1 3 6
0 2 4 7
4 de abril de 2011 91 / 119
LP
Portucol Arranjos Arranjo Bidimensional Exemplo Declarando e inicializando uma matriz 3x2 e imprimindo a soma dos valores
1
principal ( ) { i n t e i r o v [ 3 ] [ 2 ] = { { 1 , 4 } , { 5 , 6 } , { 9 , 11} } ; i n t e i r o i , j , soma = 0 ; para ( i =0; i < tamanho( v ) ; i = i + 1 ) { para ( j =0; j < tamanho( v [ i ] ) ; j = j + 1 ) { soma = soma + v [ i ] [ j ] ; } } imprima ( "Soma da m a t r i z : $soma " ) ; }
matriz
1 5 9 4 6 -11
LP
4 de abril de 2011
92 / 119
Portucol Arranjos
Exerccio de Fixao 01 Crie um algoritmo que declare e leia cada posio de um arranjo de inteiros de tamanho 5 e imprima a soma e a mdia aritmtica
LP
4 de abril de 2011
93 / 119
Portucol Arranjos
Exerccio de Fixao 02 Crie um algoritmo que declare e leia cada posio de um arranjo de reais de tamanho 10 e imprima a soma total deste arranjo considerando a seguinte frmula: soma = 1 * array[0] + 2 * array[1] + ... + 9 * array[8] + 10 * array[9]
LP
4 de abril de 2011
94 / 119
Portucol
Funes
LP
4 de abril de 2011
95 / 119
Portucol Funes
Funo Um algoritmo uma coleo de funes Uma das funes deve se chamar principal
por onde comea a execuo do algoritmo
LP
4 de abril de 2011
96 / 119
Portucol Funes
Funo O comando retorna efetua o retorno (trmino) da funo Uma funo pode ou no ter um retorno Uma funo pode ou no ter parmetros formais Exemplos
m1( ) { . . . } / sem retorno e sem parmetros formais /
2
LP
4 de abril de 2011
97 / 119
Portucol Funes
Funo Sintaxe:
retorno nome ( < param { , param} > ) { corpo }
Exemplos
1
LP
4 de abril de 2011
98 / 119
Portucol Funes
LP
4 de abril de 2011
99 / 119
Portucol Funes
LP
4 de abril de 2011
100 / 119
Portucol Funes
LP
4 de abril de 2011
101 / 119
Portucol Funes
Exerccio - Soma
1
principal ( ) { real x , y , total ; leia ( x ) ; leia (y ) ; t o t a l = soma( x , y ) ; imprima ( " $x + $y = $ t o t a l " ) ; } r e a l soma ( r e a l x , r e a l y ) { retorna x+y ; }
11
LP
4 de abril de 2011
102 / 119
Portucol Funes
Exerccio - Fatorial
1
principal ( ) { inteiro n; leia (n ) ; imprima ( f a t ( n ) ) ; } i n t e i r o fat ( i n t e i r o n) { i n t e i r o i , resultado = 1 ; se ( n == 0 ou n == 1) { retorna 1 ; } para ( i =2; i <= n ; i = i +1 ) { resultado = resultado i ; } retorna resultado ; }
11
13
15
LP
4 de abril de 2011
103 / 119
Portucol Funes
principal ( ) { inteiro n; leia (n ) ; retornaMaior ( n ) ; } retornaMaior ( i n t e i r o inteiro i ; para ( i = n ; i >= imprime ( i ) ; se ( i ! = 1 ) imprime ( " } } } n) { 1 ; i = i 1) { { > " );
10
12
14
LP
4 de abril de 2011
104 / 119
Portucol Funes
principal ( ) { i n t e i r o v [ 5 ] = { 2 , 4 , 5 , 1 , 3 } , min ; min = menorElemento ( v ) ; imprima ( " Menor elemento : $min " ) ; } i n t e i r o retornaMenorElemento ( i n t e i r o v [ ] ) { inteiro i ; i n t e i r o menor = v [ 0 ] ; para ( i = 1 ; i < tamanho( v ) ; i = i +1) { se ( v [ i ] < menor) { menor = v [ i ] ; } } retorna menor ; }
11
13
15
LP
4 de abril de 2011
105 / 119
Contedo
1 2 3 4 5
Introduo Lgica Proposicional Algoritmos e Programao Estruturada Portucol Algoritmos com Qualidade Introduo Boas prticas de programao Metodologia para o desenvolvimento de algoritmos
LP
4 de abril de 2011
106 / 119
LP
4 de abril de 2011
107 / 119
Nessa seo, veremos: Boas prticas de programao Metodologia para o desenvolvimento de algoritmos
LP
4 de abril de 2011
108 / 119
LP
4 de abril de 2011
109 / 119
Algoritmos com Qualidade Boas prticas de programao 1. Algoritmos devem ser feitos para serem lidos por seres humanos Outras pessoas podero ter que corrig-lo, adapt-lo, modic-lo... Ainda, talvez voc mesmo tenha que entend-lo depois de um ano que escreveu 2. Comente seu cdigo Comentrio sinal de saber desenvolver Facilita o entendimento do cdigo Existem coisas que voc faz que poucos segundos depois nem lembra como fez
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 110 / 119
3. No entanto, comentrios devem acrescentar algo no apenas frasear os comandos Comentrios no dizem o que est sendo feito, mas sim, por qu Exemplo de comentrio que no se deve fazer:
imprima( total ); /* imprime o total */
LP
4 de abril de 2011
111 / 119
4. Use comentrios no prlogo de funes interessante que funes tenham comentrios contendo:
um descrio sucinta do que faz autor data de escrita
5. Utilize espaos em branco para melhorar a legibilidade melhoram substancialmente a aparncia de algoritmos principalmente no incio do algoritmo, pois pode ser que haja a necessidade de mais variveis
LP
4 de abril de 2011
112 / 119
6. Variveis com nomes representativos Nomes de variveis devem identicar o que representam
Por exemplo, x = y + z muito menos claro que preco = custo + lucro
Outras dicas:
Para variveis de iterao, use i, j, k... Para variveis auxiliares, use aux
LP
4 de abril de 2011
113 / 119
8. Utilize parnteses para aumentar a legibilidade e prevenir erros bobos Por exemplo: A * B * C / (D * E * F) seria ainda mais claro se fosse: (A * B * C) / (D * E * F) 9. Identao imprencidvel Melhora a legibilidade Apresenta a estrutura lgica do algortimo Deve seguir o padro (novos blocos so identados)
LP
4 de abril de 2011
114 / 119
10. Alterao no algoritmo Alterao no comentrio Sempre que um algoritmo for alterado, os comentrios tambm devem ser alterados, no apenas os comandos Antes no comentar do que deixar um comentrio errado
LP
4 de abril de 2011
115 / 119
LP
4 de abril de 2011
116 / 119
Algoritmos com Qualidade Metodologia para o desenvolvimento de algoritmos Uma boa sequncia a ser seguida: Passo 1: leia o enunciado do problema at o nal (sem fazer nenhum tipo de anotao) Passo 2: repita o Passo 1 at entender Passo 3: levantar e analisar todas as sadas do problema Passo 4: levantar e analisar todas as entradas do problema Passo 5: levantar as variveis necessrias Passo 6: pensar como transformar entradas em sadas Passo 7: testar cada parte do algoritmo (simule entradas e conra sadas) Passo 8: testar o algoritmo como um todo (simule entradas e conra sadas)
Ricardo Terra (rterrabh@gmail.com) LP 4 de abril de 2011 117 / 119
Algoritmos com Qualidade Metodologia para o desenvolvimento de algoritmos Exerccio de Fixao De acordo com a metodologia, desenvolva um algoritmo que leia as trs variveis da equao de 2o grau (a, b e c) e imprima se a parbola gerada pela equao toca o eixo das abcissas ou no. Se tocar, imprima tambm as razes resultantes
LP
4 de abril de 2011
118 / 119
Referncias
Angelo de Moura Guimares e Newton Albert de Castilho Lages. Algoritmos e Estruturas de Dados. Editora LTC, 1994. Victorine Viviane Mizrahi. Treinamento em Linguagem C. Prentice-Hall, 2 edition, 2008. Newton Jos Vieira. Lgica aplicada computao. http://homepages.dcc.ufmg.br/ nvieira/cursos/ldt/ notas-de-aulas/logica1.pdf, 2007.
LP
4 de abril de 2011
119 / 119