53
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho

Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

  • Upload
    ngonhu

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Programação de Computadores

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

Otton Teixeira da Silveira Filho

Page 2: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Conteúdo

● Alguns Conceitos sobre Linguagens

● Conceito de Algoritmo

● Pseudocódigo

● Tipos de Variáveis

● Operadores

● Estruturas de Controle

● Estruturas de Dados

● Subprogramação

Page 3: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

Variáveis

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

Page 4: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

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

1 B

2 B

4 B

8 B

16 B

Page 5: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

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

Caracteres, “inteiros” curtos - 1 B

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

Page 6: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

Caracteres - 1 B

Page 7: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

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

Page 8: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

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

Page 9: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

FORTRAN

Vamos agora centrar foco na linguagem a ser usada neste curso, ou seja, o FORTRAN nome este originário de

FOR(mula) TRAN(slation)

Page 10: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

FORTRAN

Adotaremos a convenção que todo e qualquer comando FORTRAN será escrito em minúsculas enquanto as variáveis do usuário (ou seja, você) serão escritas em minúsculas.

Page 11: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

FORTRAN

Adotaremos a convenção que todo e qualquer comando FORTRAN será escrito em minúsculas enquanto as variáveis do usuário (ou seja, você) serão escritas em minúsculas.

Isto facilita a leitura do código o que, por sua vez, ajuda a corrigir possíveis erros de digitação.

Page 12: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

Em FORTRAN as variáveis que usaremos são do tipo

LOGICAL - 1 B

CHARACTER - 1 B

INTEGER - 2 B

INTEGER*4 - 4 B

REAL ou REAL*4 - 4 B

REAL*8 - 8 B

Page 13: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

Em FORTRAN as variáveis que usaremos são do tipo

LOGICAL – Representa dois estados: .TRUE. e .FALSE.

CHARACTER – Podemos representar os caracteres convencionados na tabela ASCII, embora haja alternativa

INTEGER – Representamos um subconjunto dos inteiros com sinal [-32 768, 32767]

INTEGER*4 – Representamos um subconjunto dos inteiros com sinal [- 2 147 483 648, 2 147 483 647]

REAL ou REAL*4 – Representamos um subconjunto dos reais com aproximadamente 7 algarismos significativos [10-38, 1038]

DOUBLE PRECISION ou REAL*8 - Representamos um subconjunto dos reais com aproximadamente 16 algarismos significativos [ 10-308, 10308]

Page 14: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

● Em FORTRAN especificaremos as variáveis usando os caracteres do alfabeto A-Z mais os caracteres dos algarismos 0-9

● Uma variável não poderá começar por um numeral

● FORTRAN não distingue letras maiúsculas de minúsculas

● O nome da variável será reconhecível até 6 caracteres

● Convencionalmente variáveis que começam pelas letras i, j, k, l, m e n são do tipo inteiro mas isto pode ser alterado

Page 15: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

● Exemplos válidos

a

Ab

dados

xpto2

Page 16: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

● Exemplos não válidos

_a

:w

+dados

2xpto

a e A serão considerados idênticos

Page 17: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

Semana

SEMANA

semana

semanas

serão considerados idênticos nas versões padrão de FORTRAN

Page 18: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Variáveis

A distinção entre um número de tipo INTEGER e um número de tipo REAL é feita pelo uso de um ponto decimal nestes últimos

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

a = 123

e um no caso de REAL

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.

Page 19: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Operador de atribuição

Atribuição não é igualdade

Caracter Operação Exemplo

= a ←b a=b

Page 20: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Operadores aritméticos

Caracteres Tipos operados Operação Exemplo

+ INTEGER e REAL Soma, operador unário a+b; +b

- INTEGER e REAL Subtração, operador unário a-b; -b

/ INTEGER e REAL divisão a/b

* INTEGER e REAL multiplicação a * b

** INTEGER e REAL potenciação a ** b

Page 21: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Operadores aritméticos

Se a e b INTEGER 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

Page 22: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Operadores aritméticos

Se a e b REAL 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

Page 23: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

E se a e b forem de tipos diferentes?

Page 24: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

E se a e b forem de tipos diferentes?

● Tome cuidado com estas operações

● Tome como referência a tabela de “fraqueza“

Page 25: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Subconjunto da tabela de fraqueza

● Na operação de tipos mistos o valor mais “fraco“ é convertido ao tipo mais “forte“

● Não é toda linguagem que faz este tipo de conversão

Tipo Fraqueza relativa

INTEGER 1

INTEGER*4 2

REAL 3

REAL*8 4

Page 26: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Operadores lógicos

Caracteres Operação Exemplo

.NOT. não .NOT.b

.AND. e a.AND.b

.OR. ou a.OR.b

Page 27: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Tabela verdade para o operador lógico NÃO

NÃO Operando Resultado

V F

F V

Page 28: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Tabela verdade para o operador lógico E

E Operando 1 Operando 2 Resultado

F F F

F V F

V F F

V V V

Page 29: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Tabela verdade para o operador lógico OU

OU Operando 1 Operando 2 Resultado

F F F

F V V

V F V

V V V

Page 30: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Operadores relacionais

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

Caracteres Operação Exemplo

.EQ. Igual a a.EQ.b

.NE. Não igual a.NE.b

.LT. Menor que a.LT.b

.LE. Menor ou igual a a.LE.b

.GT. Maior que a.GT.b

.GE. Maior ou igual a a.GE.b

Page 31: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Os operadores tem prioridades

Operador Prioridade

** 1

* e / 2

+ e - 3

.EQ. 4

.NE. 4.LT. 4

.LE. 4

.GT. 4

.GE. 4

.NOT. 5

.AND. 6

.OR. 7

Page 32: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Operadores

Os operadores tem prioridades

As prioridades podem ser alteradas

pelo uso de parênteses

Operador Prioridade

** 1

* e / 2

+ e - 3

.EQ. 4

.NE. 4.LT. 4

.LE. 4

.GT. 4

.GE. 4

.NOT. 5

.AND. 6

.OR. 7

Page 33: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Alguns “comandos“ úteis

● Comando de Leitura

READ (*, *) variável1, variável2, …

Lê as variáveis apresentadas no dispositivo padrão de entrada, em geral o teclado

● Comando de escrita

WRITE( *,*) variável1, variável2, ...

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

Page 34: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Alguns “comandos“ úteis

● Comando de escrita

WRITE( *,*) ‘um texto’

Escreve literalmente o que for encontrado entre aspas simples

Page 35: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Estrutura de um programa em FORTRAN

Um programa em FORTRAN tem uma estrutura para a linha

Page 36: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Estrutura de um programa em FORTRAN

Um programa em FORTRAN tem uma estrutura para a linha

● As primeiras cinco colunas são reservadas para índices de referência para laços de repetição e formatos de impressão e indicação de comentários (C, * ou ! Na primeira coluna)

● A coluna seis é para indicar que é uma continuação da linha anterior

● Nas colunas de 7 até 72 se escrevem os comandos

● As colunas de 73 até 80 são reservadas para numeração do cartão

Page 37: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Estrutura de um programa em FORTRAN

Um cartão correspondia a uma linha do programa

Page 38: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Estrutura de um programa em FORTRAN

Estrutura geral

PROGRAM nome

declaração 1

declaração 2

comando 1

comando 2

STOP

END

Page 39: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Um exemplo de programa

Margareth Hamilton com uma

listagem do programa que ela

elaborou para o Projeto Apollo

Page 40: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Um exemplo de programa

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

Page 41: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Um exemplo simples

Some dois números do tipo INTEGER, atribua esta soma a outra variável e imprima este resultado

Page 42: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Um exemplo simples

Some dois números do tipo INTEGER, atribua esta soma a outra variável e imprima este resultado

PROGRAM soma INTEGER a, b, c a = 3 b = 5 c = a+b WRITE (*,*) c STOP END

Page 43: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Uma nota

Transgrediremos o padrão FORTRAN 77 em relação a alguns comandos

No entanto, tais transgressões são comuns à maioria dos compiladores FORTRAN 77, em particular o Force (que é o recomendado aqui no curso) que foi baseado no G77 do Projeto GNU

No ambiente Linux há o gfortran, descendente do G77 mas que também compila códigos em FORTRAN 95

Page 44: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Testes em FORTRAN

Apresentemos uma estrutura condicional do FORTRAN que pode ser usado de várias formas

i) IF (condição lógica) comando comando

Exemplo: … IF (x .LT. y) x = x + 1 asq = sin(x) ...

Page 45: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Testes em FORTRAN

Apresentemos uma estrutura condicional do FORTRAN que pode ser usado de várias formas

ii) IF (condição lógica) THEN comando(s) ENDIF

Exemplo: … IF (x .GT. y) THEN asq = sin(x) isq = cos(y) ENDIF sisc = x ...

Page 46: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Testes em FORTRAN

Apresentemos uma estrutura condicional do FORTRAN que pode ser usado de várias formas

iii) IF (condição lógica) THEN comando(s) ELSE comando(s) ENDIF

Exemplo: … IF (x .GT. y) THEN asq = sin(x) isq = cos(y) ELSE sisc = x ENDIF …

Page 47: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

Mais um exemplo simples

Leia duas variáveis do tipo INTEGER 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

PROGRAM teste1 INTEGER a, b, c READ (*,*) a, b IF (a.GT.b) c = a + b c = a-b WRITE (*,*) c STOP END

Page 48: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

E mais um exemplo...

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

PROGRAM teste2 INTEGER a, b READ(*,*) a, b IF (a.GT.b) THEN WRITE (*,*) b ELSE WRITE (*,*) a ENDIF STOP END

Page 49: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

E mais um exemplo...

Leia duas variáveis do tipo INTEGER 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.

PROGRAM teste3 INTEGER a, b READ(*,*) a, b IF (a.LT.0) THEN a = -a WRITE (*,*) a * b ELSE IF (b.LT.0) THEN b = -b WRITE (*,*) a * b ELSE WRITE(*,*) a + b ENDIF ENDIF STOP END

Page 50: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

E mais um exemplo...

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

PROGRAM teste3 INTEGER a, b READ(*,*) a, b IF (a.LT.0) THEN IF (b.LT.0) THEN WRITE (*,*) a * b ENDIF ELSE WRITE(*,*) a + b ENDIF STOP END

Page 51: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

E mais um exemplo...

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

PROGRAM teste3 INTEGER a, b READ(*,*) a, b IF (a.LT.0) THEN IF (b.LT.0) THEN WRITE (*,*) a * b ENDIF ELSE WRITE(*,*) a + b ENDIF STOP END

Mas é isto que queremos?

Page 52: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

E mais um exemplo...

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

PROGRAM teste3a INTEGER a, b READ(*,*) a, b IF (a.LT.0.AND.b.LT.0) THEN WRITE (*,*) a * b ELSE WRITE(*,*) a + b ENDIF STOP END

Page 53: Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_operadores... · REAL é feita pelo uso de um ponto decimal nestes últimos ... As colunas de 73 até

E mais um exemplo...

Observe que o uso do Chinês em sala de aula facilitou perceber os erros de lógica que surgiram neste exemplo