Escolar Documentos
Profissional Documentos
Cultura Documentos
Computao Bsica
Disciplina 116301
Computao Bsica
O Conceito de Algoritmo
Computao Bsica
1. O Conceito de Algoritmo Conhecimento declarativo: declarativo: Corpo organizado de informaes factuais (o que ) ). . Ex.: Ex.: O bolo comum a massa de bolo bsica para confeitar ou rechear. rechear. tambm um excelente acompanhamento para caf ou ch. ch.
05/04/2011
Computao Bsica
1. O Conceito de Algoritmo Conhecimento imperativo: imperativo: o que se manifesta da execuo de uma tarefa (como fazer). fazer) . Ex.: Ex.: Bolo comum: comum:
1. Bater o acar e a manteiga, com a essncia de baunilha at branquear. branquear. 2. Acrescentar as gemas uma a uma, batendo sempre, at levantar bolhas. bolhas. 3. Peneirar a farinha, a maizena e o fermento e ir acrescentando pouco a pouco, alternando com o leite, sem parar de bater. bater. 4. Em separado, bater as claras em neve, com a pitada de sal. sal. 5. Misturar as claras delicadamente mistura 6. Assar em forma untada e polvilhada com farinha de trigo, em forno mdio, por aproximadamente 40 minutos. minutos.
05/04/2011 4
Computao Bsica
1. O Conceito de Algoritmo Alan Turing (1912 - 1954), 1954), matemtico britnico, descreve em 1936 uma mquina terica, conhecida como Mquina de Turing, capaz de realizar qualquer tarefa computvel, desde que execute adequadamente uma determinada seqncia de instrues. instrues. Esse seqncia de instrues chamada de algoritmo. Em 1938 1938, , foi recrutado criptogrfica do governo. governo. pelo departamento de anlise
Conseguiu decifrar o cdigo da mquina de criptografia Enigma, que a Alemanha de Hitler usava para mandar mensagens militares cifradas durante a guerra. guerra.
05/04/2011 5
Computao Bsica
1. O Conceito de Algoritmo Graas ao sistema de decodificao que ele criou, o Reino Unido passou a interceptar as mensagens e localizar os submarinos alemes, atacandoatacando-os e revertendo o avanar da guerra. guerra . Mas seu trabalho era secreto, e os feitos de Turing passaram sem aclamao na poca. poca. Colossus Colossus: :
05/04/2011
Computao Bsica
1. O Conceito de Algoritmo Como homossexual, no publicamente humilhado. humilhado. incio dos anos 1950 foi
Perdeu o acesso de segurana aos laboratrios onde trabalhava porque, sob a mentalidade da Guerra Fria corrente, homossexuais eram uma brecha na segurana. segurana. Condenado a terapias base de estrognio, o que, de fato, equivalia a castrao qumica e que teve o humilhante efeito secundrio de lhe fazer crescer seios. seios. Em 8 de junho de 1954, 1954, um criado de Turing encontrou encontrou-o morto em sua residncia em Wilmslow, Wilmslow, Cheshire Cheshire. . Um exame postpost-mortem estabeleceu que a causa da morte foi envenenamento por cianeto. cianeto.
05/04/2011 7
Computao Bsica
Um algoritmo a descrio de um padro de comportamento, expresso em termos de um repertrio bem definido e finito de aes "primitivas", das quais damos por certo que elas podem ser executadas. executadas. Introduziremos de forma intuitiva a noo de algoritmo, motivando ao mesmo tempo as estruturas bsicas de controle (seqncia simples, alternativa e repetio) como formas de raciocnio "naturais "naturais. .
05/04/2011
Computao Bsica
1. O Conceito de Algoritmo
Linguagem Natural
Algoritmo
Linguagem de Programao
Linguagem de Mquina
05/04/2011
Computao Bsica
"traga a cesta com batatas do poro"; "traga a panela do armrio"; "descasque as batatas"; devolva a cesta ao poro;
05/04/2011
10
Computao Bsica
"traga a cesta com batatas do poro"; "traga a panela do armrio"; se "saia clara" ento "coloque avental"; "descasque as batatas"; "devolva a cesta ao poro;
05/04/2011
11
Computao Bsica
2. Algoritmos NoNo-Computacionais Repeties "traga a cesta com batatas do poro"; "traga a panela do armrio"; se "saia clara" ento "coloque avental"; "descasque uma batata"; "descasque uma batata"; ... (50 vezes) "descaque uma batata"; "devolva a cesta ao poro
05/04/2011
12
Computao Bsica
2. Algoritmos NoNo-Computacionais Repeties "traga a cesta com batatas do poro"; poro"; "traga a panela do armrio"; armrio"; se "saia clara" ento "coloque avental"; avental"; se "nmero de batatas insuficiente" ento "descasque uma batata" batata"; ; se "nmero de batatas insuficiente" ento "descasque uma batata"; batata"; ...( ...(50 vezes) se "nmero de batatas insuficiente" ento "descasque uma batata"; batata"; "devolva a cesta ao poro; poro;
05/04/2011
13
Computao Bsica
2. Algoritmos NoNo-Computacionais Repeties "traga a cesta com batatas do poro"; poro"; "traga a panela do armrio"; armrio"; se "saia clara" ento "coloque avental"; avental"; enquanto "nmero de batatas insuficiente" faa "descasque uma batata" batata"; ; "devolva a cesta ao poro; poro;
05/04/2011
14
Computao Bsica
3. Algoritmos Computacionais Um algoritmo computacional instrues que manipula dados. dados. uma seqncia de
Instrues: comandos que determinam a forma pela qual os dados devem ser tratados. tratados. Dados: informaes recolhidas/fornecidas por diversos meios e que sero processadas pelo computador atravs das instrues. instrues .
05/04/2011
15
Computao Bsica
3. Algoritmos Computacionais At certa parte do curso vamos implementar algoritmos computacionais utilizando o PORTUGOL e a linguagem de programao C. Depois de um tempo, vamos abandonar o PORTUGOL e permanecer apenas com o C. Existem vrias verses de PORTUGOL PORTUGOL. . A linguagem C foi proposta por Brian Kernighan and Dennis Ritchie entre o final da dcada de 1960 e incio da dcada de 1970. 1970.
05/04/2011
16
Computao Bsica
3. Algoritmos Computacionais A linguagem foi padronizada pelo ANSI (American National Standards Institute) no final da dcada de 1980 e ficou conhecida como ANSI C. Desde ento sofreu vrias alteraes. alteraes. The Spirit of C: Trust the programmer. programmer. Dont prevent the programmer from doing what needs to be done. done. Keep the language small and simple. simple. Provide only one way to do an operation. operation. Make it fast, even if it is not guaranteed to be portable. portable .
05/04/2011
17
Computao Bsica
05/04/2011
18
Computao Bsica
3. Algoritmos Computacionais Identificadores Identificadores: : nomes (rtulos) atribuidos s variveis, funes e estruturas de dados que so utilizados em algoritmos. algoritmos . Regras para formao de identificadores: identificadores:
o primeiro caractere deve ser, obrigatoriamente, uma letra; letra; do segundo caractere em diante so permitidos nmeros e letras; letras ; o smbolo de sublinhado (_) pode ser usado para separar nomes compostos; compostos; no so permitidos espaos, caracteres acentuados e smbolos especiais na composio do nome de um identificador; identificador; palavras reservadas no podem ser usadas (ver slide anterior); anterior) ; h distino entre maisculo e minsculo. minsculo.
05/04/2011
19
Computao Bsica
05/04/2011
20
Computao Bsica
3. Algoritmos Computacionais Varivel Varivel: : um espao reservado na memria do computador para armazenar um determinado tipo de dado. dado. Devem receber identificadores para poderem referenciadas e modificadas quando necessrio. necessrio. ser
Um programa deve conter declaraes que especificam de que tipo so as variveis que ele utilizar e s vezes um valor inicial. inicial. Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante. instante.
05/04/2011
21
Computao Bsica
05/04/2011
22
Computao Bsica
inteiro: nmero inteiro, negativo, nulo ou positivo. positivo. Ex.: Ex.: -15 15, , 0, 101 positivo. Ex.: Ex.: -1, real: nmero real, negativo, nulo ou positivo. -0.5, 0, 5, 9.5 caracter: conjunto de caracteres alfanumricos. alfanumricos. Ex.: Ex.: AB, 123, 123, A A123 123 , CASA logico: conjunto de valores FALSO ou VERDADEIRO em proposies lgicas. lgicas.
05/04/2011
23
Computao Bsica
3. Algoritmos Computacionais Tipos bsicos de varivel em C (por enquanto isso basta, depois veremos muito mais!): mais!): int: nmero inteiro, negativo, nulo ou positivo. positivo. Ex.: Ex.: 15 15, , 0, 101 float: nmero real, negativo, nulo ou positivo. positivo. Ex.: Ex.: 1, -0.5, 0, 5, 9.5 char: apenas um nico caracter alfanumrico. alfanumrico. Ex.: Ex.: A, 3, 2 , d
05/04/2011
24
Computao Bsica
3. Algoritmos Computacionais Estrutura bsica de um algoritmo computacional em Portugol: Portugol : algoritmo nome_do_algoritmo" // Seo de Declaraes var <declarao de variveis> // Seo de Comandos inicio <comandos> fimalgoritmo
05/04/2011 25
Computao Bsica
3. Algoritmos Computacionais Estrutura bsica de um algoritmo computacional em C: #include <stdio.h> #include <stdlib.h> int main() { // Seo de Declaraes <declarao de variveis> // Seo de Comandos <comandos> system("PAUSE"); return 0; }
05/04/2011 26
Computao Bsica
3. Algoritmos Computacionais Declarao de variveis em Portugol: Portugol: algoritmo declaravariaveis" // Seo de Declaraes var inteiro: idade, num_de_filho real: peso, altura // Seo de Comandos inicio <comandos> fimalgoritmo
05/04/2011
27
Computao Bsica
3. Algoritmos Computacionais Declarao de variveis em C: #include <stdio.h> #include <stdlib.h> int main() { int idade, num_de_filho; float peso, altura; // Seo de Comandos <comandos> system("PAUSE"); return 0; }
05/04/2011 28
Computao Bsica
05/04/2011
29
Computao Bsica
4. Algoritmos Computacionais: Operadores Operadores aritmticos: aritmticos: Operador + * / % -++ Ao Subtrao, tambm menos unrio Adio Multiplicao Diviso Mdulo da diviso (resto) Decremento Incremento
05/04/2011
30
Computao Bsica
4. Algoritmos Computacionais: Operadores Precedncia dos operadores aritmticos: aritmticos: Operador ++ -*/% +Precedncia Mais alta . . Mais baixa
Operadores do mesmo nvel de precedncia so avaliados pelo compilador da esquerda para a direita. direita. ATENO Em qualquer caso, os parnteses so sempre os campees!
05/04/2011 31
Computao Bsica
4. Algoritmos Computacionais: Operadores Menos unrio: unrio: Operador num1 num 1= -num; num; Ao Menos unrio
05/04/2011
32
Computao Bsica
4. Algoritmos Computacionais: Operadores Operadores aritmticos: aritmticos: Operador + * / delta = b*b 4*a*c; Ao Subtrao Adio Multiplicao Diviso
05/04/2011
33
Computao Bsica
4. Algoritmos Computacionais: Operadores Operadores aritmticos: aritmticos: Operador % num = 17 17% %5; Ao Mdulo da diviso (resto)
05/04/2011
34
Computao Bsica
4. Algoritmos Computacionais: Operadores Operadores aritmticos de atribuio: atribuio: Operador a+=b a-=b a*=b a /=b a%=b Ao a=a+b a=ab a = a*b a = a/b a = a%b
a += 2; equivale a a = a + 2;
05/04/2011
35
Computao Bsica
4. Algoritmos Computacionais: Operadores Operadores de incremento e decremento: decremento: Operador -++ a++; ou a++; a +=1 +=1; ou a = a + 1; b = ++a ++a; ; difere de a--; --; ou a -=1; ou a = a - 1; b = --a --a; difere de
05/04/2011
Ao Decremento Incremento
b = a++; a++;
b = a--; --;
36
Computao Bsica
5. Algoritmos Computacionais: Funes Algumas funes teis teis: : Funo pow(a,b) sqrt(a) Ao ab (a^b)
a (a1/2 ou a^(1/2) )
05/04/2011
37
Computao Bsica
x +1 x
05/04/2011
38
Computao Bsica
x +1 x
05/04/2011
39
Computao Bsica
45 2h 4h(3 h) 3x
22 k
05/04/2011
40
Computao Bsica
45 2h 4h(3 h) 3x
22 k
05/04/2011
41
Computao Bsica
05/04/2011
42
Computao Bsica
a+b+
34 + 9 e u 89
05/04/2011
43
Computao Bsica
05/04/2011
44
Computao Bsica
(a + x) 2+ w 3a 2
05/04/2011
45
Computao Bsica
7. Entrada e Sada de Dados Sada de dados (via monitor): monitor): Em Portugol: Portugol: escreva() escreva("Sua idade :", idade, "anos."); Em C: printf() printf("Sua idade : %d anos. \n", idade); printf("Sua altura : %f metros. \n", altura); printf("A letra : %c. \n", letra);
\n
Nova linha
05/04/2011
46
Computao Bsica
7. Entrada e Sada de Dados Entrada de dados (via teclado): teclado): Em portugol: portugol: leia() (idade); ; leia(idade) leia(altura) (altura); ; (letra); ; leia(letra) Em C: scanf() scanf("%d", &idade); scanf("%f", &altura); scanf("%c", &letra);
05/04/2011
47