Introdução à Programação

Tamanho: px
Começar a partir da página:

Download "Introdução à Programação"

Transcrição

1 Instituto Superior Técnico Dep. de Engenharia Mecânica GCAR, Secção de Sistemas Introdução Title: Introdução à Programação Creator: CorelDRAW Preview: This EPS picture was not saved with a preview included in it. Comment: This EPS picture will print to a PostScript printer, but not to other types of printers. Notas de apoio à disciplina de Introdução à Programação 2001/2002 (Lic. Eng. Mecânica - 1º ano) João Miguel da Costa Sousa João Miguel C. Sousa GCAR, DEM, IST 2 Informação geral Programa 1 Bibliografia Nyhoff, L.R. and Leestma, S.C. Fortran90 for Engineers and Scientists. Prentice-Hall International, Inc Sousa, J.M.C. Acetatos das aulas teóricas 1 Avaliação de conhecimentos A nota final é dada pela seguinte formula : NF = 0.15 MT NP NE NF - Nota final MT - Mini-testes NP - Nota do projecto NE - Nota exame onde: NP, NE, NF Introdução à computação 2. Introdução ao Fortran 3. Estruturas de controlo: selecção 4. Estruturas de controlo: repetição 5. Operações de entrada/saída 6. Subprogramas: funções 7. Subprogramas: subrotinas 8. Tipos de dados estruturados: tabelas 9. Tipos de dados estruturados: fichas 10. Tipos de dados dinâmicos: ponteiros 1 Página Web: João Miguel C. Sousa GCAR, DEM, IST 3 João Miguel C. Sousa GCAR, DEM, IST 4 1

2 Introdução à Computação Máquinas de computação 1 Sistemas de computação mecanização de operações (procedimentos) armazenamento de programas e dados 1 Primeiros computadores Máquina Analítica, Charles Babbage, Ada Augusta (primeiro programador), Máq. de cartões perfurados, censo nos EUA, Herman Holleritm, fundador IBM, Hardware: componentes físicos 1 Computadores electrónicos 1ª geração - Válvulas, ENIAC ª geração - Transistores IBM 70990, ª geração - Circuitos integrados IBM system/ ª geração - VLSI, chips de silicone. PCs, workstations e supercomputadores 5ª geração - Processamento paralelo João Miguel C. Sousa GCAR, DEM, IST 5 João Miguel C. Sousa GCAR, DEM, IST 6 Programas Computador 1 Software - programas utilizados pelo computador 1 Sistema operativo - interface entre a máquina e o utilizador UNIX, AT&T s Bell Laboratories, 1971 MS-DOS, Microsoft, 1981 GUI - Apple Macintosh, Windows95 1 Linguagens de alto nível - Fortran, Pascal, BASIC, Lisp, C++, Java, etc. 1 Programa fonte - programa escrito em linguagem de alto nível 1 Programa objecto - tradução do programa de alto nível para linguagem máquina usando um compilador. 1 FORTRAN - FORmula TRANslator 1 Sistema composto por componentes com funções diferentes a trabalhar para um objectivo comum 1 Componentes principais CPU - Central Processing Unit 1 Unidade de controlo 1 ALU (Arithmetic and Logic Unit) Memórias - registos, RAM, ROM, memória virtual Memória externa - discos rígidos, disquettes Outros periféricos - Input/Output: terminais, monitores, scanners, impressoras, rato, etc. Aplicações Sistema Operativo Drivers João Miguel C. Sousa GCAR, DEM, IST 7 João Miguel C. Sousa GCAR, DEM, IST 8 2

3 Organização da memória 1 Sistema binário - 0,1 bits (binary digits) 1 byte - conjunto de 8 bits. Medida da memória em bytes. 1K = 2 10 =1024 bytes. 1 megabyte = 1024 K = bytes. 1 word - conjunto de bytes igual ao usado nos registos do CPU. 16, 32, 64 bits 1 address - endereço associado a cada word. 1 Memória guarda instruções dos programas a serem executadas 1 Linguagem assembly 1 Assembler - traduz assembly para código máquina. Programa de computador 1 Conjunto de instruções a seguir para resolver um dado problema 1 Desenvolvimento de programas Análise do problema Projecto do algoritmo Codificação do programa Execução e testes ' Exemplo: Um físico nuclear investiga o polónio. A radiactividade do polónio baixa para metade ao fim de 140 dias. Pretende-se saber a quantidade ao fim de 180 dias, sabendo que a inicial era de 10mg. 1 Análise do problema. Especificação precisa com entradas e saídas. Entradas (Input) Quantidade inicial: (10 mg) Meia-vida: (140dias) Período de tempo: (180 dias) Saídas (Output) Quantidade restante João Miguel C. Sousa GCAR, DEM, IST 9 João Miguel C. Sousa GCAR, DEM, IST 10 Algoritmo Abstracção e abordagem topo-base 2 Projecto do algoritmo. 1 Algoritmo - Sequência finita de instruções bem definidas e não ambíguas, onde cada uma pode ser executada mecanicamente, com uma quantidade de esforço finito e num intervalo de tempo finito. 1 Tem duas partes: 1 Descrição dos objectos a manipular. ' Exemplo 1 Variáveis escolhidas; QuantidadeInicial, MeiaVida, Tempo e QuantidadeRestante 2 Descrição das acções a executar nesses objectos. ' Exemplo 1 Recebe valores das variáveis 2 Calcula o valor da QuantidadeRestante para o Tempo dado. 3 Retorna e mostra a QuantidadeRestante. 1 Refinamento do algoritmo ao detalhe necessário 1 Abstracção - Descrição de uma dada entidade descrevendo apenas os aspectos relevantes para o objectivo, desprezando os pormenores. 1 Abstracção procedimental - Agrupa uma sequência de instruções e dá-lhes um dado nome (procedimento). Para executar o procedimento basta evocar o seu nome, sem considerar as acções que o constituem. 1 Abstracção de dados - Associada à utilização de objectos. Separa a forma de utilizar da constituição do próprio objecto. Um objecto pode ser decomposto em objectos mais simples. Ex: matriz, fichas. 1 Análise topo-base (top-down) - Consiste em dividir um problema complexo em sub-problemas mais simples. Estes sub-problemas têm um dado nome, e podem ser por sua vez divididos em sub-problemas mais simples até estes serem triviais e resolvidos facilmente. João Miguel C. Sousa GCAR, DEM, IST 11 João Miguel C. Sousa GCAR, DEM, IST 12 3

4 Programa: Radioactividade Algoritmo para problema de radioactividade 1 Este algortimo calcula a radioactividade de uma substância após um dado tempo, dada a quantidade inicial e o tempo de metade da vida. 1 Entradas: Uma dada QuantidadeInicial da substância radioactiva, a sua MeiaVida, e o período de Tempo em dias. 1 Saída: QuantidadeRestante. 1 Recebe QuantidadeInicial, MeiaVida e Tempo. 2 Calcula QuantidadeRestante = QuantidadeInicial * (0.5) ** (Tempo / MeiaVida) 3 Retorna a QuantidadeRestante. Programa: Radioactividade (2) 3 Codificação do programa PROGRAM Decaimento_Radioactivo Este programa calcula a radioactividade de uma substancia apos um dado tempo, dada a quantidade inicial e o tempo de metade da vida radioactiva. Variaveis usadas: QuantidadeInicial : quantidade inicial da substancia (mg) MeiaVida : tempo meia-vida da substancia (dias) Tempo : tempo para o qual a quantidade restante e calculada (dias) QuantidadeRestante : quantidade da substancia restante(mg) Entradas: QuantidadeInicial, MeiaVida, Tempo Saida: QuantidadeRestante IMPLICIT NONE REAL :: QuantidadeInicial, MeiaVida, Tempo, QuantidadeRestante Recebe valores para QuantidadeInicial, MeiaVida e Tempo. PRINT *, Escreva o valor inicial da substancia (mg), a sua PRINT *, meia-vida (dias) e o tempo para o qual se quer PRINT *, determinar a quantidade restante:" READ *, QuantidadeInicial, MeiaVida, Tempo Calcula a quantidade restante para o tempo especificado. QuantidadeRestante = QuantidadeInicial * 0.5 ** (Tempo / MeiaVida) Mostra a QuantidadeRestante. PRINT *, " QuantidadeRestante =", QuantidadeRestante, "mg END PROGRAM Decaimento_Radioactivo João Miguel C. Sousa GCAR, DEM, IST 13 João Miguel C. Sousa GCAR, DEM, IST 14 Programa: Radioactividade (3) Programação 1 Execução e testes - Verificar se o algoritmo e o programa estão correctos. 1 Fases de execução Inicializar o computador Editar o programa num editor de texto Compilar o programa - produz objecto. Link - Ligar o programa; produz executável Correr o programa 1 Exemplos: 1 Análise do problema 2 Desenvolvimento da solução - projecto do algoritmo 3 Codificação do programa 4 Execução e testes 5 Manutenção 1 Análise do problema Descrição das entradas Descrição das saídas Escreva o valor inicial da substancia (mg), a sua meia-vida (dias) e o tempo para o qual se quer determinar a quantidade restante: 2, 140, 140 QuantidadeRestante = mg Escreva o valor inicial da substancia (mg), a sua meia-vida (dias) e o tempo para o qual se quer determinar a quantidade restante: 10, 140, 180 QuantidadeRestante = mg 1 Desenvolvimento da solução Elaboração do algortimo 1 Selecção das estruturas de dados 1 Descrição das acções a efectuar Sequenciação Selecção Repetição João Miguel C. Sousa GCAR, DEM, IST 15 João Miguel C. Sousa GCAR, DEM, IST 16 4

5 Programação (cont.) Estilo de programação 1 Desenvolvimento da solução (cont.) Análise topo-base - divisão do problema em sub-problemas mais simples. Programa é dividido em módulos. 1 Codificação do programa Desenvolvimento de código em Fortran 90 1 Variáveis - devem começar por uma letra e seguidas por 30 letras, números ou underscores. 1 Tipos - tipo de valores que as variáveis podem ter. Ex: REAL, INTEGER, etc. 1 Operações -*, /, **, etc. 1 Atribuição - o sinal = atribui o valor da expressão à variável que está à esquerda. 1 Input/Output -READ, PRINT, WRITE, etc. 1 Comentários - símbolo Estilo de programação - programas devem ser correctos, legíveis e perceptíveis. 1 Programas devem ser bem estruturados Usar metodologia topo-base para desenvolver um progama para problemas complexos. Simples e claro - evitar truques de programação que aumentam pouco a velocidade de execução. 1 Documentação cuidada Documentação inicial Comentários para explicar partes importantes Identificadores com um significado claro 1 Estilo de formatação legível Espaços entre items Inserir linha entre secções de um programa Alinhamento e identação João Miguel C. Sousa GCAR, DEM, IST 17 João Miguel C. Sousa GCAR, DEM, IST 18 Execução e testes Manutenção 1 Programa deve ser correcto. 1 Sintaxe - define qual a linguagem correcta da linguagem. Erros de sintaxe são detectados pelo compilador sendo relativamente fáceis de corrigir. 1 Semântica - define o significado do código implementado. Erros de semântica- Programador não especificou correctamente a sequência de instruções. Difíceis de detectar. ' Exemplo: QuantidadeRestante = QuantidadeInicial * 0.5 ** (Tempo / MeiaVida) QuantidadeRestante = QuantidadeInicial * 0.5 * (Tempo / MeiaVida) Depuração (debugging) - técnicas que permitem minimizar os erros. 1 Modificações necessárias ao fim de um certo tempo tais como: Aumentar capacidade do programa com novas funções Melhorar o desempenho do programa Mudanças de sistema operativo, etc. ' Exemplo: Fortran PowerStation, versão Para isto é necessário efectuar a documentação externa, que contém: Documentação para utilizadores 1 descrição do que o programa faz 1 descrição do processo de utilização do programa 1 descrição da informação produzida 1 descrição das limitações do programa Documentação técnica 1 descrição das estruturas de informação e das principais variáveis e constantes 1 descrição do algoritmo 1 descrição da estrutura do programa incluindo os principais sub-programas e sua interligação João Miguel C. Sousa GCAR, DEM, IST 19 João Miguel C. Sousa GCAR, DEM, IST 20 5

6 Introdução ao Fortran Tipos de dados 1 Tipos de dados básicos integer real complex character logical Programa em Fortran cabeçalho zona de especificações zona de instruções zona de sub-programas END PROGRAMnome_de_programa 1 INTEGER cadeia de dígitos que não contém vírgulas ou pontos. & Exemplos: REAL cadeia de dígitos em forma decimal ou exponencial. & Exemplos: E E4 3374E0 João Miguel C. Sousa GCAR, DEM, IST 21 João Miguel C. Sousa GCAR, DEM, IST 22 Tipos de dados e Identificadores Variáveis 1 CHARACTER cadeia de caracteres dentro dos seguintes: 0, 9 A, Z a,,z ( ) * + - / branco : = & $ ; < > %?,. & Exemplos: PDQ123-A Miguel C. Silva Miguel C. Silva Don t Don t 1 Identificadores nomes dados aos programas, constantes, variáveis, etc. Devem começar por uma letra, e serem seguidos por quaisquer 30 digitos, letras ou _ (sublinhado, underscore). & Exemplos: Massa Velocidade Velocidade_da_luz 1 Compilador associa cada variável a um endereço em memória. Nomes das variáveis são identificadores. Declaração de variáveis especificação_do_tipo :: lista 1 especificação_do_tipo pode ser dada por: REAL :: lista INTEGER :: lista CHARACTER(LEN = n) :: lista CHARACTER(n) :: lista COMPLEX LOGICAL & Exemplos: REAL :: Massa, Velocidade, Aceleracao INTEGER :: Soma, NumeroValores CHARACTER(LEN = 15) :: Nome, Apelido CHARACTER(15) :: Apelido*20, Inicial*1 João Miguel C. Sousa GCAR, DEM, IST 23 João Miguel C. Sousa GCAR, DEM, IST 24 6

7 Variáveis (cont.) Constantes 1 Instrução IMPLICIT NONE Cancela a convenção implícita do Fortran e deve ser sempre incluída na zona de especificações. 1 Inicialização de variáveis na declaração Quando são declaradas, as variáveis em Fortran não têm um valor inicial. Inicialização na declaração de variáveis especificação_do_tipo :: lista Onde lista é dada por uma série de atribuições separadas por vírgulas do tipo: Variavel = ExpressaoConstante & Exemplo: REAL :: X = 1.0, Y = 2.5, Z = Atributo PARAMETER Constantes que aparecem repetidas vezes num programa, tal como pi. Declaração de constantes especificação_do_tipo, PARAMETER :: lista 1 Onde lista é dada por uma série de atribuições separadas por vírgulas do tipo: Identificador = ExpressaoConstante & Exemplos: INTEGER,PARAMETER :: Limite = 50 REAL,PARAMETER :: Pi = CHARACTER(2),PARAMETER :: Units = cm CHARACTER(*),PARAMETER :: Units = cm CoordenadaX = Rate * COS(Pi * Time) João Miguel C. Sousa GCAR, DEM, IST 25 João Miguel C. Sousa GCAR, DEM, IST 26 Operadores aritméticos Operadores aritméticos (cont.) 1 Exemplos: + Adição - Subtracção * Multiplicação / Divisão ** Exponenciação 9.0 / / Combinação de reais e inteiros é possível, mas não deve ser utilizada É um exemplo típico de mau estilo de programação / / / João Miguel C. Sousa GCAR, DEM, IST 27 1 Exponenciação 2.0 ** * 2.0 * (-4.0) ** 2 (-4.0) * (-4.0) ** 3.0 é avaliado como e 3.0 ln(2.0), logo: (-4.0) ** 2.0 é indefinido Devem-se assim evitar os expoentes reais, quando desnecessário 1 Regras de prioridade em operadores 1 As exponenciações são efectuadas em primeiro lugar da direita para a esquerda. 2 Multiplicações e divisões são efectuadas em seguida da esquerda para a direita. 3 Adições e subtrações são efectuadas por último também da esquerda para a direita. João Miguel C. Sousa GCAR, DEM, IST 28 7

8 Funções intrínsecas 1 O Fortran tem algumas funções prédefinidas, tal como a raíz quadrada: SQRT SQRT(argumento) A variável argumento deverá ser do tipo REAL. Se for INTEGER, dever-se-á calcular a raíz quadrada da seguinte forma: SQRT(REAL(NumeroInteiro)) 1 Outras funções: ABS, SIN, COS, EXP, INT, FLOOR, LOG, REAL, INT, etc. Instrução de atribuição variavel = expressao 1 O sinal = indica que o valor da expressao é atribuído a variavel. & Exemplo: REAL :: CoordenadaX, CoordenadaY INTEGER :: Numero, Termo CoordenadaX? CoordenadaY? Numero? Termo? CoordenadaX = 5.23 CoordenadaY = SQRT(25.0) Numero = 17 Termo = Numero / João Miguel C. Sousa GCAR, DEM, IST 29 João Miguel C. Sousa GCAR, DEM, IST 30 Atribuição (cont.) Atribuição de cadeia de caracteres CoordenadaX 5.23 CoordenadaY 5.0 Numero 17 Termo 7 CoordenadaX = 2.0 * CoordenadaX CoordenadaX CoordenadaY 5.0 Numero 17 Termo 7 1 Como se pode verificar, a memória foi actualizada com o novo valor atribuído a CoordenadaX. O valor antes atribuído perdeu-se & Exemplo: CHARACTER(5) :: String, Aumentada*10, Cortada String = alpha Aumentada = particula Cortada = temperatura 1 Atribuição pelo Fortran: String alpha Aumentada particula_ Cortada tempe Inteiro = Real / 2.0 Má programação Inteiro = INT(Real / 2.0) 1 A = B é equivalente a 1 B = A? João Miguel C. Sousa GCAR, DEM, IST 31 João Miguel C. Sousa GCAR, DEM, IST 32 8

9 Troca e somatório Operações de Entrada e Saída 1 Troca de valor entre duas variáveis INTEGER :: Valor1, Valor2, Auxiliar Auxiliar = Valor1 Valor1 = Valor2 Valor2 = Auxiliar 1 Somatório REAL :: Somatorio, Real Somatorio = Somatorio + Real 1 Fortran tem duas formas de Input/Output Formato especificado pelo programador. Formatos normalizados pré-determinados; são formatos direccionados para listas. Instruções simples de Saída Formas: PRINT *, lista_de_saida WRITE (*, *) lista_de_saida & Exemplo: WRITE (*, *) No tempo, Tempo, segundos WRITE (*, *) a velocidade vertical e, & Velocidade, m/s WRITE (*, *) e a altitude e, Altitude, m 1 Resultado obtido: No tempo segundos a velocidade vertical e m/s e a altitude e E+02 m João Miguel C. Sousa GCAR, DEM, IST 33 João Miguel C. Sousa GCAR, DEM, IST 34 Operações de Entrada Operações de Entrada (cont.) Instruções simples de Entrada Formas: READ *, lista_de_dados READ (*, *) lista_de_dados É processada uma linha de dados para cada instrução READ Variáveis são lidas até atingir o número de variáveis na lista_de_dados. Se existirem mais entradas do que na lista_de_dados, as restantes são ignoradas. As variáveis escritas devem ser constantes, e do tipo a ser atribuidas. Entradas consecutivas são separadas por uma vírgula ou um espaço em branco. & Exemplo numérico: READ (*, *) AltitudeInicial, Tempo 100.0, As variáveis do tipo carácter devem estar entre aspas se: Ultrapassam uma linha O valor contém brancos,, ou /. O carácter começa com um apóstrofo, aspas ou uma cadeia de digitos seguidos de um *. & Exemplo com caracteres: CHARACTER(8) :: Unidade_1, Unidade_2... READ (*, *) Unidade_1, Unidade_2 metro, centimetro João Miguel C. Sousa GCAR, DEM, IST 35 João Miguel C. Sousa GCAR, DEM, IST 36 9

10 Programa Projectil Resultados obtidos PROGRAM Projectil Este programa calcula a velocidade e a altitude de um projectil, dados a altitude inicial, a velocidade inicial e a aceleração da gravidade. Variaveis usadas: AltitudeInicial : altitude inicial do projectil (m) Altitude : altitude para um dado tempo (m) VelocidadeInicial : velocidade inicial do projectil(m/s) Velocidade : velocidade vertical (m/s) Aceleracao : aceleracao vertical (m/s2) Tempo : tempo desde o lancamento (s) Entradas: AltitudeInicial, VelocidadeInicial, Tempo Saidas: Altitude, Velocidade IMPLICIT NONE REAL :: AltitudeInicial, VelocidadeInicial, Tempo, & Altitude, Velocidade, Aceleracao = Recebe valores AltitudeInicial, VelocidadeInicial, Tempo WRITE (*, *) Escreva a altitude inicial(m) e a & & velocidade(m/s): READ (*, *) AltitudeInicial, VelocidadeInicial WRITE (*, *) Escreva o valor do tempo(s) pretendido: READ (*, *) Tempo Calcula a quantidade restante para o tempo especificado. Altitude = 0.5 * Aceleracao * Tempo ** 2 & + VelocidadeInicial * Tempo + AltitudeInicial Velocidade = Aceleracao * Tempo + VelocidadeInicial Escreva a altitude inicial(m) e a velocidade(m/s): Escreva o valor do tempo(s) pretendido: 4.5 No tempo segundos a velocidade vertical e de m/s e a altitude e de E+2 metros Escreva a altitude inicial(m) e a velocidade(m/s): Escreva o valor do tempo(s) pretendido: 5.0 No tempo segundos a velocidade vertical e de m/s e a altitude e de E+2 metros Escreva a altitude inicial(m) e a velocidade(m/s): Escreva o valor do tempo(s) pretendido: 0 No tempo E+00 segundos a velocidade vertical e de E+2 m/s e a altitude e de E+2 metros Mostra Velocidade e Altitude WRITE (*, *) No tempo ", Tempo, segundos WRITE (*, *) a velocidade vertical e de, Velocidade, "m/s WRITE (*, *) e a altitude e de", Altitude, "metros STOP END PROGRAM Projectil João Miguel C. Sousa GCAR, DEM, IST 37 João Miguel C. Sousa GCAR, DEM, IST 38 Entrada/Saída com ficheiros Erros Aritméticos 1 Entradas e saídas podem ser efectuadas para um ficheiro no disco & Exemplo de um ficheiro dados.dat: & Exemplo de um ficheiro result.dat: No tempo segundos a velocidade vertical e de m/s e a altitude e de E+2 metros OPEN (UNIT = numero_unidade, FILE = & nome_ficheiro, STATUS = estado) & Exemplos anteriores OPEN (UNIT = 12, FILE = dados.dat, STATUS = OLD ) OPEN (UNIT = 13, FILE = result.dat, STATUS = NEW ) READ (num_unidade, *) lista_dados WRITE (num_unidade, *) lista_resultados 1 Números reais são guardados em memória com mantissa e expoente: mantissa: 24 bits expoente: 8 bits Quantidade de números finita Nem todos os números são representados 1 Erros de overflow e underflow m e Para 8 bits no expoente os números representados estão entre e Para números pequenos este intervalo varia entre e João Miguel C. Sousa GCAR, DEM, IST 39 João Miguel C. Sousa GCAR, DEM, IST 40 10

11 Erros de arredondamento 1 Representação de números é aproximada Reais não são representados exactamente & Exemplo: equação que retorna sempre 1: PROGRAM Demo_1 a f 2 2 A + B 2AB B 2 A 2 A = = 1 2 A Estruturas de Selecção 1 Estruturação de controlo em programação Sequenciação Selecção Repetição 1 Sequenciação IMPLICIT NONE REAL :: A, B, C READ (*, *) A, B, C C = ((A + B)**2-2.0*A*B - B**2) / A**2 WRITE (*,*) C END PROGRAM Demo_1 & Resultados obtidos num dado sistema: A B C E+02 João Miguel C. Sousa GCAR, DEM, IST 41 João Miguel C. Sousa GCAR, DEM, IST 42 Exemplos simples & Exemplo 1: Índice de poluição Se índice de poluição é maior do que 50, Informar que a poluição é elevada; Caso contrário, Informar que as condições são seguras. & Exemplo 2: Tipo de fluido num tubo Se número de Reynolds menor que x 1, Escoamento é laminar; Se número de Reynolds se encotra entre x 1 e x 2, Escoamento é instável; Se número de Reynolds maior que x 2,, Escoamento é turbulento. João Miguel C. Sousa GCAR, DEM, IST 43 Expressões lógicas 1 Podem ser simples ou compostas 1 Expressões simples: constantes lógicas (.TRUE. e.false.) variáveis lógicas (a ver mais à frente) expressões relacionais: expressao_1 op_relacional expressao_2 1 Operadores relacionais Símbolo Significado < ou.lt. Menor que > ou.gt. Maior que == ou.eq. Igual a <= ou.le. Menor ou igual a >= ou.ge. Maior ou igual a /= ou.ne. Diferente de & Exemplos.TRUE. Numero == -999 B ** 2 >= 4.0 * A * C João Miguel C. Sousa GCAR, DEM, IST 44 11

12 Expressões lógicas (cont.) Estruturas de selecção 1 Avaliação de caracteres Cada carácter tem um número de ordem associado dados por um código (ASCII, EBCDIC) 1 Letras por ordem alfabética 1 Dígitos por ordem numérica caracteres_1 < caracteres_2 & Exemplos gato < vaca Junho > Julho cal > calado caløøø > calado 1 Expressões lógicas compostas Operador lógico.not..and..or..eqv..neqv. Expressão lógica.not. p p.and. q p.or. q p.eqv. q p.neqv. q Construção IF (forma simples) IF (expressao_logica) THEN sequencia_instrucoes A sequencia_instrucoes só é executada se a expressao_logica for verdadeira. & Exemplo IF (X >= 0) THEN Y = Z * X Z = SQRT(X) Instrução IF IF (expressao_logica) THEN instrucao João Miguel C. Sousa GCAR, DEM, IST 45 João Miguel C. Sousa GCAR, DEM, IST 46 Construção IF Exemplo: Equações Quadráticas Construção IF (forma geral) IF (expressao_logica) THEN sequencia_instrucoes1 ELSE sequencia_instrucoes2 A sequencia_instrucoes1 é avaliada se a expressao_logica for verdadeira. Caso contrário, são avaliadas as instruções em sequencia_instrucoes2 Algoritmo 1 Este algoritmo resolve uma equação quadrática do tipo Ax 2 +Bx+C = 0. Se o discriminante B 2-4AC é não negativo, as raízes reais Raiz_1 e Raiz_2 são calculadas. Caso contrário, é enviada uma mensagem indicando que não existem raízes reais. 1 Entradas: Os coeficientes A, B e C. 1 Saídas: As raízes da equação ou uma mensagem indicando que não existem raízes reais e o discriminante. 1 Recebe A, B e C. 2 Calcula Discriminante = B ** 2-4 A * C 3 Se Discriminante >= 0 faz o seguinte: a) Calcula Discriminante = SQRT(Discriminante). b) Calcula Raiz_1 = (- B + Discriminante)/(2*A). c) Calcula Raiz_2 = (- B - Discriminante)/(2*A). d) Mostra Raiz_1 e Raiz_2 ao utilizador. 4 Caso contrário faz o seguinte: a) Mostra o Discriminante. b) Envia mensagem de que não existem reaízes reais. João Miguel C. Sousa GCAR, DEM, IST 47 João Miguel C. Sousa GCAR, DEM, IST 48 12

13 Programa: Equações quadráticas (1) Programa: Equações quadráticas (2) PROGRAM Equacoes_Quadraticas Programa para resolver equacoes quadraticas usando a formula quadratica. Variaveis usadas: A, B, C : coeficientes da equacao quadratica Discriminante : o discriminante B**2-4.0*A*C Raiz_1, Raiz_2 : duas raizes da equacao Entradas: Coeficientes A, B, C Saidas: As duas raizes ou o discriminante negativo e uma mensagem indicando que nao ha raizes reais IMPLICIT NONE REAL :: A, B, C, Discriminante, Raiz_1, Raiz_2 Recebe os valores dos coeficientes WRITE (*, *) Escreva os coeficientes da equacao quadratica: READ (*, *) A, B, C Calcula o discriminante Discriminante = B**2-4.0*A*C Verifica se o discriminante e nao negativo. Se for calcula as raizes e mostra o resultado. Caso contrário, mostra o valor do discriminante e envia uma mensagem indicado que nao existem raizes reais IF (Discriminante >= 0) THEN Discriminante = SQRT(Discriminante) Raiz_1 = (-B + Discriminante) / (2.0 * A) Raiz_2 = (-B - Discriminante) / (2.0 * A) WRITE (*, *) "As raizes sao", Raiz_1, Raiz_2 ELSE WRITE (*, *) O discriminante tem o valor, Discriminante WRITE (*, *) Nao ha raizes reais END PROGRAM Equacoes_quadraticas 1 Exemplos de execução: Escreva os coeficientes da equacao quadratica: 1, -5, 6 As raizes sao Escreva os coeficientes da equacao quadratica: 1, 0, -4 As raizes sao Escreva os coeficientes da equacao quadratica: 1, 0, 4 O discriminante tem o valor Nao ha raizes reais João Miguel C. Sousa GCAR, DEM, IST 49 João Miguel C. Sousa GCAR, DEM, IST 50 Construção de IFs encadeados Construção IF-ELSE IF & Exemplo x, 2 f ( x) = x, 1, x 0 0 < x < 1 x 1 1 Pode ser programado com dois IF encadeados: IF (X <= 0) THEN ValorFuncao = -X ELSE IF (X < 1.0) THEN ValorFuncao = X ** 2 ELSE ValorFuncao = No caso de haver mais alternativas, existe uma estrutura própria para estes casos: Construção IF-ELSE IF IF (expressao_logica1) THEN sequencia_instrucoes_1 ELSE IF (expressao_logica2) THEN sequencia_instrucoes_2 ELSE IF (expressao_logica3) THEN sequencia_instrucoes_3... ELSE sequencia_instrucoes_n João Miguel C. Sousa GCAR, DEM, IST 51 João Miguel C. Sousa GCAR, DEM, IST 52 13

14 Exemplo: Índice de poluição Programa: Índice de poluição 1 (1) Algoritmo 1 Este algoritmo lê três níveis de poluição e calcula um índice de poluição em função desta leitura. Se o índice é inferior a um dado nível é enviada uma mensagem indicando que o ar é de boa qualidade; se está entre dois valores limites é enviada uma mensagem indicando que o ar é de qualidade razoável; e se o índice está acima do limite máximo é enviada uma mensagem indicando que o ar é de pobre qualidade. 1 Entradas: Os níveis Nivel_1, Nivel_2 e Nivel_3. 1 Constantes: Os limites LimiteInferior e Limite Superior. 1 Saídas: O Indice de poluição indicado numa mensagem. 1 Recebe Nivel_1, Nivel_2 e Nivel_3. 2 Calcula Indice = (Nivel_1 + Nivel_2 + Nivel_3) / 3. 3 Se Indice < LimiteInferior, Envia mensagem de Boa qualidade do ar Caso contrário se Indice < LimiteInferior, Envia mensagem de Qualidade de ar razoável. Caso contrário Envia mensagem de Qualidade de ar pobre. João Miguel C. Sousa GCAR, DEM, IST 53 PROGRAM Indice_Poluicao Programa que le 3 niveis de poluicao, calcula o indice de pooluicao com a sua media, e retorna a qualidade de ar Respectiva. Identificadores usados: Nivel_1, Nivel_2, Nivel_3 : 3 valores de poluicao LimiteInferior, LimiteSuperior : limites de poluicao Indice : indice medio de poluicao Entradas: Os 3 niveis de poluicao Constantes: Os limites de poluicao Saidas: O indice de poluicao e a qualidade do ar. Sera boa se indice for menor que LimiteInferior, razoavel se indice estiver entre os dois Limites e pobre caso contrario IMPLICIT NONE INTEGER :: Nivel_1, Nivel_2, Nivel_3, Indice INTEGER, PARAMETER :: LimiteInferior = 25, LimiteSuperior =50 Recebe os valores dos 3 niveis de poluicao WRITE (*, *) Escreva as tres leituras de nivel de poluicao: READ (*, *) Nivel_1, Nivel_2, Nivel_3 Calcula o indice de poluicao Indice = (Nivel_1 + Nivel_2 + Nivel_3) / 3 João Miguel C. Sousa GCAR, DEM, IST 54 Programa: Índice de poluição 1 (2) Construção CASE Classifica o indice de poluicao e retorna uma mensagem indicando a qualidade do ar. IF (Indice < LimiteInferior) THEN WRITE (*, *) Boa qualidade de ar" ELSE IF (Indice < LimiteSuperior) THEN WRITE (*, *) Ar de qualidade razoavel" ELSE WRITE (*, *) Ar de qualidade pobre" END PROGRAM Indice_Poluicao1 1 Exemplos de execução: Escreva as tres leituras de nivel de poluicao: 30, 40, 50 Ar de qualidade razoavel Escreva as tres leituras de nivel de poluicao: 50, 60, 70 Ar de qualidade pobre Escreva as tres leituras de nivel de poluicao: 20, 21, 24 Boa qualidade de ar João Miguel C. Sousa GCAR, DEM, IST 55 Construção CASE SELECT CASE (selector) CASE (lista_marcas_1) sequencia_instrucoes_1 CASE (lista_marcas_2) sequencia_instrucoes_2... CASE (lista_marcas_n) sequencia_instrucoes_n END SELECT 1 Cada lista lista_marcas_i pode ter as formas: valor valor_1 : valor_2 valor_1 : : valor_2 1 Pode incluir-se o caso CASE DEFAULT João Miguel C. Sousa GCAR, DEM, IST 56 14

15 Exemplo CASE Programa: Índice de poluição 2 (1) 1 Pretende-se informar a classe (Infantil, Iniciado, Júnior, Sénior) consoante o número associado (1, 2, 3, 4). SELECT CASE (CodigoClasse) CASE (1) WRITE (*, *) Infantil CASE (2) WRITE (*, *) Iniciado CASE (3) WRITE (*, *) Junior CASE (4) WRITE (*, *) Senior CASE DEFAULT WRITE (*, *) Codigo invalido, & CodigoClasse END SELECT PROGRAM Indice_Poluicao Programa que le 3 niveis de poluicao, calcula o indice de pooluicao com a sua media, e retorna a qualidade de ar Respectiva. Identificadores usados: Nivel_1, Nivel_2, Nivel_3 : 3 valores de poluicao LimiteInferior, LimiteSuperior : limites de poluicao Indice : indice medio de poluicao Entradas: Os 3 niveis de poluicao Constantes: Os limites de poluicao Saidas: O indice de poluicao e a qualidade do ar. Sera boa se indice for menor que LimiteInferior, razoavel se indice estiver entre os dois Limites e pobre caso contrario IMPLICIT NONE INTEGER :: Nivel_1, Nivel_2, Nivel_3, Indice INTEGER, PARAMETER :: LimiteInferior = 25, LimiteSuperior =50 Recebe os valores dos 3 niveis de poluicao WRITE (*, *) Escreva as tres leituras de nivel de poluicao: READ (*, *) Nivel_1, Nivel_2, Nivel_3 Calcula o indice de poluicao Indice = (Nivel_1 + Nivel_2 + Nivel_3) / 3 João Miguel C. Sousa GCAR, DEM, IST 57 João Miguel C. Sousa GCAR, DEM, IST 58 Programa: Índice de poluição 2 (2) Dados do tipo LOGICAL Classifica o indice de poluicao e retorna uma mensagem Indicando a qualidade do ar. SELECT CASE (Indice) CASE (:LimiteInferior - 1) WRITE (*, *) Boa qualidade de ar CASE (LimiteInferior : LimiteSuperior - 1) WRITE (*, *) Ar de qualidade razoavel" CASE (LimiteSuperior:) WRITE (*, *) Ar de qualidade pobre" END SELECT END PROGRAM Indice_Poluicao2 1 Os resultados são exactamente os mesmos. 1 Constantes do tipo lógico em Fortran:.TRUE..FALSE. 1 Especificação do tipo lógico LOGICAL :: lista variavel_logica = expressao_logica & Exemplos ExisteRaiz = Discriminante >= 0 WRITE (*, *) A, B, C,.TRUE.,.FALSE. Produz: _T_ F_F_T_F onde _ representa um espaço em branco. João Miguel C. Sousa GCAR, DEM, IST 59 João Miguel C. Sousa GCAR, DEM, IST 60 15

16 Estruturas de Repetição Ciclo DO controlado por contador 1 Ciclos (loops) Repetição controlada por contador Repetição controlada por expressão lógica Ciclo DO controlado por contador DO variavel_controlo = & valor_inicial, limite, passo sequencia_instrucoes Este ciclo implementa repetições onde o número desejado é conhecido antecipadamente. Execução efectuada da seguinte forma: 1. Atribuído valor inicial a variavel_controlo 2. A variavel_controlo é comparada com o limite onde é verificado se é: a) menor ou igual a limite para um passo positivo; b) maior ou igual a limite para um passo negativo. 3. Caso a) ou b) se verifique, o corpo do ciclo (a sequencia_instrucoes) é executado. O passo é somado à variavel_controlo e o ponto 2 é repetido. Caso contrário o ciclo termina. & Exemplo 1 DO Numero = 1, 7 WRITE (*, *) Numero, Numero ** 2 João Miguel C. Sousa GCAR, DEM, IST 61 João Miguel C. Sousa GCAR, DEM, IST 62 Exemplos ciclo DO com contador Programa: Soma de inteiros Saída do exemplo 1: & Exemplo 2 DO Numero = 7, 1, -1 WRITE (*, *) Numero, Numero ** 2 Saída do exemplo 2: PROGRAM Soma_de_Inteiros Programa que calcula a soma de um dado numero de numeros inteiros. Variaveis usadas: Numero : o ultimo inteiro a ser somado Soma : a soma Numero i : indice do ciclo DO Entrada: Numero Saidas: Numero e Soma IMPLICIT NONE INTEGER :: Numero, i, Soma = 0 WRITE (*, *) Este programa calcula a soma & &Numero. WRITE (*, *) Escreva o numero inteiro: READ (*, *) Numero DO i = 1, Numero Soma = Soma + i WRITE (*, *) , Numero, =, Soma END PROGRAM Soma_de_Inteiros & Exemplo de execução: Este programa calcula a soma Numero. Escreva o numero inteiro: = 55 João Miguel C. Sousa GCAR, DEM, IST 63 João Miguel C. Sousa GCAR, DEM, IST 64 16

17 Programa: Tabela de multiplicação Tabela de multiplicação: resultados PROGRAM Tabela_de_Multiplicacao Programa que calcula e mostra a lista do produto de dois numeros. Variaveis usadas: m, n : os dois numeros a ser multiplicados Produto : o produto de m e n Ultimo_m, Ultimo_n : ultimos valores a atribuir a m e n Entradas: Ultimo_m, Ultimo_n Saidas: Lista dos produtos m * n IMPLICIT NONE INTEGER :: m, n, Produto, Ultimo_m, Ultimo_n WRITE (*, *) Insira os ultimos valores dos dois numeros: READ (*, *) Ultimo_m, Ultimo_n WRITE (*, *) m n m * n WRITE (*, *) =========== DO m = 1, Ultimo_m DO n = 1, Ultimo_n Produto = m * n WRITE (*, *) m,, n,, Produto END PROGRAM Tabela_de_Multiplicacao & Resultado obtido: Insira os ultimos valores dos dois numeros: 4, 4 m n m * n =========== João Miguel C. Sousa GCAR, DEM, IST 65 João Miguel C. Sousa GCAR, DEM, IST 66 Construção DO-EXIT Ciclo DO-EXIT DO sequencia_instrucoes_1 IF (expressao_logica) EXIT sequencia_instrucoes_2 Tanto sequencia_instrucoes_1 como sequencia_instrucoes_2 podem ser omitidas. Número de repetições não é conhecido antecipadamente. Ciclo é repetido até a expressao_logica ser verdadeira. NOTA: Se a expressao_logica nunca for verdadeira, temos um ciclo infinito Algoritmo Exemplo: Somatório 1 Algoritmo para encontrar o Numero inteiro positivo mais pequeno para o qual a soma Numero é maior que um dado valor Limite especificado. 1 Entradas: Um valor inteiro Limite. 1 Saídas: O Numero e a Soma. 1 Recebe Limite. 2 Atribui 0 (zero) ao Numero. 3 Atribui 0 (zero) à Soma. 4 Repete o seguinte: a) Se Soma > Limite termina a repetição; caso contrário continua com o seguinte. b) Incremeta Numero de uma unidade. c) Soma Numero e Soma. 5 Retorna Numero e Soma. João Miguel C. Sousa GCAR, DEM, IST 67 João Miguel C. Sousa GCAR, DEM, IST 68 17

18 Programa: Somatório Somatório: Resultados PROGRAM Soma_de_Inteiros Programa que encontra o Numero inteiro positivo mais pequeno para o qual a soma Numero, e maior que um dado valor Limite especificado. Variaveis usadas: Numero : o numero corrente a ser adicionado Soma : a soma Numero Limite : valor limite especificado Entrada: Valor Limite inteiro Saidas: Numero e o valor da Soma IMPLICIT NONE INTEGER :: Numero, Soma, Limite Recebe o valor do Limite, e inicializa Numero e Soma WRITE (*, *) Escreva o valor que excede a soma ?: READ (*, *) Limite Numero = 0 Soma = 0 Repete ate a Soma exceder o Limite DO IF (Soma > Limite) EXIT termina repeticao caso contrario continua com o seguinte: Numero = Numero + 1 Soma = Soma + Numero & Exemplos de execução: Escreva o valor que excede a soma ?: = 15 > 10 Escreva o valor que excede a soma ?: = > Escreva o valor que excede a soma ?: = 0 > -1 Numero Soma Soma < Limite Acção 0 0.TRUE. Executa corpo do ciclo 1 1.TRUE. Executa corpo do ciclo 2 3.TRUE. Executa corpo do ciclo 3 6.TRUE. Executa corpo do ciclo 4 10.TRUE. Executa corpo do ciclo 5 15.FALSE. Termina repetição Imprime os resultados WRITE (*, *) 1 + +, Numero, =, Soma, >, Limite END PROGRAM Soma_Inteiros João Miguel C. Sousa GCAR, DEM, IST 69 João Miguel C. Sousa GCAR, DEM, IST 70 Ciclos de entrada de dados Ex: Conversão de Temperaturas 1 Teste no meio do ciclo repete o seguinte: 1 Lê um dado valor de entrada. 2 Se o fim dos dados for encontrado, termina a repetição; caso contrário é executado o seguinte: 3 Processa o valor recebido. 1 Para saber que os dados acabaram usam-se marcas (flag) ou IOSTAT=. 1 Os testes podem igualmente ser efectuados apenas no fim fo ciclo, garantindo que este é executado pelo menos uma vez. Algoritmo 1 Este algoritmo converte temperaturas de graus Celsius para a temperatura corrspondente em Fahrenheit. Os valores são processados até o utilizador indicar que não existem mais dados (temperaturas a converter). 1 Entradas: Temperaturas em Celsius. Resposta do utlizador 1 Saídas: Temperaturas em graus Fahrenheit. 1 Repetir o seguinte: 1 Lê a temperatura Celsius. 2 Calcula Fahrenheit = 1.8 * Celsius Mostra a temperatura Fahrenheit. 4 Pergunta ao utlizador se existem mais temperaturas para converter. 5 Lê a resposta do utilizador (S ou N). 5 Se Resposta = N, termina a repetição João Miguel C. Sousa GCAR, DEM, IST 71 João Miguel C. Sousa GCAR, DEM, IST 72 18

19 Prog: Conversão Temperaturas (1) Prog: Conversão Temperaturas (2) PROGRAM Conversao_de_Temperatura Programa que converte temperaturas de graus Celsius para a temperatura correspondente em Fahrenheit. Os valores são processados até o utilizador indicar que não existem mais temperaturas a converter. Variaveis usadas: Celsius : temperatura em graus Celsius Fahrenheit : temperatura em graus Fahrenheit Resposta : resposta do utilizador Entradas: Celsius, Resposta Saida: Fahrenheit IMPLICIT NONE REAL :: Celsius, Fahrenheit CHARACTER (1) :: Resposta Ciclo-questionario que processa temperaturas DO Le temperatura em graus Celsius WRITE (*, *) Escreva a temperatura em graus Celsius: READ (*, *) Celsius Calcula a temperatura em graus Fahrenheit correspondente Fahrenheit = 1.8 * Celsius + 32 Mostra valor da temperatura convertido WRITE (*, *) Celsius, graus Celsius =, & Fahrenheit, graus Fahrenheit Pergunta ao utilizador se existem mais dados WRITE (*, *) WRITE (*, *) Existem mais temperaturas a converter (S & &ou N)? READ (*, *) Resposta IF (Resposta == N ) EXIT END PROGRAM Conversao_de_Temperatura & Exemplos de execução: Escreva a temperatura em graus Celsius: e+00 graus Celsius = graus Fahrenheit Existem mais temperaturas a converter (S ou N)? Y Escreva a temperatura em graus Celsius: graus Celsius = graus Fahrenheit Existem mais temperaturas a converter (S ou N)? Gdfff Escreva a temperatura em graus Celsius: graus Celsius = E-02 graus Fahrenheit Existem mais temperaturas a converter (S ou N)? N João Miguel C. Sousa GCAR, DEM, IST 73 João Miguel C. Sousa GCAR, DEM, IST 74 Instrução CYCLE Entrada / Saída 1 Quando a condição do IF é satisfeita, mas não se pretende terminar o ciclo, como o faz a instrução EXIT, usa-se CYCLE. Esta instrução deve ser evitada & Exemplo no programa anterior: DO Le temperatura em graus Celsius WRITE (*, *) Escreva a temperatura em graus Celsius: READ (*, *) Celsius IF (Celsius < 0.0) WRITE (*, *) Temperatura deve ser maior ou & &igual a zero CYCLE Calcula a temperatura em graus Fahrenheit correspondente Fahrenheit = 1.8 * Celsius + 32 Mostra valor da temperatura convertido WRITE (*, *) Celsius, graus Celsius =, & Fahrenheit, graus Fahrenheit Pergunta ao utilizador se existem mais dados WRITE (*, *) WRITE (*, *), Existem temperaturas a converter (S ou N)? READ (*, *) Resposta IF (Resposta == N ) EXIT 1 Tipos de entrada/saída em Fortran direccionado para listas formatada Instrução PRINT PRINT especificacao_formato, lista_saida 1 Onde a especificacao _formato pode ser: 1 * (um asterisco) 2 um carácter constante ou variável, expressão ou cadeia, cujo valor especifica o formato de saída 3 o rótulo de uma instruçao FORMAT. 1 A lista_saida é uma expressão separada por vírgulas, ou é vazia. João Miguel C. Sousa GCAR, DEM, IST 75 João Miguel C. Sousa GCAR, DEM, IST 76 19

20 Formatação de saída Instrução FORMAT rotulo FORMAT (lista_descritores) 1 O rotulo é dado por um inteiro de 1 a & Exemplo: PRINT *, Numero, Temperatura PRINT (1X, I5, F8.2), Numero, Temperatura PRINT 20, Numero, Temperatura Onde 20 é um rótulo com a segunte instrução: 20 FORMAT (1X, I5, F8.2) 1 Estas instruções imprimem as variáveis Numero e Temperatura da seguinte forma: Descritores de formato 1 Caracteres de controlo Carácter de Efeito controlo 1X ou Espaçamento normal: avança para nova linha antes de imprimir 0 Espaçamento duplo: salta uma linha antes de imprimir 1 Posiona-se no início de nova página antes de imprimir + Reimprime sobre a última linha impressa Não serão assumidos como activos daqui em diante. Para os exemplos correrem em qualquer sistema, usar-se-á sempre um deles no início de cada especificação do formato de saída. 1 Saídas do tipo inteiro - Descritor I Formas: riw ou riw.m onde: I - dados do tipo inteiro w - constante inteira indicando a largura do campo r - indicador de repetição m - número mínimo de dígitos a serem impressos João Miguel C. Sousa GCAR, DEM, IST 77 João Miguel C. Sousa GCAR, DEM, IST 78 Formatação de inteiros & Exemplo 1: INTEGER :: Numero = 3, L = 5378, Kapa = (...) PRINT (1X, 2I5.2, I7, I10.7), Numero, & Numero - 3, L, Kapa PRINT (1X, 2I5.0, I7, I10), Numero, & Numero - 3, L, Kapa ou PRINT 31, Numero, Numero - 3, L, Kapa PRINT 32, Numero, Numero - 3, L, Kapa 31 FORMAT (1X, 2I5.2, I7, I10.7) 32 FORMAT (1X, 2I5.0, I7, I10) 1 produz o seguinte: & Exemplo 2: PRINT (1X, 4I3), Numero, Numero - 3, L, Kapa 1 retorna: 03 0****** Formatação de reais 1 Saídas do tipo real - Descritor F Formas: rfw.d onde: F - dados do tipo real (floating point) w - constante inteira indicando a largura do campo d - número de dígitos à direita do ponto decimal r - indicador de repetição (constante do tipo inteiro) & Exemplos: INTEGER :: Entrada = 625, Saida = -19 REAL :: A = 7.5, B =.182, C = (...) PRINT (1X, 2I4, 2F6.3, F8.3), Entrada,Saida,A,B,C ou PRINT 50, Entrada, Saida, A, B, C 50 FORMAT (1X, 2I4, 2F6.3, F8.3) 1 produz o seguinte: se (1X, 2I10, 3F10.2); João Miguel C. Sousa GCAR, DEM, IST 79 João Miguel C. Sousa GCAR, DEM, IST 80 20

21 Formatação de reais (cont.) 1 Saídas do tipo real - Descritor E Formas: rew.d ou rew.dee onde: E - dados de saída do tipo exponencial w - constante inteira indicando a largura do campo d - número digitos à direita do ponto decimal r - indicador de repetição (constante do tipo inteiro) e - número de posições usadas para o expoente & Exemplo: REAL :: A =.12345E8, B =.0237, C = 4.6E-12, & D = E12 (...) PRINT (1X, 2E13.5, E12.4, E13.4), A, B, C, D 1 produz o seguinte: E E E E Formatação de reais (concl.) 1 Saídas do tipo real - Descritores ES e EN Formas: resw.d ou resw.dee renw.d ou renw.dee, onde: ES - descritor científico (scientific) 1 mantissa entre 1 e 10 EN - descritor usado em engenharia 1 mantissa entre 1 e 1000 & Exemplos: PRINT (1X, 2ES13.5, ES12.4, ES13.4), A, B, C, D 1 produz: E E E E PRINT (1X, 2EN13.4, EN12.4, EN13.4), A, B, C, D 1 produz: E E E E João Miguel C. Sousa GCAR, DEM, IST 81 João Miguel C. Sousa GCAR, DEM, IST 82 Saídas com caracteres Formas: ra ou raw onde: A - indica o tipo carácter w - constante inteira indicando a largura do campo r - indicador de repetição & Exemplo 1: REAL :: X = 0.3, Y = 7.9 (...) PRINT (1X, X =, F6.2, Y =, F6.2), X, Y ou PRINT 70, X, Y 70 FORMAT (1X, X =, F6.2, Y =, F6.2) ou PRINT (1X, A, F6.2, A, F6.2), X =, X, Y =, Y ou PRINT 71, X =, X, Y =, Y 71 FORMAT (1X, A, F6.2, A, F6.2) 1 produz: X = 0.30 Y = & Exemplo 2: PRINT 71, Media e igual a, Media_X, & e tem a variancia, Variancia Formas: Descritores de posição X e T nx - onde n especifica o número de brancos a inserir Tc - c indica o número do espaço na linha a escrever & Exemplo: INTEGER :: Numero = 141 (...) PRINT 75, Jose S. Silva, QED, Numero 75 FORMAT (1X, A13, 3X, A3, 2X, I3) ou 75 FORMAT (1X, A13, T18, A3, 2X, I3) 1 produzem ambos: Jose S. Silva QED & Outro FORMAT que produz a mesma saída: 75 FORMAT (1X, A13, 3X, A3, I5) João Miguel C. Sousa GCAR, DEM, IST 83 João Miguel C. Sousa GCAR, DEM, IST 84 21

22 Repetição e descritor / 1 Os parêntesis, tal como r, são indicadores de repetição 1 A especificação de formato: (1X, A, F6.2, A, F6.2) pode ser escrita de forma mais compacta: (1X, 2(A, F6.2)) 1 Descritor / - é usado para imprimir em várias linhas com diferentes formatos & Exemplo: INTEGER :: N = 5173, M = 7623 REAL :: A = 617.2, B = (...) PRINT 88, Valores, N, A, M, B 88 FORMAT (1X, A, 2/, 1X, 2(I10 F10.2)) 1 produz: Valores Formatação de entrada Instrução READ READ especificacao_formato, lista_entrada 1 Onde a especificacao _formato pode ser: 1 * (um asterisco) 2 um carácter constante ou variável, expressão ou cadeia, cujo valor especifica o formato de saída 3 o rótulo de uma instruçao FORMAT. 1 A lista_entrada é uma expressão separada por vírgulas, ou é vazia. 1 No tipo de saída 2 a cadeia de caracteres é dada por: lista_descritores_formato, lista_descritores_formato, ou FORMAT (lista_descritores_formato) João Miguel C. Sousa GCAR, DEM, IST 85 João Miguel C. Sousa GCAR, DEM, IST 86 Descritores do formato de entrada 1 São essencialmente os mesmos dos de saída, com as nuances: Entradas não podem ter caracteres constantes As vírgulas não são consideradas relevantes, excepto para o tipo carácter. 1 Leitura de inteiros com riw Os brancos são ignorados na leitura, excepto quando o descritor BZ é utilizado. O número de posições w deve ser respeitado. 1 Leitura de reais com rfw.d ou E,EN,ES Números podem ser dados sem pontos decimais Ponto decimal faz parte do número 1 Leitura de caracteres com ra e raw Quando READ contém uma cadeia de caracteres, todos os caracteres no campo associado ao descritor A são lidos. Forma geral de saída Instrução WRITE WRITE (lista_controlo) lista_saida 1 Onde a lista_saida tem a mesma sintaxe da instrução PRINT. a lista_controlo deve incluir um especificador de unidade de saída e um dos items: 1 um especificador de formato, 2 uma instrução ADVANCE =, 3 outros items para processamento de ficheiros. 1 Imprime os valores na lista_saida usando as especificações dadas na lista_controlo. 1 Especificação de unidade é definida como: UNIT = especificador_unidade, ou especificador_unidade João Miguel C. Sousa GCAR, DEM, IST 87 João Miguel C. Sousa GCAR, DEM, IST 88 22

23 Instrução WRITE (concl.) 1 Especificação de formato é definido como: FMT = especificador_formato, ou especificador_formato 1 A instrução ADVANCE = tem a forma: ADVANCE = expressao_caracteres & Exemplos: WRITE (6, *) Gravidade, Peso WRITE (6, FMT = *) Gravidade, Peso WRITE (UNIT = 6, FMT = *) Gravidade, Peso WRITE (Unidade_Saida, *) Gravidade, Peso WRITE (UNIT = Unidade_saida, FMT = *) & (...) Gravidade, Peso WRITE (6, (1X, 2F10.2) ) Gravidade, Peso WRITE (6, 30) Gravidade, Peso 30 FORMAT (1X, 2F10.2) Forma geral de entrada Instrução READ generalizada READ (lista_controlo) lista_entrada a lista_entrada é uma variável, ou uma lista de variáveis separadas por vírgulas. a lista_controlo deve incluir um especificador de unidade de saída e um dos items: 1 um especificador de formato, 2 uma instrução ADVANCE =, 3 uma instrução IOSTAT = ou uma instrução END = para detectar um erro de entrada ou um EOF (fim de ficheiro), 4 outros items para processamento de ficheiros. 1 Lê os valores da lista_entrada usando as especificações dadas na lista_controlo. 1 A especificação de unidade, a especificação de formato e a instrução ADVANCE = são iguais às definidas em WRITE. João Miguel C. Sousa GCAR, DEM, IST 89 João Miguel C. Sousa GCAR, DEM, IST 90 Processamento de ficheiros Instrução OPEN Para grande quantidade de dados de entrada/saída. 1 Abertura de ficheiros Instrução OPEN OPEN (lista_abertura) a lista_abertura pode incluir: 1 um especificador de unidade do tipo inteiro, 2 instrução FILE =, fornece o nome do ficheiro a abrir, 3 instrução STATUS =, especifica o estado do ficheiro, 4 instrução ACTION =, especifica se o ficheiro é de leitura, escrita, ou ambos, 5 instrução POSITION =, posiciona o ficheiro, 6 instrução IOSTAT =, indicando se o ficheiro foi ou não aberto, etc. 1 Abre um ficheiro associado a um dado número de unidade, para operações de entrada/saída. A instrução FILE = tem a forma: 1 FILE = expressao_caracteres STATUS = expressao_caracteres, pode ser dada por: OLD NEW REPLACE ACTION = accao_entrada-saida, pode ser dada por: READ WRITE READWRITE POSITION = expressao_caracteres, pode ser dada por: REWIND APPEND ASIS IOSTAT = estado_variável João Miguel C. Sousa GCAR, DEM, IST 91 João Miguel C. Sousa GCAR, DEM, IST 92 23

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Introdução ao FORTRAN Professor Hugo de Oliveira Barbalho hbarbalho@ic.uff.br Material produzido pelo professor: Leandro Augusto Frata Fernandes (laffernandes@ic.uff.br)

Leia mais

Programação de Computadores:

Programação de Computadores: Instituto de C Programação de Computadores: Introdução ao FORTRAN Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Introdução ao FORTRAN Cinco aspectos

Leia mais

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

2.2.5 EXPRESSÕES - Regras para o cálculo de valores Métodos de Programação I Departamento de Matemática, FCTUC 30 2.2.5 EXPRESSÕES - Regras para o cálculo de valores As expressões fornecidas ao computador, quer tenham variáveis, constantes ou apenas literais,

Leia mais

Introdução ao Fortran 90. Aula 3

Introdução ao Fortran 90. Aula 3 Introdução ao Fortran 90 Aula 3 Usando vetores e matrizes Definição Uma matriz ou vetor consiste de um conjunto retangular de elementos, todos do mesmo tipo e espécie do tipo. Uma matriz ou vetor é um

Leia mais

Universidade Federal do Rio Grande Bacharelado em Matemática Aplicada Disciplina de Algoritmos e Programação de Computadores

Universidade Federal do Rio Grande Bacharelado em Matemática Aplicada Disciplina de Algoritmos e Programação de Computadores Universidade Federal do Rio Grande Bacharelado em Matemática Aplicada Disciplina de Algoritmos e Programação de Computadores Emanuel Estrada Uma variável LOGICAL pode somente

Leia mais

CFAC: Programação em FORTRAN - I

CFAC: Programação em FORTRAN - I Programação em FORTRAN - I João Manuel R. S. Tavares Bibliografia FORTRAN ANSI 77 e WATFIV-S Jorge Filho, Caetano Loiola Editora Campus Linguagem de Programação Estruturada FORTRAN 77 Maximilian Emil Hehl

Leia mais

Programação em FORTRAN - I. João Manuel R. S. Tavares

Programação em FORTRAN - I. João Manuel R. S. Tavares Programação em FORTRAN - I João Manuel R. S. Tavares Bibliografia FORTRAN ANSI 77 e WATFIV-S Jorge Filho, Caetano Loiola Editora Campus Linguagem de Programação Estruturada FORTRAN 77 Maximilian Emil Hehl

Leia mais

Apostila de Fortran. É uma pseudo-linguagem a qual oferece recursos para que o programador possa codificar e testar os seus algoritmos.

Apostila de Fortran. É uma pseudo-linguagem a qual oferece recursos para que o programador possa codificar e testar os seus algoritmos. Apostila de Fortran Fortran Uma das linguagens de programação mais velhas, o FORTRAN foi desenvolvido por uma equipe de programadores conduzida por John Backus na IBM, e foi primeiramente publicada em

Leia mais

Introdução à Computação

Introdução à Computação Universidade Federal do Maranhão Curso de Química Departamento de Informática Introdução à Computação Linguagem Fortran Profa. Msc. Maria Auxiliadora Freire maria@deinf.ufma.br 1 Lógica de Programação

Leia mais

Métodos de Programação I Ana Maria de Almeida

Métodos de Programação I Ana Maria de Almeida Métodos de Programação I 2. 13 type naipe = ( ouros, copas, paus, espadas ); var trunfo : naipe; Claro que são apenas identificadores e não existirá a mesma escolha de operadores e funções sobre eles que

Leia mais

Introdução ao fortran 90 - Aula 1

Introdução ao fortran 90 - Aula 1 Introdução ao fortran 90 - Aula 1 Departamento de Física UFPel 1954-1957: The IBM Mathematical Formula Translating System John W. Backus da IBM: Fortran I: alternativa à linguagem assembler para a programação

Leia mais

Ambiente de desenvolvimento

Ambiente de desenvolvimento Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa

Leia mais

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema ALGORITMIA Resolução De Problemas Em Informática Docente: Ana Paula Afonso 2000-2001 Resolução de Problemas 1. Analisar o problema Conhecer o bem o problema Descrever o problema: subdividir, detalhar 2.

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 3.3. Conceitos Básicos de C: Expressões, Operadores e Bibliotecas

Leia mais

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string Pascal -Cabeçalho do programa Áreas do programa -Área de declarações -Corpo do programa - label - const - type - var - procedure - function - integer - real - byte - boolean - char - string Program

Leia mais

Objectivos. Observar os tipos fornecidos pelo C++ Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes

Objectivos. Observar os tipos fornecidos pelo C++ Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes Tipos de Dados Objectivos Observar os tipos fornecidos pelo C++ São dados alguns exemplos Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes O que são Como se distinguem

Leia mais

TÉCNICO DE INFORMÁTICA - SISTEMAS

TÉCNICO DE INFORMÁTICA - SISTEMAS 782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar

Leia mais

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito

Leia mais

Programação de Computadores:

Programação de Computadores: Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Seis Camadas Problema

Leia mais

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES LINGUAGEM C: VARIÁVEIS E EXPRESSÕES Prof. André Backes LINGUAGENS DE PROGRAMAÇÃO Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve

Leia mais

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio

Leia mais

APONTAMENTOS DE PASCAL

APONTAMENTOS DE PASCAL APONTAMENTOS DE PASCAL PROGRAMAÇÃO DE COMPUTADORES 1º ANO DA LICENCIATURA EM ENGENHARIA MECÂNICA 2000 Luisa Costa Sousa 1 ÍNDICE: 1 INTRODUÇÃO 3 1.1 A estrutura do algoritmo e do respectivo programa 4

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Program João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de um programa.

Leia mais

CONCEITOS DE ALGORITMOS

CONCEITOS DE ALGORITMOS CONCEITOS DE ALGORITMOS Fundamentos da Programação de Computadores - 3ª Ed. 2012 Editora Prentice Hall ISBN 9788564574168 Ana Fernanda Gomes Ascênsio Edilene Aparecida Veneruchi de Campos Algoritmos são

Leia mais

Linguagens de Programação Aula 13

Linguagens de Programação Aula 13 Linguagens de Programação Aula 13 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Suporte para a programação orientada a objetos 2 Na aula de hoje Programação Funcional Linguagem Haskell 3 Roteiro

Leia mais

Roteiro para Aula 1 de laboratório. 1) Mostrar estrutura básica de um código em Fortran. algoritmo. program nome_da_codificacao.

Roteiro para Aula 1 de laboratório. 1) Mostrar estrutura básica de um código em Fortran. algoritmo. program nome_da_codificacao. Universidade do Estado do Rio de Janeiro Instituto de Física Armando Dias Tavares Departamento de Física Aplicada e Termodinâmica Laboratório de Física Computacional/IF Roteiro para Aula 1 de laboratório

Leia mais

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2013-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos

Leia mais

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) Ø LP Java. Estrutura de um programa em Java. Ø Conjunto de caracteres utilizado. Ø Identificadores. Ø Variáveis e constantes. Ø Tipos

Leia mais

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18 ÍNDICE MÓDULO 1 INTRODUÇÃO À ALGORITMIA 11 1.1 PROGRAMAS E ALGORITMOS 12 Fases da programação 12 Algoritmos e algoritmia 13 Algoritmos em linguagem informal, pseudocódigo e fluxogramas 14 Símbolos utilizados

Leia mais

ALGORITMOS AULA 2. Profª Amanda Gondim

ALGORITMOS AULA 2. Profª Amanda Gondim ALGORITMOS AULA 2 Profª Amanda Gondim LINEARIZAÇÃO DE EXPRESSÕES Para a construção de algoritmos que realizam cálculo matemáticos, todas as expressões aritméticas devem ser linearizadas, ou seja, colocadas

Leia mais

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Algoritmos Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Conceitos Linhas de Código de um Algoritmo ou Programa escrita do programa linha a linha, ou seja, a sintaxe do programa, podendo-se

Leia mais

MATLAB. Programação básica. Abordagem topo-base. Início. Definição das. Divisão em Sub-problemas. Divisão em Sub-problemas. Abordagem topo-base

MATLAB. Programação básica. Abordagem topo-base. Início. Definição das. Divisão em Sub-problemas. Divisão em Sub-problemas. Abordagem topo-base MATLAB Programação básica Abordagem topo-base Início Definição Definição do do problema problema Definição das entradas Definição entradas e das e saídas saídas Projecto Projecto do do algoritmo algoritmo

Leia mais

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva  UFU/FACOM GFM015 Introdução à Computação Plano de Curso e Introdução Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/ic UFU/FACOM Plano de Curso Ementa Noções básicas sobre os componentes de

Leia mais

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica

Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica Universidade Federal de Ouro Preto -UFOP Departamento de Computação - DECOM Programação de Computadores I BCC701 www.decom.ufop.br/moodle Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada

Leia mais

CAPÍTULO 2 PROGRAMAÇÃO IMPERATIVA: a Linguagem Pascal

CAPÍTULO 2 PROGRAMAÇÃO IMPERATIVA: a Linguagem Pascal Métodos de Programação I Departamento de Matemática, FCTUC 16 CAPÍTULO 2 PROGRAMAÇÃO IMPERATIVA: a Linguagem Pascal 2.1 Programação: Conceitos Fundamentais 2.1.1 Fases de construção de um programa executável

Leia mais

CES-10 Introdução à Computação. Prof. Paulo André IEC - ITA

CES-10 Introdução à Computação. Prof. Paulo André IEC - ITA CES-10 Prof. Paulo André Estrutura do Curso Conceitos Básicos de Programação Algoritmos Estruturas de Controle Comandos de Entrada e Saída e Manipulação de Arquivos Rotinas, Variáveis Estruturadas e Ponteiros

Leia mais

Introdução ao Fortran 90

Introdução ao Fortran 90 Introdução ao Fortran 90 Departamento de Física UFPel Pré-História 1943-1953: Computador com Programa Fixo ENIAC (Electronic Numerical Integrator and Computer) Início do Projeto: 1943 Projeto Completo:

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação

Leia mais

Algoritmos. Algoritmos. Linguagem de programação. Conceitos. Conceitos. Conceitos. Sintaxe do comando para incluir bibliotecas no programa:

Algoritmos. Algoritmos. Linguagem de programação. Conceitos. Conceitos. Conceitos. Sintaxe do comando para incluir bibliotecas no programa: Algoritmos Algoritmos Leandro Tonietto Unisinos ltonietto@unisinos.br http://www.inf.unisinos.br/~ltonietto/inf/pg1/algoritmosi_java.pdf Mar-2008 Possuem sintaxe flexível e são mais úteis para descrição

Leia mais

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Introdução à Programação em C Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Linguagem C Criada em 1972 para uso no LINUX; Sintaxe base para diversas outras (Java, JavaScript, PHP, C++,

Leia mais

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior ALGORITMOS E APLICAÇÕES FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior Formato Básico do Pseudocódigo Tipos de dados O VisuAlg prevê quatro tipos de dados: inteiro, real,

Leia mais

Paradigmas de Linguagens

Paradigmas de Linguagens Paradigmas de Linguagens Aula 2: Tipos de dados Professora Sheila Cáceres Tipos de dados Dados são a matéria prima da computação junto com os programas. LPs precisam manipular dados. LPS utilizam os conceitos

Leia mais

Conceitos Básicos de Programação

Conceitos Básicos de Programação BCC 201 - Introdução à Programação Conceitos Básicos de Programação Guillermo Cámara-Chávez UFOP 1/53 Conceitos básicos I Variável 2/53 Conceitos básicos II Posição de memoria, identificada através de

Leia mais

Linguagem de Programação C

Linguagem de Programação C Linguagem de Programação C Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais 13 de novembro de 2009 Introdução O que é uma linguagem

Leia mais

LÓGICA DE PROGRAMAÇÃO INTRODUÇÃO À ORGANIZAÇÃO PARA ENGENHARIA DE COMPUTADORES. Prof. Dr. Daniel Caetano

LÓGICA DE PROGRAMAÇÃO INTRODUÇÃO À ORGANIZAÇÃO PARA ENGENHARIA DE COMPUTADORES. Prof. Dr. Daniel Caetano LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2018-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dispositivos

Leia mais

Métodos Numéricos - Notas de Aula

Métodos Numéricos - Notas de Aula Métodos Numéricos - Notas de Aula Prof a Olga Regina Bellon Junho 2007 1. Representação de números reais 1.1. Introdução Cálculo Numérico X Método Numérico CI202 - Métodos Numéricos 1 1. Representação

Leia mais

Introdução à Informática

Introdução à Informática Introdução à Informática Aula 10 http://www.ic.uff.br/~bianca/introinfo/ Aula 10-05/10/2007 1 Ementa Conceitos Básicos de Computação (Hardware, Software e Internet) Softwares Aplicativos Tutorial: Word

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

Linguagem C. Eliane Pozzebon

Linguagem C. Eliane Pozzebon Linguagem C Eliane Pozzebon Material de Apoio de C Site da disciplina: http://www.univasf.edu.br/~eliane.pozzebon Slides de aulas Exercícios Dev-C++: um ambiente de programação interativo e gratuito para

Leia mais

Iteração e Pontos Fixos

Iteração e Pontos Fixos Iteração e Pontos Fixos Iteração é um dos pontos chave da programação numérica. Iterar consiste em repetir uma mesma operação diversas vezes levando a uma aproximação cada vez melhor da solução exata.

Leia mais

Sequencial Estrutura de controlo mais simples. As instruções são executadas sequencialmente.

Sequencial Estrutura de controlo mais simples. As instruções são executadas sequencialmente. Sequencial Estrutura de controlo mais simples. As instruções são executadas sequencialmente. Com base numa condição Estruturas de decisão ou selecção Com base num selector ou de escolha múltipla Com contador

Leia mais

TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke

TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE Professora: Isabela C. Damke isabeladamke@hotmail.com Linguagem de Programação Uma linguagem de programação é um conjunto de símbolos (

Leia mais

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída BCC 201 - Introdução à Programação Variáveis, Comandos de Atribuição e Comando de Entrada e Saída Guillermo Cámara-Chávez UFOP 1/1 Estrutura Básica de um programa C I < d i r e t i v a s do pré p r o c

Leia mais

Compiladores. Análise Léxica

Compiladores. Análise Léxica Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa

Leia mais

Informática I. Aula 2. Aula 2-04/09/2006 1

Informática I. Aula 2.  Aula 2-04/09/2006 1 Informática I Aula 2 http://www.ic.uff.br/~bianca/informatica1/ Aula 2-04/09/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

1.1 Etapas na solução de um problema. 1.3 Tipos de erros. 1.4 Aritmética de ponto flutuante.

1.1 Etapas na solução de um problema. 1.3 Tipos de erros. 1.4 Aritmética de ponto flutuante. 1. Computação numérica 1.1 Etapas na solução de um problema. 1.2 Notação algorítmica. 1.3 Tipos de erros. 1.4 Aritmética de ponto flutuante. Algoritmos Numéricos Cap.1: Computaç~ao numérica Ed1.0 c 2001

Leia mais

Programação Estruturada

Programação Estruturada Algoritmos e Técnicas - Estruturas de Controle de Fluxo - Programação Estruturada Programação estruturada é a técnica de construir e formular algoritmos de uma forma sistemática. Utilizada para apresentar

Leia mais

A Linguagem C. A forma de um programa em C

A Linguagem C. A forma de um programa em C A Linguagem C Criada em 1972 por D. M. Ritchie e K. Thompson. Tornou-se uma das mais importantes e populares, principalmente pela portabilidade e flexibilidade. Foi projetada para o desenvolvimento de

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4 Algoritmos e Estruturas de Dados I (DCC/003) 2013/1 Estruturas Básicas Aula Tópico 4 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If...

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If... Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: Operadores relacionais e lógicos estruturas condicionais If... Else Switch Prof. Renato Pimentel 1 Operações relacionais Operações

Leia mais

11 - Estrutura de um programa em C

11 - Estrutura de um programa em C 11 - Estrutura de um programa em C directivas para o compilador { main ( ) declarações instruções } -É possível utilizar comentários, exemplo: /* Comentário */ que não são traduzidos pelo compilador, pois

Leia mais

Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage. Introdução à Programação

Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage. Introdução à Programação Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage Introdução à Programação Construção de Algoritmos Algoritmo é uma seqüência finita de ações que descrevem como um problema

Leia mais

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah,

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah, A palavra ALGORITMO teve origem com um Matemático Persa, al Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah, ou a ciência das Equações que, em última análise suscitaram o desenvolvimento

Leia mais

Sistemas numéricos e a Representação Interna dos Dado no Computador

Sistemas numéricos e a Representação Interna dos Dado no Computador Sistemas numéricos e a Representação Interna dos Dado no Computador Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL: http://www.inf.ufsc.br~silveira Material elaborado pelo prof

Leia mais

Arquitetura de Um Computador

Arquitetura de Um Computador Arquitetura de Um Computador José Costa Introdução à Arquitetura de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2013-09-20 José Costa (DEI/IST) Arquitetura de Um

Leia mais

Aula 12- Variáveis e valores reais

Aula 12- Variáveis e valores reais Aula 12- Variáveis e valores reais Até agora todos os nossos problemas continham apenas valores inteiros e portanto variáveis do tipo int. Para resolver problemas que usam valores com parte fracionária,

Leia mais

Estruturas de Repetição

Estruturas de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas de Repetição Aula Tópico 4 (while, for) 1 Problema 10 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números

Leia mais

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Profa Rosana Braga 1º semestre de 2010 1 Arquivo-FONTE /*******************************/ /* Primeiro exemplo arq exemplo1.c

Leia mais

Linguagens de Programação Classificação

Linguagens de Programação Classificação Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda

Leia mais

Introdução ao Scilab. Comandos de entrada e saída de dados.

Introdução ao Scilab. Comandos de entrada e saída de dados. BCC701 Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação www.decom.ufop.br/bcc701 2012/01 Semana 02: Introdução ao Scilab. Comandos de entrada e saída

Leia mais

Compilador de LP3 para C3E e P3

Compilador de LP3 para C3E e P3 Compilador de LP3 para C3E e P3 Luís Gil 1 13 de Junho de 2005 1 estudante de Ciências Informáticas no Instituto Superior Técnico 1 Introdução Este relatório descreve a sintaxe e a semântica da Linguagem

Leia mais

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM. Teoria da Computação e Algoritmos Introdução à Linguagem Pascal 1 Estrutura de um programa INÍCIO FIM. PROGRAM END.

Leia mais

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved. Programação Folha Prática 5 Lab. 5 Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved. 1. Revisão. 2. Objectivos. 3. Exercícios LAB. 5 5ª semana ESTRUTURAS

Leia mais

Erros, Precisão Numérica e Ponto Flutuante

Erros, Precisão Numérica e Ponto Flutuante Capítulo 3 Erros, Precisão Numérica e Ponto Flutuante No capítulo anterior introduzimos o conceito de variável em programação. Uma variável é basicamente um nome usado para se referir a algum conteúdo

Leia mais

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis Variável, na Matemática, é um termo utilizado em substituição de outro, normalmente, desconhecido. É utilizado para representar um número ou um conjunto. No contexto da programação de computadores, uma

Leia mais

RESOLUÇÃO. Computação e Programação (2009/2010-1º Semestre) 1º Teste (11/11/2009) Nome. Número. Leia com atenção os pontos que se seguem:

RESOLUÇÃO. Computação e Programação (2009/2010-1º Semestre) 1º Teste (11/11/2009) Nome. Número. Leia com atenção os pontos que se seguem: Computação e Programação (2009/2010-1º Semestre) 1º Teste MEMec - LEAN (11/11/2009) DURAÇÃO: 1h30m RESOLUÇÃO Leia com atenção os pontos que se seguem: Comece por escrever o seu nome e número nesta folha,

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa; Linguagem Pascal Prof. Sérgio Rodrigues Introdução Algoritmo É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa; Programa é a formalização de um algoritmo

Leia mais

Material Didático Proposto

Material Didático Proposto Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas da Disciplina BCC701 CAP-BCC701 www.decom.ufop.br/bcc701 2014-1 Material

Leia mais

Programação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais

Programação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas da Disciplina BCC701 CAP-BCC701 www.decom.ufop.br/bcc701 2014-1 Material

Leia mais

Apresentação da ferramenta de programação. Comandos de entrada e saída. Prof. Alex Camargo

Apresentação da ferramenta de programação. Comandos de entrada e saída. Prof. Alex Camargo UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO Apresentação da ferramenta de programação. Comandos de entrada e saída Prof. Alex Camargo alexcamargoweb@gmail.com Linguagem C A linguagem

Leia mais

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

#include <stdio.h> Void main() { printf( Cheguei!\n); } INTRODUÇÃO A LINGUAGEM C #include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que

Leia mais

Material Didático Unificado. Variáveis correspondem a nomes para endereços de memória que são gerenciados pelo Scilab.

Material Didático Unificado. Variáveis correspondem a nomes para endereços de memória que são gerenciados pelo Scilab. Universidade Federal de Ouro Preto -UFOP Departamento de Computação - DECOM Comissão da Disciplina Programação de Computadores I CDPCI Programação de Computadores I BCC701 www.decom.ufop.br/bcc701 Material

Leia mais

Aula 4 Introdução ao C

Aula 4 Introdução ao C Considere o nosso MSC. O Processador Central, entende o conjunto de instruções, leia, imprima, atribuição e condicional e com ela resolvemos vários problemas, construindo vários algoritmos. As instruções

Leia mais

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza Algoritmos: Conceitos Fundamentais Slides de autoria de Rosely Sanches e Simone Senger de Souza DADOS E EXPRESSÕES Uso da Informação Computador manipula informações contidas em sua memória. Classificadas

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 2 Etapas para o desenvolvimento dum programa 1. Perceber o problema 2. Encontrar um procedimento algorítmico para o resolver. Estratégias:

Leia mais

Informática I. Aula 9. Aula 9-17/05/2006 1

Informática I. Aula 9.  Aula 9-17/05/2006 1 Informática I Aula 9 http://www.ic.uff.br/~bianca/informatica1/ Aula 9-17/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP. Aula 1 Introdução à Computação

Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP. Aula 1 Introdução à Computação Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP Aula 1 Introdução à Computação Eventos históricos: 1) Primeiro computador a válvulas, o Eletronic Numeric Integrator And

Leia mais

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007 ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA INTRODUÇÃO À PROGRAMAÇÃO (ENG. INFORMÁTICA) COMPUTADORES E PROGRAMAÇÃO I (ENG. ELECTROTÉCNICA) 2006/2007 TRABALHO PRÁTICO Nº

Leia mais

Conceitos Básicos Linguagem C

Conceitos Básicos Linguagem C Conceitos Básicos Linguagem C PROF. MAURÍCIO A DIAS MACDIASPAE@GMAIL.COM 2 Método Método básico para construção de algoritmos 1. Compreender completamente o problema a ser resolvido, se possível dividindo

Leia mais

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior Linguagem Pascal Prof. Antonio Almeida de Barros Junior 1 Linguagem Pascal Criada para ser uma ferramenta educacional (Década de 70); Prof. Niklaus Wirth (Universidade de Zurique); Blaise Pascal (Matemático

Leia mais

Capítulo 8. Estruturas de Controle no Nível de Sentença

Capítulo 8. Estruturas de Controle no Nível de Sentença Capítulo 8 Estruturas de Controle no Nível de Sentença Níveis de fluxo de controle Computações são realizadas por meio da avaliação de expressões e da atribuição dos valores a variáveis Para tornar a computação

Leia mais

Capítulo 2 Operadores. A função scanf()

Capítulo 2 Operadores. A função scanf() Capítulo 2 Operadores A função scanf() A função scanf() é outra das funções de E/S implementadas em todos os compiladores e nos permite ler dados formatados da entrada padrão (teclado). Sintaxe: scanf(

Leia mais

Variáveis primitivas e Controle de fluxo

Variáveis primitivas e Controle de fluxo Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/

Leia mais