MAC2166 - Introdução à Computação (1º Semestre de 2023)

Grande áreas Civil, Mecânica, Química e Petróleo

Guia de Estudos - Semana 1

Tópicos


Extras

Livros opcionais para leitura:

Começando a conhecer Python

Para começar a conhecer a linguagem de programação Python, leia o Capítulo 1 - Introdução: O Caminho do Programa do livro "Como Pensar Como um Cientista da Computação: Edição interativa (usando Python 3.x)", uma tradução do livro "How to Think Like a Computer Scientist: Interactive Version".

Python Shell

Neste curso, iremos ensinar a programação em Python 3. Inicialmente, usaremos o programa IDLE como editor, mas o Anaconda com Python 3 é similar.

No e-Disciplinas, você encontra links para videotutoriais que ensinam a instalar esses programas em diferentes sistemas operacionais.

Após instalar o IDLE, você pode então abrir o Python Shell, clicando no ícone indicado abaixo.

IDLE3_icone

Ao abrir o Python Shell, será exibida uma janela com o cursor piscando em frente ao prompt >>>, indicando que o sistema está pronto para receber comandos. Um comando é uma unidade de código que o interpretador do Python pode executar. Neste curso, estamos usando a versão 3 do Python.

Por exemplo, podemos usar o Python Shell para fazer contas, tal como em uma calculadora. Veja o exemplo abaixo digitado no prompt (>>>) do Python shell:

>>> 2 + 3 * 6
20
>>> (2+3)*6
30

Observe que a multiplicação (representada pelo símbolo *) tem precedência sobre a adição. Logo, o uso de parênteses se faz necessário quando queremos primeiramente calcular a soma.

A tabela abaixo apresenta a lista de operadores aritméticos do Python.

Operadores aritméticos:
OperadorDescriçãoExemploAvalia para
+Adição7 + 310
-Subtração7 - 34
*Multiplicação7 * 321
/Divisão (Real)7 / 32.3333333333333335
//Divisão (Inteiro)7 // 32
%Módulo (resto da divisão)7 % 31

Veja o vídeo abaixo, intitulado "Primeiras linhas em Python", do prof. Fabio Kon (IME-USP).
Porém, tome cuidado, pois nesse vídeo está sendo usada a versão 2 do Python e não o Python 3, o que gera uma diferença na saída do operador de divisão.

Variáveis e comando de atribuição

Podemos guardar resultados para uso posterior em variáveis. Veja o vídeo abaixo, intitulado "Variáveis e scripts (programas) em Python", do prof. Fabio Kon (IME-USP).

Uma variável é um nome que se refere a um valor armazenado na memória do computador. Um comando de atribuição (=) cria uma nova variável e lhe dá um valor.

Um comando de atribuição tem a seguinte forma:

variável = expressão
Significado:
  1. o valor da expressão é calculado;
  2. a variável é criada;
  3. a variável passa a fazer referência/guardar o valor

Variáveis são usadas para guardarmos valores que serão usados mais tarde no programa. Por exemplo, variáveis podem ser usadas como parte de futuras expressões matemáticas, indicando que seus valores serão usados como operandos dos operadores. Note, porém, que uma variável não pode ser usada em uma expressão antes de sua criação.
A qualquer momento podemos imprimir/exibir o valor de uma variável usando o comando print, tal como indicado no exemplo abaixo:

>>> a = 2 + 3 * 6
>>> print(a)
20
>>> b = a - 5
>>> print(b)
15

Nomes de variáveis devem obedecer à seguinte regra de formação. Os nomes das variáveis devem começar por uma letra ou o símbolo '_' (underscore) e depois conter somente letras, números ou underscore. Atenção, maiúscula é diferente de minúscula. Assim maior e Maior são duas variáveis diferentes. Abaixo são apresentados alguns exemplos de nomes de variáveis válidos digitados no prompt (>>>) do Python shell.

>>> valor_bruto = 1000
>>> _valor = 75
>>> bola8 = 50
>>> DocumentoDeIdentidade = 123456789

Abaixo é apresentado um exemplo de nome de variável inválido (por iniciar com um número) digitado no prompt (>>>) do Python shell. Observe a mensagem de erro indicando que o comando não pôde ser processado pelo interpretador.

>>> 8bola = 50
SyntaxError: invalid syntax

Atenção:

O comando de atribuição do Python não deve ser confundido com o conceito de igualdade de equações matemáticas. Por exemplo, o comando a = a + b do Python não implica que b = 0. Isto é, o comando em questão não é uma equação matemática, logo você não deve subtrair 'a' dos dois lados para tirar conclusões.

O valor contido no espaço de memória de uma variável pode variar com o tempo, não sendo um valor fixo durante todo tempo de execução de um programa.
Desse modo, comandos como a=a-4 são perfeitamente aceitáveis. No exemplo abaixo, a variável a recebe inicialmente o valor 14. Na sequência, o comando a=a-4 é executado, sendo sua expressão do lado direito a-4 então avaliada como 14-4 e, consequentemente, resultando em 10. Esse novo valor 10 passa então a ser armazenado na variável a, sobrescrevendo seu valor anterior 14 que é perdido.

>>> a = 14
>>> print(a)
14
>>> a = a - 4
>>> print(a)
10

Podemos imprimir os valores de múltiplas variáveis em um único comando print, passando as variáveis separadas por vírgulas.

>>> a = 3
>>> b = 2
>>> print(a, b)
3 2

Um problema recorrente em computação é o de trocar/inverter o valor entre duas variáveis. Isso será especialmente útil para a ordenação de dados em aulas futuras.
Por exemplo, se a = 3 e b = 2 para trocar seu valores poderíamos pensar em usar o seguinte código:

>>> a = b
>>> b = a
>>> print(a, b)
2 2

No entanto, o código acima não funciona, pois o primeiro comando de atribuição sobrescreverá o valor 3 armazenado na variável a que será perdido. De modo que, no final teremos o valor 2 nas duas variáveis a e b. Uma solução correta pode ser encontrada no código abaixo. A ideia é utilizar uma terceira variável auxiliar para guardar uma cópia de backup do valor original 3 da variável a, antes de copiar em a o valor 2 contido em b.

>>> t = a
>>> a = b
>>> b = t
>>> print(a, b)
2 3

O Python possui vários atalhos, logo para trocar o valor entre variáveis podemos usar também o seguinte código abaixo. Porém, note que, a solução abaixo é específica para códigos em Python.

>>> a,b = b,a
>>> print(a, b)
2 3

Em Python, podemos usar variáveis também para armazenar e processar textos. Na programação de computadores, uma cadeia de caracteres, mais conhecida como string, é uma sequência de letras e símbolos (na qual os símbolos podem ser espaços em branco, dígitos e vários outros como pontos de exclamação e interrogação, símbolos matemáticos, etc), geralmente utilizada para representar palavras, frases ou textos de um programa. Em um programa Python, strings podem ser especificadas como textos delimitados por aspas duplas ou simples. Somando duas strings obtemos uma nova string resultante da concatenação das duas primeiras. Veja o exemplo abaixo digitado no prompt (>>>) do Python shell:

>>> a = "Paulo"
>>> b = "Miranda"
>>> c = a + b
>>> print(c)
PauloMiranda

Dado que é possível somar duas strings, poderíamos pensar que é possível também somar uma string com um número inteiro, mas esta não é uma operação definida no Python. Como resultado temos a mensagem de erro indicada no exemplo abaixo.

>>> "Paulo" + 5
Traceback (most recent call last):
File "", line 1, in
"Paulo" + 5
TypeError: Can't convert 'int' object to str implicitly

Por outro lado, curiosamente, podemos multiplicar uma string por um inteiro em Python. O resultado é a criação de uma nova string contendo o texto repetido o número de vezes indicado.

>>> "Bla"*10
'BlaBlaBlaBlaBlaBlaBlaBlaBlaBla'

Dado que em Python podemos ter diferentes tipos de dados armazenados em uma variável, como descobrir o tipo de dado armazenado em uma variável preexistente se torna uma pergunta pertinente. Para saber o tipo de dado armazenado em uma variável podemos usar o comando type:

>>> a = 37
>>> type(a)
<class 'int'>
>>> a = "Paulo"
>>> type(a)
<class 'str'>

Textos são representados por objetos da classe str (string), enquanto inteiros são representados por objetos da classe int .

Para mais informações e exemplos sobre os tipos de dados em Python, veja o vídeo abaixo, intitulado "Valores e tipos em Python", do prof. Fabio Kon (IME-USP).

Dado que nos exemplos acima estamos usando as aspas duplas como delimitadores de string, uma pergunta oportuna é, portanto, a seguinte: como podemos inserir o caractere de aspas dupla (") como parte do texto de uma string? Uma resposta é considerar aspas simples como delimitadores sempre que queremos inserir aspas duplas dentro do texto e vice-versa.
Veja os exemplos abaixo digitados no prompt (>>>) do Python shell:

>>> a = 'Camões escreveu "Os Lusíadas" no século XVI.'
>>> print(a)
Camões escreveu "Os Lusíadas" no século XVI.
>>> b = "Esperamos o 'feedback' da professora."
>>> print(b)
Esperamos o 'feedback' da professora.

Outra solução é considerar sequências de escape.

Os caracteres ou sequências de escape são usadas para conseguir imprimir na tela caracteres especiais ou símbolos, que são impossíveis de obter normalmente. Exemplos comuns são as aspas simples ou duplas, que por já estarem sendo usadas como delimitadores da string geram as dificuldades vistas anteriormente para serem inseridas como partes integrantes do conteúdo da string. Outros exemplos são os de caracteres que não possuem um símbolo gráfico correspondente, tais como o caracter de pula linha e o de tabulação.

Esses caracteres especiais são especificados por meio de combinações de outros caracteres, denominadas sequências de escape, que sempre iniciam com uma barra invertida (\). O próprio caractere de barra invertida se torna um caractere especial por ser reservado para indicar o início de uma nova sequência de escape.
A tabela abaixo apresenta os caracteres de escape do Python:

Caracteres de escape no Python:
Sequência de escapeDescrição
\\Barra invertida (Backslash). Insere uma barra invertida.
\'Aspas simples (Single quote). Insere uma aspas simples.
\"Aspas duplas (Double quote). Insere uma aspas duplas.
\nNova linha (NewLine). Move o cursor para o início da próxima linha.
\tTabulação horizontal (Horizontal tab). Move o cursor uma tabulação para frente.

Experimente digitar no prompt (>>>) do Python shell os comandos abaixo:

>>> a = "Camões escreveu \"Os Lusíadas\" no século XVI."
>>> print(a)
Camões escreveu "Os Lusíadas" no século XVI.
>>> b = "Primeira linha.\nSegunda linha."
>>> print(b)
Primeira linha.
Segunda linha.
>>> c = "\tCom tabulação.\nSem tabulação."
>>> print(c)
       Com tabulação.
Sem tabulação.
>>> d = "Barra invertida: \\"
>>> print(d)
Barra invertida: \
>>> e = "\\\\\\"   #Imprime três barras invertidas.
>>> print(e)
\\\

O texto em vermelho (#Imprime três barras invertidas.) usado no exemplo acima é um comentário, tal como explicado abaixo.

Comentários

Em todas as linguagens de programação, comumente, temos a necessidade de documentar uma linha ou um bloco de código para melhor descrevê-lo e indicar para que ele serve. Comentários permitem que o programador adicione texto ao programa para facilitar seu entendimento por parte de outros programadores, ou até dele mesmo em um momento futuro. Em Python comentários são iniciados com #, tudo que estiver depois do # e na mesma linha será ignorado pelo interpretador.