Tuesday, September 27, 2016

Aula 4 prev

Preparando a aula 4

Na aula 4 vamos subir um pouco a dificuldade dos exemplos implementando alguns problemas cujo pseudo código vimos nas primeiras aulas.

Como preparação você pode tentar implementar e testar a especificação que estudamos na aula 1:

Dado um texto, conte o número de palavras que contém a letra a e a letra b


Dica: conte palavras somente após encontrar ambas as letras e cuide para não contar a mais se as letras ocorrem varias vezes na mesma palavra (por exemplo como na palavra 'ajkblmabab')




Na aula 4 vamos ver alguns conceitos mais avançados de Python e resolver alguns problemas "dificeis" usando comandos "magicos". 

Para melhor aproveitamento leia os seguintes tópicos em Recursos:

Caracteres, números e variáveis 

Tipos de dados nativos 

Comandos 
 

Monday, September 26, 2016

Aula 3

Aula 3 - strings, alguns comandos básicos

Nesta aula iniciamos o estudo do Python propriamente dito. O material coberto corresponde mais ou menos ao item Caracteres, números e variáveis e parte do item Comandos em Recursos.

Vimos um exercício implementando em Python um exemplo cujo pseudo código criamos em aulas anteriores:

Dado um texto contendo somente caracteres alfanuméricos e espaços em branco contar o número de palavras no texto. Uma palavra é definida como sequência ininterrupta de caracteres alfanuméricos terminada por espaço em branco. 

Uma implementação possível seria a seguinte:

''' conta o numero de palavras num texto. Caracteres permitidos:
alfanumericos e espaço em branco'''


txt = input()

na_palavra = (txt[0] != ' ')
if na_palavra:
    conta = 1
else:
    conta = 0

# percorre o texto caracter a caracter
for car in txt:
    # verifica se caracter é espaço ou alfanumerico
    if car != ' ':
        n_pal = True
    else:
        n_pal = False

    # verifica se passou fronteira de entrada em palavra
    if na_palavra == False:
        if n_pal == True:
            # entrou numa palavra
            conta = conta + 1
            na_palavra = True
    else:
        # estamos numa palavra: verifica se terminou
        if n_pal == False:
            na_palavra = False

# imprime numero de palavras encontradas
print('Numero de palavras encontradas = ', conta)
  

Verifique que este programa implementa a especificação digitando o código no IDLE e executando. Teste casos extremos.

 


O código abaixo tem o mesmo efeito e é mais sucinto:

txt = input()
na_palavra = (txt[0] != ' ')
conta = int(na_palavra)


# percorre o texto caracter a caracter
for car in txt:
    # verifica se caracter é espaço ou alfanumerico
    n_pal = (car != ' ')

    # verifica se passou fronteira de entrada em palavra
    if not na_palavra:

            if n_pal:
                # entrou numa palavra
                conta = conta + 1
                na_palavra = True
    else:
        # estamos numa palavra: verifica se terminou
        if not n_pal:
            na_palavra = False

# imprime numero de palavras encontradas
print('Numero de palavras encontradas = ', conta)


Lembrando que not e and correspondem aos conectivos lógicos negação e conjunção, experimente o código acima no IDLE e verifique que é outra implementação válida.

Para entender porque atribuições como n_pal = (car != ' ') funcionam  lembre, como explicado na aula, que o valor de uma expressão booleana é True ou False. Assim n_pal irá receber um valor True ou False respectivamente.



 



Podemos ainda generalizar o problema permitindo qualquer caracter whitespace no texto, não somente o espaço em branco ' '.

Neste caso a implementação acima deve ser ligeiramente modificada usando uma das muitas funções de objetos string. No caso dado um caracter lido basta testar se car.isalnum() retorna True ("é caracter alfanumérico") ou False ("não é um caracter alfanumerico"). O trecho modificado do código fica assim:

# percorre o texto caracter a caracter
for car in txt:
    # verifica se caracter é alfanumerico
    n_pal = car.isalnum()

........................................ etc



Monday, September 19, 2016

Prévia da aula 3

Preparando a aula 3

Por decisão da turma vamos abreviar a introdução a algoritmos e passar a ver a linguagem Python propriamente dita.

Os que tiverem notebook próprio podem trazê-lo para instalar o Anaconda 3 e preparar o ambiente de trabalho, à menos que já o tenham feito. 

É recomendável ter seu computador caseiro preparado para praticar programação em casa, dado a baixa carga horária semanal do curso.



De qualquer forma é recomendável que você leia os artigos sobre a linguagem Python na aba direita, sob o título "Recursos".

Aula 2

Aula 2

Coloquei os slides para a aula 2 aqui. Estamos ainda vendo noções intuitivas de algoritmos e fazendo exercicios em aula.

Em breve começaremos com a linguagem Python propriamente dita. Mas como dito em aula, programar é muito mais ter noção de algoritmos do que detalhes de linguagem. Com o bonus adicional de poder implementar o mesmo algoritmo em diversas linguagens, não somente Python. 

Thursday, September 15, 2016

Começou o curso

Aula 1

A primeira aula do curso foi em 12/9/2016. Quem quiser revisar os slides apresentados pode baixá-los deste link (vide abaixo). Um aviso do Dropbox aparece (arquivos .rar não podem ser previstos) e pode ser ignorado.

 O arquivo baixado deve conter página HTM, a qual pode ser vista em seu browser.





Nota: Infelizmente o Powerpoint corrompeu alguns slides na conversão para HTM. Então decidi colocar os próprios slides para download, que você pode fazer aqui.