Programação de Computadores - ic.uff.brotton/graduacao/programacao/Variaveis_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 em geral 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 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

Variáveis

Caracteres - 1 B

Variáveis

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

Variáveis

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

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)

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.

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.

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

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]

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

Variáveis

● Exemplos válidos

a

Ab

dados

xpto2

Variáveis

● Exemplos não válidos

_a

:w

+dados

2xpto

a e A serão considerados idênticos

Variáveis

Semana

SEMANA

semana

semanas

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

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.

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

+ 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

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

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

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

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

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

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 NÃO

NÃO Operando Resultado

V F

F V

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

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

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

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

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

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

Alguns “comandos“ úteis

● Comando de escrita

WRITE( *,*) ‘um texto’

Escreve literalmente o que for encontrado entre aspas simples

Estrutura de um programa em FORTRAN

Um programa em FORTRAN tem uma estrutura para a linha

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

Estrutura de um programa em FORTRAN

Um cartão correspondia a uma linha do programa

Estrutura de um programa em FORTRAN

Estrutura geral

PROGRAM nome

declaração 1

declaração 2

comando 1

comando 2

STOP

END

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

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

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

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

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

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 ...

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 …

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

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

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

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

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?

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

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

Recommended