principais estruturas de dados • Construir programas exemplo • Utilizar uma linguagem de programação (Python) 2 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
relacionada com a matemática e diversos problemas computacionais. • Uma abordagem gráfica é sugerida para facilitar a introdução aos principais conceitos. 8 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
corretamente identificar os pontos de um desenho. • Sistema de coordenadas • Utilizaremos daqui para frente coluna e linha para indicar uma posição. • 5 x 10 significa: coluna 5, linha 10 9 Uma abordagem gráfica Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
programa é a manipulação de dados. • Para entendermos corretamente como fazê-lo, precisamos entender os tipos de dados e suas diferenças. 17 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
entre aspas A = “texto” • Não confundir A com “A” A é a variável A “A” é o literal A 19 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
• Em expressões mantém-se a prioridade das operações como na matemática. • Parênteses () podem ser usados para alterar esta ordem. 21 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
para modificar valores como verdadeiro e falso, criando expressões lógicas. • O resultado das operações é definido pelas chamadas tabelas-verdade de cada operador 22 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
parte de uma sentença, é necessário seguirmos a seguinte ordem: não, e, ou. • Para operadores aritméticos, utiliza- se o padrão da matemática: 1) Multiplicação e Divisão 2) Adição e Subtração 26 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
um tipo de dados • Só podem armazenar um valor de cada vez • Devem ter nomes começando com letras ou _. Podem conter números, exceto no primeiro caractere 31 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
B = 5 * 3 C = A e B D = B * A – 2 > 4 • A atribuição é a operação que modifica o valor de uma variável. • É importante notar que se atribui o resultado da expressão a variável e não a expressão em si. 32 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
de cima para baixo. A = 4 B = 5 C = A + B A = 10 • No final, A vale 10, B vale 5 e C vale 9. Observe que o valor de C não foi alterado pelo novo valor de A 33 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
de coordenadas relativas a um ponto. Imagine A,B como sendo as coordenadas de um ponto. • O ponto ao lado é A+1,B • O ponto abaixo é A, B+1 34 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
cantos de um quadrado usando três variáveis. • Uma para a linha, outra para a coluna superior esquerda. • A terceira deve conter o tamanho do lado. 35 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Defina-o usando A,B como o ponto da esquerda e depois faça para os outros dois pontos 36 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
gráfico ao lado. • Utilize coordenadas relativas, considerando A,B o primeiro ponto. • As letras indicam a questão e o ponto que deve ser usado como referência. Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
na tela Escreva “Alô !!!” • Utilizada também para exibir o conteúdo de variáveis e o resultado de expressões. Escreva A Escreva 2 * 5 38 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
resultado lógico • Consiste na escolha do que fazer, dependendo de uma condição • Nem tudo segue uma ordem fixa • Presente na maioria dos problemas 39 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
um ou dois resultados. Um para o caso da condição ser verdadeira e outro caso falso. Se a > b: Escreva “a é maior que b” Senão: Escreva “a é menor ou igual a b” 40 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
comando que deve ser executado mais de uma vez. • Utiliza uma condição para determinar se deve continuar a repetir (verdadeiro) ou não (falso). 41 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
e escreva a tabuada de multiplicar deste (1 até 10) • Reescreva o programa anterior, desta vez perguntando o limite inferior e superior da tabela 45 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
aos aprendidos em Lógica, exceto pelo fato de estarem escritos em inglês. • Lembre-se sempre em minúsculas. Lógica Python Não not E and Ou or 47 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
“O valor de %d x %d é %d” % (3,4,12) Neste exemplo, %d é como uma lacuna onde preencheremos em ordem. O 3 para o primeiro, 4 para o segundo e 12 para o terceiro. 50 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
utilizado para valores literais print “Seu nome é %s” % (“José”) Veja que o % aqui é usado apenas para separar a mensagem com máscara dos valores que serão utilizados entre parênteses. 51 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
raw_input(“Digite o valor de C”) • Digite o valor de C será impresso antes de pedir a digitação do valor. • raw_input sempre retorna um valor literal 53 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
verdadeira. • Após a última linha do bloco, a execução volta para a linha do while onde a condição será novamente avaliada. 57 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
funções. def quadrado(a,b,c,d): p = a while p<c: ponto(p,b) ponto(p,d) p=p+1 p = b while p<d: ponto(a,p) ponto(c,p) p=p+1 59 Esta linha define o nome da nova função e quais parâmetros ela recebe Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
senão else. Lógica Python se a>b: escreva a senão: escreva b if a>b: print a else: print b 62 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
• Baixe os arquivos tela.py e graficos.py • tela.py é o programa gráfico em si. • Execute-o. • Uma janela com grade deverá aparecer 64 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
podem ser utilizadas em seus programas. • Abra-o no IDLE. • Execute com F5 • Digite: ponto(1,1) • Um ponto vermelho deve aparecer na tela 65 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
coluna x e linha y • cor(r,g,b) Altera a cor atual para a definida por r,g,b (red = vermelho, green = verde, blue = azul) 66 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
desenho. Deve ser o dado antes de qualquer outro comando de desenho • finaliza() Termina a comunicação com a tela de desenho 68 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
muito interessante no início, mas gravar seu desenho se torna cada vez mais importante. • O utilitário gráfico pode ser utilizado em seus programas Python e não apenas pelo interpretador 69 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
com as funções do exercício anterior. • Utilize mais de uma árvore e mais de uma casa em uma tela de 64x64 pontos. 72 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
pode ter tamanho indeterminado • Uma lista pode ser vazia • Representa-se uma lista em Python através de colchetes A = [ 1, 2, 3] B = [ ] 73 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
ser referênciados através de um índice, começando com 0 até o último elemento. B = [1,2,3] print B[0] 1 print B[2] 3 74 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
da posição x print B [1,2,3,5,10,11,12] B.insert(3,4) print b [1,2,3,4,5,10,11,12] 78 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
x na lista. Resulta em erro caso este não exista. print B [1,2,3,4,5,10,11,12] B.remove(10) print B [1,2,3,4,5,11,12] 79 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
lista. Se usado sem valor pop() retorna o último elemento da lista. B = [1,2,3,4,5] B.pop() 5 print B [1,2,3,4] 80 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
cujo valor seja igual ao de x. B = [1,2,3,4,5] B.index(5) 4 Retorna um erro caso este não exista 81 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
à 10 2. Remova o elemento da posição 2 3. Remova o elemento de valor 5 4. Acrescente 11 e 12 ao fim da lista 5. Acrescente 0 no início da lista 6. Exiba o tamanho da lista 85 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
imprimir 8 valores lidos do teclado. o Escrever a média e a soma destes valores. o Imprimir o menor e o maior. o Utilize um menu para: • 1. inserir valores. 2. Calcular média 3. Calcular soma 4. Calcular o maior 5. calcular o menor. Faça cada opção em um função diferente. Ao calcular, imprima os resultados. 86 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
lista dentro de outra lista, utiliza-se a mesma notação de listas com mais um índice. F = [1,2,3,[4,5,6]] print F[3][0] 4 89 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
gerenciar uma agenda de telefones. o A agenda deve guardar nome e telefone de várias pessoas. o Operações a suportar: inclusão, exclusão, alteração, pesquisa, listagem e ordenação. o Em todos as opções o nome do indivíduo será utilizado como chave de pesquisa. o Utilize menu. 90 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
no valor especificado em início e terminando em fim – 1 range(5,10) [5,6,7,8,9] 92 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
uma lista. for elemento in lista: • Exemplo: Imprimir todos os elementos for a in range(10): print a 95 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
de dados com uma política de inclusão e exclusão de elementos bem definida. • Em pilhas, a inclusão sempre é feita no topo ou fim, assim como as exclusões. • A estrutura é similar a uma pilha de pratos. • Coloca-se sempre um sobre o outro e retira- se sempre pelo topo. 96 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
onde se insere no fim e retira-se no início. • É uma estrutura similar a uma fila de cinema. • O primeiro que chega é o primeiro a entrar. • Os que chegam depois vão para o fim da fila. 98 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
aplica a função passada como parâmetro a cada elemento da lista, retornando uma outra lista onde com os elementos cujo retorno de função é verdadeiro. • Utilizada para filtrar ou selecionar valores. 100 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
semelhante a filter, porém esta retorna uma lista com o retorno de função aplicada a cada elemento da lista. • Mais de uma lista pode ser passada como parâmetro. Neste caso, o número de argumentos de função deve ser igual ao de listas. 102 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
como função. • Neste caso, map retornará uma lista com os argumentos que seriam passados. map(None, [1,2,3],[4,5,6]) [(1,4), (2,5), (3,6)] 104 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
da lista. • Na primeira vez, passa o primeiro e o segundo elemento. • Nas próximas, o resultado da chamada anterior com o próximo elemento. 105 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
uma lista através de seu índice. del lista(x) • Remove o elemento x de lista A = [1,2,3] del a[0] print A [2,3] • Del também pode ser utilizada para apagar variáveis. 107 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
de listas, porém tuplas não podem ser alteradas. • Utilizamos ( ) invés de [] para denotar tuplas. T = ( 1,2,3 ) J = ( “joão”, “maria”, “josé” ) 108 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
método join da string. S = S.join(SL) • Embora não possamos alterar strings, nada nos impede de criarmos novas. • S = S + “A” 113 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
inclusive, mas fim não. • Isto é, [1:4] inclui o elemento 1, mas não o elemento 4. • [:] pode ser utilizado para criar uma nova cópia de string ou lista. • Valores negativos indicam que a contagem se inicia do fim da seqüência. 115 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
um elemento através de sua chave. • Dicionários são escritos entre chaves e sempre no formato chave:valor. • Exemplo: Telefones = { “nilo”:9717, “joana”:9784} 116 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
se uma chave existe. Telefones.has_key(“nilo”) True Telefones.has_key(“maria”) False • Você também pode obter o mesmo efeito com in: “nilo” in Telefones True “maria” in Telefones false 118 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
uma nova chave. Telefones[“maria”] = 9784 • para listar todas as chaves de um dicionário, utilizamos o método keys() que retorna uma lista. print Telefones.keys() [“nilo”, “joana”, “maria”] 119 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
dicionário. del Telefones[“nilo”] • Dicionários podem ser construídos através de uma lista de tuplas e do método dict. print dict( [ (“nilo”, 9717),(“joana”, 9784)]) { “nilo”: 9717, “joana”:9784 } 120 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
com tuplas chave, valor. print Telefones.items() [(“nilo”, 9717), (“joana”, 9784) • Utiliza-se o método values para retornar um lista com os valores. print Telefones.values() [9717, 9784] 121 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
(List comprehensions). [ x * 2 for x in range(5) ] • Cria uma lista [0,2,4,6,8] 122 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
funções, mas não tem nome e podem ser utilizadas como variável. F = lambda x: x+5 print F(4) 9 123 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
• Em Python, utiliza-se a função open para abrir um arquivo. F = open(nome_do_arquivo, modo) print F.readline() F.close() 124 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
Leitura w Escrita. Apaga caso já exista a Abre para adicionar ao final (append) r+ Leitura e escrita b Indica modo binário 125 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
retornando como string. • readline() Lê e retorna uma linha. • readlines() Retorna todas as linhas de um arquivo numa lista. 127 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
muito grandes. • tell() Retorna a posição corrente no arquivo • seek(posição, referência) Move o ponteiro do arquivo para posição. Refência (0 início, 1 atual, 2 fim) 128 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/
em caso de erro. • Isto acontece porque uma exceção foi gerada. • Exceções não tratadas causam o fim do programa. try: programa except: tratamento 129 Nilo Menezes – Lógica de Programação – http://www.nilo.pro.br/python/