Instituto Federal de Mato Grosso do SulFevereiro/2024
03. Programas e Linguagens de Programação
Construção de Algoritmos
Prof. Rodrigo Duran
Nesta aula vamos:
-
Aprender sobre programas e linguagens de programação
Vamos aprender como as linguagens de programação diferem de linguagens naturais. Vamos praticar o uso de instruções não-ambíguas e conhecer o Python. Vamos rodar o nosso primeiro programa!
Programas e Linguagens de Programação
Criando e executando programas
Por que Linguagens de Programação?
Programas devem instruir o comportamento do computador ao executar uma tarefa.
Em nossas atividades diárias, a linguagem natural é usada para descrever algoritmos. Essa abordagem só funciona pois os algoritmos são executados por humanos! Nós temos "bom-senso" e somos capazes de entender diversos passos devido ao seu contexto.
IMPORTANTE: O computador não é capaz de "interpretar o que você quis dizer"!
Você é capaz de determinar com clareza qual o sentido e o comportamento das sentenças ao lado?
“ Beltrana sentou na cadeira e quebrou o braço ”
“Ana pediu a Caio que pegasse sua carteira”
“Maria olhou a gata correndo”
“Ana encontrou o gerente da loja com o seu irmão”
“Ficou combinado que nos encontraremos no banco”
Linguagens (Artificiais) de Programação
Ao escrever programas, precisamos descrever, literalmente e em detalhe o que gostaríamos que o computador faça quando um programa é executado.
Para isso, precisamos de instruções que sejam precisas e não-ambíguas!
Uma linguagem de programação tem uma definição formal e usa apenas um pequeno conjunto bem definido de palavras e expressões (sintaxe).
Qualquer expressão aceita pela linguagem de programação deve ter um significado preciso (semântica)
Instruções LightBot
LightBot
O objetivo do LightBot é sempre levar o robô a todos os pontos acesos e "piscar" em cada um desses pontos, até chegar no último ponto.
Linguagens de Programação
Existem diversas linguagens de programação, cada um com seu propósito específico.
Não existe uma melhor linguagem de programação, mas aquela que se adequa às suas necessidades: flexibilidade, performance, facilidade de desenvolvimento, suporte da comunidade, entre vários outros fatores.
A popularidade de linguagens de programação muda com o tempo. Mas aprender uma nova linguagem não é tão difícil: a maioria dos conceitos de uma linguagem pode ser transferida para outra*.
*: Desde que as linguagens sejam de "paradigmas" semelhantes: Veja mais em Paradigms and Beyond
Python
Python é uma linguagem de programação popular. Foi criado por Guido van Rossum e lançada em 1991. É usado para:
- Desenvolvimento web (server-side)
- Desenvolvimento de software
- Matemática
- Script do sistema
Python é uma linguagem de alto-nível de propósito geral. Sua filosofia de design enfatiza a legibilidade do código com uso significativo de identação
.Python é dinamicamente tipada e possui garbage-collector. É multiparadigma (procedural, orientada a objetos e funcional). Suas bibliotecas tem amplo suporte a vários tipos de funcionalidade e uma grande comunidade de suporte.
Python roda em diferentes plataformas (Windows, Mac, Linux, Raspberry Pi, etc). A versão mais atual do Python é a 3.12.2
Bibliotecas Python
Parte da popularidade recente de Python se deve à grande quantidade de poderosas bibliotecas:
- Pandas: Biblioteca de Ciência de Dados (DataFrames).
- Scikit-learn: Machine Learning para Python.
- PyTorch: Machine learning e visão computacional do Meta para Python
- TensorFlow: IA, Machine Learning and Deep Neural Networks
- NumPy: Matemática e Machine Learning
Ferramentas para programação
O código fonte de um programa é escrito e salvo em um editor. Você pode usar qualquer editor de texto (Bloco de Notas, Sublime, VSCode). Não é possível usar documentos do Word!
Um interpretador é o programa que converte códigos escritos por humanos, usando uma linguagem de programação, em uma forma que possa ser executada por um computador.
Um debugador ajuda o programador a monitorar o comportamento de um programa sendo executado. Muito útil quando queremos detectar o erro em um programa. Mais sobre estratégias de debug em próximas aulas!
Plataformas integradas, como o REPL.it integram um editor, interpretador e outras ferramentas como um console. Podem ser facilmente compartilhadas e não precisam de instalação!
Organização da REPL
Programas são estáticos e dinâmicos
Para executar um programa, primeiro devemos traduzir uma solução algorítmica em um código-fonte escrito em uma linguagem de programação.
O código-fonte é estático: são sequências de ações que humanos podem ler e entender seu objetivo mesmo sem executá-lo.
Programas em execução são dinâmicos: O comportamento do computador, ditado pelo código-fonte, é um processo ativo onde o comportamento é ditado pela interação entre usuário e computador.
Na prática, isso significa que um mesmo código-fonte pode ter diferentes comportamentos (e resultados) dependendo da interação do usuário!
Editando seu primeiro programa!
Acesse o link da nossa REPL. Você vai clonar a minha REPL e criar a sua própria.
Sua missão: editar o código desse programa para apresentar como saída o seu nome completo!
Meu primeiro programa em Python!
#Isso é um comentário. Apenas para humanos. Ignorado pelo computador
print("Bem-vindos estudantes de Construção de Algoritmos!")
print é uma palavra, parte do Python que instrui o computador a realizar uma saída de dados através do console. A saida é feita mostrando uma determinada informação na tela do console.
print pode mostrar qualquer coisa no console. Nesse caso estamos mostrando a frase "Bem-vindos estudantes de Construção de Algoritmos".
A maioria das palavras reservadas (sintaxe) do Python se assemelham à palavras em Inglês. Comentários (linhas começadas por #) servem para nos ajudar a compreender o código, mas não tem efeito no comportamento do computador.
Posso imprimir qualquer coisa mesmo? Teste os comandos a seguir, um de cada vez:
print(2)
print(2+2)
print("😀")
print(Teste)
Notou algo neste último? O nosso programa não apresentou uma saída pois possuia um erro!
Traceback (most recent call last):
File "main.py", line 1, in
print(Teste)
NameError: name 'Teste' is not defined
Uma sequência de comandos
É possível instruir o computador a executar uma sequência de comandos. Cada comando é executado em ordem. Um programa pode ter milhões de comandos.
print("Bem-vindos ao IFMS")
print("Estamos praticando o uso do comando print")
print("Este programa mostra 3 linhas no console.")
Os números acima são chamados de linhas. Você não os escreve. Mas são muito úteis para localizar onde estão possíveis erros.
Você pode escrever um código que gere a seguinte saída?
Mas o gato tô
Não morreu reu reu
Dona Chica cá
Admirou-se se
Do berro, do berro que o gato deu
Miau 😺
Operadores aritméticos
Você também pode colocar operadores aritméticos dentro de um comando print.Neste caso, o computador vai "resolver" a "conta" e apresentar o resultado no console.
print(2+2)
Você pode criar "contas" complexas encadeando operadores e operandos. Sugiro fortemente o uso de parêntesis!
print(2+3*3)
print((2+3)*3)
Regras do Comportamento de Programas
Regra #1: O código-fonte que você escreve dita o comportamento do computador quando você executa o código, mas esse comportamento envolve estágios e conceitos que não necessariamente estão explícitos no código.
A maioria dos programas vai ter algum elemento matemático: eles envolvem números, aritmética, etc. Para isso é fundamental o conceito de expressão:
Regra #2: Uma expressão é um pedaço de código que o computador pode avaliar em um valor
Regra #3: Um valor é um grânulo de dado que não pode ser simplificado.
Regra #4: Expressões são parte do código-fonte. O computador avalia uma expressão quando roda um código.
Regra #5: A avaliação acontece dentro da memória do computador onde o computador armazena os resultados intermediários durante uma avaliação.
Regra #6: É possível observar o resultado da avaliação de uma expressão utilizando o console.
O comando print() instrui ao computador para "imprimir" (mostrar) no dispositivo de saída (console) o resultado de uma expressão
Regra #7: Parâmetros são formas de customizar um determinado comando. Os parâmetros são expressões inseridos dentro do parêntesis do comando.
print() espera um parâmetro (entre parêntesis)
A mais simples das expressões: 1+1
Regra #8: Expressões Aritméticas são tipos de expressões compostas de expressões menores. A avaliação é feita calculando a expressão usando as funções de soma (+), subtração (-) , multiplicação (*) e divisão (/)
A divisão (/) é sempre a divisão real. Ou seja, o resultado terá casas decimais.
Regra #9: Literais são expressões escritas no código diretamente como um valor
Regra #10: Valores possuem tipos de dados
Tipos de dados em Python
A última versão do Python define alguns Bult-in Data Types:
Numeric
Em Python temos dois tipos de Numeric:
- Int: é um número inteiro, positivo ou negativo, sem decimais, de comprimento ilimitado
13-22
- float: ou "número de ponto flutuante" é um número, positivo ou negativo, contendo um ou mais decimais.
13.23-42.5
Você pode sempre testar o tipo de um valor utilizando o comando type()
type(5)
type(10.2)
Expressões aritméticas utilizando soma (+), multiplicação (*) e subtração (-) são diretas.
Use sempre parêntesis nas expressões!
Numeric: Divisão
A divisão em Python tem como resultado um número real
13/2
Cuidado ao dividir números por zero!
13/0
Quer calcular a divisão inteira? Use //
Quer o resto? Use o módulo %
13//2
13 % 2
É possível converter entre os tipos numéricos utilizando os comandos int(), e float()
int(2.5)
float(5)
Strings
Damos o nome de String (barbante) o conjunto de caracteres que representa um texto.
Para diferenciar palavras da linguagem (sintaxe) de Strings, usamos as " " envolvendo uma String
Olá!
"Olá!"
Strings podem ser concatenadas usando o operador +
"Olá!" + "TADS 1"
Podemos "quebrar" a sintaxe de multistring
"""Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."""
Strings podem ser evolvidas por " " ou ' '.
Podemos misturar Strings e Numerics? Não
"Hello"+20
"Hello"+str(20)
Comandos úteis para String
Tamanho de uma String: len()
print(len("Hello World"))
Para verificar se uma determinada frase ou caractere está presente em uma string: in
print("dia" in "Hoje é dia de Python!")
Converter os caracteres para maiúsculas: upper()
print("dia".upper())
Converter os caracteres para minúsculas: lower()
print("OlA BoM DiA".lower())
Remover espaços em brancos das "pontas": strip()
print(" OlA BoM DiA ".strip())
Substitir uma string por outra: replace()
print("Cebolinha só fala eLado".replace("L", "rr"))
Booleans
Valores Booleanos só podem assumir dois valores True ou False
print(10 > 9)
print(20 < 73)
Expressões Booleanas serão importantíssimas. Vamos aprender com mais detalhes sobre elas no futuro ...
QUIZ!
Qual o resultado das seguintes expressões:
17//2 * 2
14 % 2
print(len(" TADS 1 NA "))
print(len(" TADS 1 NA ".strip()))
