Programação de Computadores - ic.uff.brotton/graduacao/programacao/4b_Aulas_operadores... ·...

Preview:

Citation preview

Programação de Computadores

Instituto de Computação UFFDepartamento de Ciência da Computação

Otton Teixeira da Silveira Filho

Conteúdo

● Alguns Conceitos sobre Linguagens

● Conceito de Algoritmo

● Pseudocódigo

● Tipos de Variáveis

● Operadores

● Estruturas de Controle

● Estruturas de Dados

● Subprogramação

Variáveis

Variáveis

São espaços reservados na memória do computador que será lido e escrito de uma forma pré-estabelecida

Variáveis

As linguagens de programação trabalham com tipos de variáveis que ocupam valores múltiplos de bytes

1 B

2 B

4 B

8 B

16 B

Variáveis

Os tipos de variáveis mais comuns em linguagens de programação são usadas para representar

Caracteres, tabela ASCII, “inteiros” curtos - 1 B

Caracteres, Unicode, Números “inteiros” - 2 B

Números “inteiros” longos e de ponto flutuante - 4 B

Números de ponto flutuante - 8 B

Números de ponto flutuante - 16 B

Tabela ASCII básica

Caracteres - 1 B

Caracteres

Observemos os caracteres da tabela ASCII de numeração até 31 decimal são caracteres não imprimíveis. O 32 é o primeiro caracter imprimível, espaço em branco simbolizado por SP

Embora um carater da tabela ASCII possa ser representado em um baite, não é incomum que a representação no computador seja feito em mais baites por questões de uso mais eficiente do processador

Há extensões da tabela ASCII que representam outros caracteres

Caracteres

Para caracteres há também o Unicode, um padrão de representação de caracteres que permite escrever caracteres específicos de várias línguas e caligrafias.

A maioria das linguagens manipulam Unicode mas não permitem seu uso como identificadores

Inteiros

Números “inteiros” - 2 B e “inteiros“ longos - 4 B

Inteiros

Embora este tipo de caracterização de inteiros seja comum, há variações em algumas linguagens

Ponto flutuante

Números de ponto flutuante - 4 B e 8 B

Variáveis

Os tipos apresentados são os mais elementares e apresentaremos outros tipos mais a frente

Python

Vamos agora centrar foco na linguagem a ser usada neste curso, ou seja, Python.

Python - Identificadores

Identificadores são uma sequência de símbolos com os quais designamos algum elemento dentro do programa em questão.

Identificadores são usados para designar variáveis, funções, classes e métodos (falaremos um pouco disto depois)

Python - Identificadores

● Um identificador em Python é constituído de caracteres do alfabeto latino, algarismos arábicos e o sinal _

● Não se começa um nome de variável por um algarismo

● Não podem ser usados os seguintes caracteres especiais:

/ \ = ! @ # $ % & ( ) [ ] ^ ~ ´

● Não são permitidos sinais diacríticos (acentos, cedilha, etc.)

Python - Identificadores

● Um identificador em Python é constituído de caracteres do alfabeto latino, algarismos arábicos e o sinal _

● Não se começa um nome de variável por um algarismo

● Não podem ser usados os seguintes caracteres especiais:

/ \ = ! @ # $ % & ( ) [ ] ^ ~ ´

● Não são permitidos sinais diacríticos (acentos, cedilha, etc.)

● Nas versões mais recentes é permitido o uso do unicode

Python - Identificadores

● Não se pode usar as seguintes palavras reservadas

and def exec if not return False

assert del finally import or try None

break elif for in pass while

class else from is print yield

continue except global lambda raise True

Identificadores

● Há sensibilidade quanto os caracteres serem minúsculos ou maiúsculos:

SOMA e soma

são considerados identificadores diferentes

Identificadores

● Exemplos válidos

a

Ab

dados

velocidade

Identificadores

● Exemplos não válidos

\a

:w

+dados

2xpto

True

Identificadores

● Exemplos válidos mas ruins

TRUE

A_c2_tcb_kmtp

amorzinho

blablabla

xpto

Python - Variáveis

Em Python as variáveis que inicialmente usaremos são dos tipos

● Número

int

float

bool

Python - Variáveis

● Sequências

Cadeia de caracteres

str

basicamente tudo em Python é caracter, a não ser que você prescreva algo em contrário

Python - Variáveis

Há outros tipos de variáveis em Python mas falaremos delas mais adiante

Variáveis

Descrição dos tipos das variáveis

str – Podemos representar sequências de caracteres convencionados na tabela ASCII, embora haja adicionais

int – Representamos um subconjunto dos inteiros com sinal. Representação com tamanho limitado pela memória disponível

float – Representamos um subconjunto dos reais com representação em 8 baites, aproximadamente 17 algarismos significativos, embora isto dependa da implementação

bool – São variáveis booleanas que só admitem dois valores True e False

Variáveis

A distinção de conteúdo entre um número de tipo int e um número de tipo float é feita pelo uso de um ponto decimal nestes últimos

Assim uma atribuição de um int se dá como

a = 123

e um no caso de float

a = 123.

● Como os computadores foram primeiramente desenvolvidos na Inglaterra e nos Estados Unidos da América, nas linguagens de computação se usa o ponto como separador decimal e não vírgula como no Brasil, Portugal, Alemanha, França, Rússia e outros países.

Operadores

Operador de atribuição

Atribuição não é igualdade

Caracter Operação Exemplo

= a ←b a=b

Operadores

Operadores aritméticos

Caracteres Tipos operados Operação Exemplo

+ int, float Soma, operador unário a+b; +b

- int, float Subtração, operador unário a-b; -b

/ float divisão a/b

// int divisão a//b

% int Resto da divisão a % b

* int, float multiplicação a * b

** float potenciação a ** b

Operadores

Observe que há uma sobrecarga de operadores. Isto significa que o mesmo símbolo é usado para operar variáveis diferentes como, por exemplo, na soma.

Veremos que existem outras sobrecargas ainda não anunciadas

Operadores

Observe que há uma sobrecarga de operadores. Isto significa que o mesmo símbolo é usado para operar variáveis diferentes como, por exemplo, na soma.

Veremos que existem outras sobrecargas ainda não anunciadas

Por enquanto só estamos falando de operadores aritméticos

Operadores

Operadores aritméticos

Se a e b int e a = 3 e b = 5

a+b resulta em 8

a-b resulta em -2

a//b resulta em 0

b//a resulta em 1

b ** a resulta em 125

Operadores

Operadores aritméticos

Se a e b int e a = 3 e b = 5

Em Python temos algo diferente na aritmética dos números int que é distinto de outras linguagens

Enquanto:

3//2 resulta em 1

-3//2 resulta em -2

A divisão inteira em Python dá como resultado o valor imediatamente menor

Operadores

Operadores aritméticos

A divisão inteira em Python dá como resultado o valor imediatamente menor

Mas porque isto?

Consistência de algumas equações

● (a + b) // b = a // b + 1

● b * (a // b) + a % b = a

Operadores

Operadores aritméticos

Se a e b float e a = 3.0 e b = 5.0

a+b resulta em 8.0

a-b resulta em -2.0

a/b resulta em 0.6

b/a resulta em 1.6666666

b ** a resulta em 125.0

Operadores

E se a e b forem de tipos diferentes?

Operadores

E se a e b forem de tipos diferentes?

● Tome cuidado com estas operações

Operadores

E se a e b forem de tipos diferentes?

● Tome cuidado com estas operações

Se estamos falando de tipos de números diferentes o melhor é você especificar o que deseja, caso possa haver ambiguidades. Por exemplo:

a = float (b)

a = int (b)

Operadores

Operadores lógicos

Caracteres Operação Exemplo

not não not b

and e a and b

or ou a or b

Operadores

Tabela verdade para o operador lógico not

not Operando Resultado

True False

False True

Operadores

Tabela verdade para o operador lógico and

and Operando 1 Operando 2 Resultado

False False False

False True False

True False False

True True True

Operadores

Tabela verdade para o operador lógico or

or Operando 1 Operando 2 Resultado

False False False

False True True

True False True

True True True

Operadores

Operadores relacionais

O resultado da comparação será verdadeiro ou falso

Caracteres Operação Exemplo

== Igual a a == b

!= Não igual a != b

< Menor que a < b

<= Menor ou igual a a<=b

> Maior que a>b

>= Maior ou igual a a>=b

Operadores

Os operadores tem prioridades

Temos os operadores já

apresentados indo do mais

prioritário, os parênteses,

até os menos prioritários,

os operadores lógicos

Operador Prioridade

() 1

** 2

+, - unários 3

*, /, %, // 4

+, - 5>, >=, < <= 6

==, != 7

= 8

and, or, not lógicos 9

Operadores

Pela tabela acima temos que qualquer operação dentro de um parênteses terá prioridade sobre qualquer operação. Isto inclui aninhamento de parênteses

Alguns “comandos“ úteis

● Leitura

n = input (“texto”)

Lê a variável desejada, em geral o teclado, emitindo um texto (opcional) como indicação do usuário

● Escrita

print(“texto”, variável1, “texto2”, variável2, ...)

Escreve as variáveis apresentadas no dispositivo padrão de saída, em geral a tela os textos são indicativos opcionais

Um exemplo de programa

Margareth Hamilton com uma

listagem do programa que ela

elaborou para o Projeto Apollo

Um exemplo de programa

E aqui ela testando um programa no interior de uma cápsula Apollo

Um exemplo simples

Atribua a duas variáveis dois números do tipo int. Some estas variáveis e atribua esta soma a outra variável. Imprima este resultado

Um exemplo simples

Atribua a duas variáveis dois números do tipo int. Some estas variáveis e atribua esta soma a outra variável. Imprima este resultado

Este exemplo será apresentado para compreendermos a estrutura básica de um programa em Python

Um exemplo simples

Atribua a duas variáveis dois números do tipo int. Some estas variáveis e atribua esta soma a outra variável. Imprima este resultado

def main():

a = 3 b = 5 c = a+b print(“soma = “, c) main()

Um exemplo simples

Atribua a duas variáveis dois números do tipo int. Some estas variáveis e atribua esta soma a outra variável. Imprima este resultado

def main():

a = 3 b = 5 c = a+b print(“soma = “, c) main()

Aqui def main(): no início e main() ao final são dispensáveis.

Um exemplo simples

Se def main(): no início e main() ao final são dispensáveis, porque eles estão aí?

● Tal situação é uma marcação da parte do programa que chamaremos de Programa Principal para diferenciá-la de outras partes que veremos quando abordarmos a subprogramação.

● Neste material eu apresentarei assim, no entanto, vocês estão livres de usar ou não.

Testes em Python

Apresentemos uma estrutura condicional do Python que pode ser usada de várias formas

i) if condição lógica: comando comando

Exemplo: … … if x < y : x = x + 1 ou if x < y : asq = x * y x = x + 1 … asq = x * y …

Testes em Python

Apresentemos uma estrutura condicional do Python que pode ser usada de várias formas

ii) if (condição lógica) : comando(s)

Exemplo: … if x> y : asq = x * y isq = x/y sisc = x ...

As operações após o sinal : e colocados em indentação serão operados. Diremos que este conjunto de operações formam um bloco

Testes em Python

Apresentemos uma estrutura condicional do Python que pode ser usada de várias formas

iii) if (condição lógica) : comando(s) else : comando(s)

Exemplo: … if x> y : asq = x * y isq = x/y else : sisc = x istis = y/x …

Testes em Python

Apresentemos uma estrutura condicional do Python que pode ser usada de várias formas

iv) if (condição lógica) : comando(s) elif (condição lógica) : comando(s) else : comando(s)

Neste caso temos um aninhamento de if e else.

● Para simplificar, o código a conjunção de else com um if é escrito elif. Isto também torna a escrita mais concisa.

Mais um exemplo simples

Leia duas variáveis do tipo int a e b. Se a for maior que b, some as duas variáveis, caso não subtraia b de a. Imprima o resultado seja qual for a operação feita

Mais um exemplo simples

Leia duas variáveis do tipo int a e b. Se a for maior que b, some as duas variáveis, caso não subtraia b de a. Imprima o resultado seja qual for a operação feita

def main(): a = int(input()) b = int(input()) if a>b : c = a + b else : c = a - b print( c) main()

Mais um exemplo simples

Leia duas variáveis do tipo int a e b. Se a for maior que b, some as duas variáveis, caso não subtraia b de a. Imprima o resultado seja qual for a operação feita

def main(): a = int(input()) b = int(input()) if a>b : c = a + b else : c = a - b print( c) main()

Este é o tipo de programa “mal educado“: se você o executar você verá que aparentemente o programa fica parado. Olhe que o programa “diz” para ler algo mas não avisa ao usuário...

E mais um exemplo...

Leia duas variáveis do tipo int a e b. Imprima primeiro o menor valor.

def main(): a = int(input(“Entre com um numero inteiro”)) b = int(input(“Entre com outro numero inteiro”)) if a > b : print (b) else : print (a) main()

E mais um exemplo...

Leia duas variáveis do tipo int a e b. Imprima primeiro o menor valor.

def main(): a = int(input(“Entre com um numero inteiro”)) b = int(input(“Entre com outro numero inteiro”)) if a > b : print (b) else : print (a) main()

Está faltando algo...

E mais um exemplo...

Leia duas variáveis do tipo int a e b. Imprima primeiro o menor valor.

def main(): a = int(input(“Entre com um numero inteiro”)) b = int(input(“Entre com outro numero inteiro”)) if a > b : print (b, a) else : print (a, b) main()

E mais um exemplo...

Leia duas variáveis do tipo int a e b. Se uma delas for negativa ache o módulo deste valor e multiplique pelo outro valor. Se não, calcule a soma. Imprima o resultado.

def main(): a = int(input(“Entre com um numero “)) b= int(input(“Entre com um numero “)) if a < b : a = -a print(a * b) elif b < 0 : b = -b print (a * b) else print(a + b)

main()

E mais um exemplo...

Leia duas variáveis do tipo int a e b. Se uma delas for negativa ache o módulo deste valor e multiplique pelo outro valor. Se não, calcule a soma. Imprima o resultado.

def main(): a = int(input(“Entre com um numero “)) b= int(input(“Entre com um numero “)) if a < b : a = -a print(a * b) elif b < 0 : b = -b print (a * b) else print(a + b)

main()

Mas é isto o que foi solicitado?

E mais um exemplo...

Leia duas variáveis do tipo int a e b. Se uma delas for negativa ache o módulo deste valor e multiplique pelo outro valor. Se não, calcule a soma. Imprima o resultado.

def main(): a = int(input(“Entre com um numero “)) b= int(input(“Entre com um numero “)) if a < 0 : a = -a print(a * b) elif b < 0 : b = -b print (a * b) else print(a + b)

main()

E mais um exemplo...

Observe que o uso do Chinês facilita perceber erros de lógica que podem surgir

E mais um exemplo...

Leia duas variáveis do tipo int a e b. Se ambas forem negativas imprima o produto das variáveis, caso não imprima a soma das mesmas.

E mais um exemplo...

Leia duas variáveis do tipo int a e b. Se ambas forem negativas imprima o produto das variáveis, caso não imprima a soma das mesmas.

def main(): a = int(input(“Entre com um numero “)) b= int(input(“Entre com um numero “)) if (a < 0) and (b < 0) : print(a * b) else : print(a + b) main()

Tipos de variáveis

Programa tipos.py

Aqui constataremos mais uma sobrecarga e o cuidado que temos que ter ao especificarmos os conteúdos das variáveis

Executemos o programa que se segue

Tipos de variáveis

Programa tipos.py

def main():

a = input("Entre com a: ") b = input("Entre com b: ")

print (a + b) print (a * 3)

a = int(a) b = int(b)

print (a + b) print (a * 3)

main()

Recommended