Instituto Federal de Mato Grosso do SulFevereiro/2024

IFMS marca

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

Mark I, Harvard, 1944

Criando e executando programas

Diagrama de criação e execução de 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”

Pessoa confusa

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

Instruções do 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.

Acesse em https://www.jogos360.com.br/light_bot.html

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

TIOBE Index

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

Logo Python

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!

Ações 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!


O programa abaixo imprime uma mensagem na tela.
#Isso é um comentário. Apenas para humanos. Ignorado pelo computador
print("Bem-vindos estudantes de Construção de Algoritmos!")

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?

Atirei o pau no gato tô
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)

4

Você pode criar "contas" complexas encadeando operadores e operandos. Sugiro fortemente o uso de parêntesis!

print(2+3*3)

11

print((2+3)*3)

15

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


1 + 2 + 3

(2 * 8) / 10


Regra #3: Um valor é um grânulo de dado que não pode ser simplificado.

6

1.6


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)
'int'
type(10.2)
'float'

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
6.5

Cuidado ao dividir números por zero!

13/0
ZeroDivisionError: division by zero

Quer calcular a divisão inteira? Use //
Quer o resto? Use o módulo %

13//2
6
13 % 2
1

É possível converter entre os tipos numéricos utilizando os comandos int(), e float()

int(2.5)
2
float(5)
5.0

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á!
NameError: name 'Ola' is not defined
"Olá!"
Olá

Strings podem ser concatenadas usando o operador +

"Olá!" + "TADS 1"
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
TypeError: can only concatenate str (not "int") to str
"Hello"+str(20)
Hello 20
O comando str() converte Numerics em Strings

Comandos úteis para String

Tamanho de uma String: len()

print(len("Hello World"))
13

Para verificar se uma determinada frase ou caractere está presente em uma string: in

print("dia" in "Hoje é dia de Python!")
True

Converter os caracteres para maiúsculas: upper()

print("dia".upper())
DIA

Converter os caracteres para minúsculas: lower()

print("OlA BoM DiA".lower())
ola bom dia

Remover espaços em brancos das "pontas": strip()

print(" OlA BoM DiA ".strip())
OlA BoM DiA

Substitir uma string por outra: replace()

print("Cebolinha só fala eLado".replace("L", "rr"))
Cebolinha só fala errado

Lista completa de comandos úteis para Strings.

Booleans


Valores Booleanos só podem assumir dois valores True ou False

print(10 > 9)
True
print(20 < 73)
False

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()))