Tipos de dados estruturados
|
|
- Maria das Neves Casqueira Medina
- 6 Há anos
- Visualizações:
Transcrição
1 Tipos de dados estruturados Tipos de dados intrínsecos em Fortran INTEGER REAL COMPLEX CHARACTER LOGICAL É possível definir tipos (estruturas) ou fichas. Ficha - armazena elementos de tipos diferentes Exemplo: ficha de aluno de IP contém: Nome (cadeia de caracteres) Número (inteiro) Nota exame (real) Nota projecto (real) Nota final (inteiro) João Miguel da Costa Sousa 248 Tipos estruturados Definição de tipos estruturados (fichas) Forma: TYPE nome_tipo declaracao 1 declaracao 2... declaracao k END TYPE nome_tipo O nome_tipo é um identificador em Fortran; Cada declaracao i declara um ou mais componentes da estrutura deste tipo. Objectivo: declara tipo estruturado (ficha) cujos componentes são declarados em declaracao 1,, declaracao k. Estas definições são efectuadas na zona de especificações do programa. João Miguel da Costa Sousa 249 1
2 Exemplos de fichas Exemplo 1: ficha de aluno TYPE Ficha_Aluno CHARACTER(20) :: Nome INTEGER :: Numero REAL :: Exame, Projecto INTEGER :: NotaFinal END TYPE Ficha_Aluno Aluno1 Nome Numero Exame Projecto NotaFinal Nome Numero Exame Projecto NotaFinal Aluno2 Exemplo 2: ponto no espaço 2-D TYPE Ponto2D REAL :: X, Y END TYPE Ponto2D João Miguel da Costa Sousa 250 Declaração de estruturas Declaração de estruturas Forma: TYPE(nome_tipo) :: lista_identificadores Objectivo: declara os identificadores que serão os nomes das estruturas cujos componentes são declarados na definição do tipo nome_tipo. Exemplo: estruturas dos tipos definidos no Ex. 1 e no Ex. 2 anteriores: ou: TYPE(Ficha_Aluno) :: Aluno1, Aluno2 TYPE(Ficha_Aluno), DIMENSION(50) :: Alunos TYPE(Ficha_Aluno):: Alunos(50) TYPE(Ponto2D) :: Ponto1, Ponto2 João Miguel da Costa Sousa 251 2
3 Construtores de fichas Forma: nome_tipo(lista_componentes) Exemplo 1: Ponto2D(2.5, 3.2) é um valor do tipo Ponto2D e pode ser atribuida a P: P = Ponto2D(2.5, 3.2) Declaração da constante Centro: TYPE(Ponto2D), PARAMETER :: Centro = Ponto2D(2.5, 3.2) Declaração da constante Centro: TYPE(Ponto2D), PARAMETER :: Centro = Ponto2D(2.5, 3.2)... A = 1.1 P = Ponto2D(A, 2*A) Exemplo 2: Aluno1 = Ficha_Aluno( J. Silva, 10000, 15., 17., 16) Alunos(1) = Aluno1 João Miguel da Costa Sousa 252 Acesso a componentes de fichas Componentes individuais são acedidos por variáveis qualificadas dadas por: Nome da estrutura e Nome do componente, juntos pelo selector de componente: % : Exemplos: nome_estrutura%nome_componente P%X é o primeiro componente da estrutura P do tipo Ponto2D, e P%Y é o segundo componente. Alunos(1)%Nome é o primeiro componente da estrutura Alunos(1) do tipo Ficha_Aluno, etc. Aluno1%Nome = Jose Silva READ(*, *) Aluno1%Nome PRINT(*, *) Aluno1%Nome Aluno1%Nome(1:1) = J João Miguel da Costa Sousa 253 3
4 Estruturas encadeadas Os componentes de um tipo podem ser de qualquer tipo; mesmo de outra estrutura. Exemplo: TYPE Ponto2D REAL :: X, Y END TYPE Ponto2D TYPE Circulo TYPE(Ponto2D) :: Centro REAL :: Raio END TYPE Circulo TYPE(Circulo) :: C declara C que é uma variável do tipo Circulo e tem dois componentes, onde o primeiro é do tipo Ponto2D, e o segundo do tipo REAL. C = Circulo(Ponto2D(2.5, 3.2), 10.0) representa um círculo de raio 10.0 e centrado em (2.5, 3.2). O valor de C%Centro%X é de 2.5. João Miguel da Costa Sousa 254 Processamento e atribuições E/S de estruturas tem de ser efectuada componente a componente Exemplos: leitura e escrita da variável Aluno do tipo Ficha_Aluno, e atribuição por componentes. READ(*, *) Aluno%Nome, Aluno%Numero, Aluno%Exame, & Aluno%Projecto, Aluno%NotaFinal WRITE(*, (1X, Nome:, A) ) Aluno%Nome WRITE(*, (1X, Numero:, I5) ) Aluno%Numero WRITE(*, (1X, Exame:, F6.1) ) Aluno%Exame WRITE(*, (1X, Projecto:, F6.1) ) Aluno%Projecto WRITE(*, (1X, Nota Final:, I4) ) Aluno%NotaFinal Aluno2%Nome = Aluno%Nome Aluno2%Numero = Aluno%Numero Aluno2%Exame = Aluno%Exame Aluno2%Projecto = Aluno%Projecto Aluno2%NotaFinal = Aluno%NotaFinal Atribuição: variavel_estrutura = expressao_estrutura Exemplo: Aluno2 = Aluno João Miguel da Costa Sousa 255 4
5 Estruturas como argumentos As estruturas podem ser usadas como argumentos de subprogramas. Os parâmetros actuais e formais devem ser do mesmo tipo! Exemplo: programa que dados dois pontos calcula a distância entre eles e a recta que passa pelos dois. Distância entre 2 pontos P 1 com coordenadas (x 1, y 1 ) e P 2 com coordenadas (x 2, y 2 ): 2 2 ( x2 x1) + ( y2 y1 ) Recta que passa nos pontos P 1 e P 2 : y = mx + b y2 y1 m =, x x b = y1 m x1 2 1 João Miguel da Costa Sousa 256 Programa: Pontos e linhas (1) PROGRAM Pontos_e_Linhas! ! Programa que le dois pontos P1 e P2 representados como estruturas, calcula a! distancia entre P1 e P2 e calcula a equacao da recta unindo os dois pontos.! Identificadores usados:! Ponto : ficha representada em 2 dimensoes! P1, P2 : dois pontos a ser processados! Distancia : funcao que calcula distancia entre pontos! EquacaoRecta : subrotina que calcula a equacao duma recta! Resposta : resposta do utilizador!! Entradas: Coordenadas dos pontos P1 e P2! Saidas: distancia entre 2 pontos e recta entre eles! IMPLICIT NONE TYPE Ponto REAL :: X, Y END TYPE Ponto TYPE(Ponto) :: P1, P2 CHARACTER(1) :: Resposta DO WRITE(*, (1X, A), ADVANCE = NO ) & Introduza as coordenadas dos pontos P1 e P2: READ (*, *) P1%X, P1%Y, P2%X, P2%Y WRITE(*, (1X,2(A, (,F5.2,,,F5.2, ) ), e, F5.2) ) & Distancia entre, P1%X, P1%Y, e, P2%X, P2%Y, & Distancia(P1, P2) CALL EquacaoRecta(P1, P2) João Miguel da Costa Sousa 257 5
6 Programa: Pontos e linhas (2) WRITE(*, (/ 1X, A), ADVANCE = NO ) & Mais pontos (S ou N)? READ(*, *) Resposta IF (Resposta /= S ) EXIT END DO CONTAINS!--Distancia ! Funcao que calcula a distancia entre os pontos P1 e P2!! Aceita: Estruturas P1 e P2 do tipo Ponto! Retorna: Distancia entre P1 e P2! FUNCTION Distancia(P1, P2) TYPE(Ponto), INTENT(IN) :: P1, P2 REAL :: Distancia Distancia = SQRT((P2%X - P1%X)**2 + (P2%Y - P1%Y)**2) END FUNCTION Distancia!--EquacaoRecta ! Subrotina que calcula a equacao da recta y = mx + b da! linha que passa nos pontos P1 e P2. Variaveis locais:! M : declive da recta! B : interseccao da recta com o eixo dos yy! Aceita: Estruturas P1 e P2 do tipo Ponto! Retorna: Escreve equacao da recta que passa em P1 e P2! João Miguel da Costa Sousa 258 Programa: Pontos e linhas (3) SUBROUTINE EquacaoRecta(P1, P2) TYPE(Ponto), INTENT(IN) :: P1, P2 REAL :: M, B IF (P1%X == P2%X) THEN WRITE (*, (1X, A, F5.2) ) Linha vertical x =, P1%X ELSE M = (P2%Y - P1%Y) / (P2%X - P1%X) B = P1%Y - M * P1%X WRITE (*, (1X, 2(A, F5.2)) ) Equacao da recta e y =, M, x +, B END IF END SUBROUTINE EquacaoRecta END PROGRAM Pontos_e_Linhas Exemplo de execução: > Introduza as coordenadas dos pontos P1 e P2: 0,0 1,1 > Distancia entre ( 0.00, 0.00) e ( 1.00, 1.00) e 1.41 > Equacao da recta e y = 1.00x > > Mais pontos (S ou N)? S > Introduza as coordenadas dos pontos P1 e P2: 1,1 1,5 > Distancia entre ( 1.00, 1.00) e ( 1.00, 5.00) e 4.00 > Linha vertical x = 1.00 > > Mais pontos (S ou N)? S > Introduza as coordenadas dos pontos P1 e P2: 3.1, ,7.2 > Distancia entre ( 3.10, 4.20) e (-5.30, 7.20) e 8.92 > Equacao da recta e y = -0.36x > > Mais pontos (S ou N)? N João Miguel da Costa Sousa 259 6
7 Exemplo: Tabela de utilizadores Pretende-se procurar um utilizador numa base de dados, e verificar a utilização dos seus recursos computacionais. Um dado ficheiro deverá conter o apelido, nome, número de identificação, recursos disponíveis e recursos utilizados, i.e.: Babbage Charles ADA Newton Isaac APPLE Leibnitz Gottfried CALC Fahreneit Freda FRZ Celsius Christine FRZ Tower Lean PISA VanderVan Henry VAN Yale Harvard IVY Dado um número de utilizador, pretende-se que o programa indique o seu nome, apelido e a percentagem dos recursos disponíveis já utilizados. João Miguel da Costa Sousa 260 Ex: Registo Utiliz. Computadores PROGRAM Registos_Utilizacao_Computadores! ! Este programa le numeros de identificacao do teclado,! e procura numa base de dados se esse numero existe, e! nesse caso retorna informacao sobre esse utilizador.! Os identificadores usados sao os seguintes:!! Tp_Registo_Utilizacao : nome do tipo com informacao! Nome_Ficheiro : nome do ficheiro com dados! Estado_Abertura : variavel de estado para OPEN! Estado_Leitura : variavel de estado para READ! Utilizadores : tabela do Tp_Registo_Utilizacao! Num_Utilizadores : numero de utilizadores! Numero_Procurado : numero de id a procurar! Localizacao : indice do utilizador procurado! Encontrado : indica se a id procurada foi! : ou nao encontrada! Entradas : Numero_Procurado(teclado), Utilizadores(fich.)! Saidas : Numero, nome e % de recursos computacionais! utilizados, ou uma mensagem indicando que o numero! nao foi encontrado.! IMPLICIT NONE TYPE Tp_Registo_Utilizacao CHARACTER(15) :: Nome, Apelido INTEGER :: Numero_Identificacao CHARACTER(6) :: Palavra_chave REAL :: Recursos_Usados, Limite_Recursos END TYPE Tp_Registo_Utilizacao João Miguel da Costa Sousa 261 7
8 Registo Utiliz. Computadores CHARACTER(20) :: Nome_Ficheiro TYPE(Tp_Registo_Utilizacao), DIMENSION(20) :: Utilizadores INTEGER :: Estado_Abertura, Estado_Leitura, i INTEGER :: Num_Utilizadores, Numero_Procurado, Localizacao LOGICAL :: Encontrado! Le o nome do ficheiro com os registos e abre-o WRITE(*,'(1X, A)',ADVANCE="NO") "Escreva o nome do ficheiro:" READ (*, *) Nome_Ficheiro OPEN (10, FILE = Nome_Ficheiro, STATUS = "OLD", & IOSTAT = Estado_Abertura) IF (Estado_abertura <= 0) THEN i = 0 DO i = i+1 READ(10,*,IOSTAT=Estado_Leitura) Utilizadores(i)%Apelido,& Utilizadores(i)%Nome, & Utilizadores(i)%Numero_Identificacao, & Utilizadores(i)%Palavra_chave, & Utilizadores(i)%Recursos_Usados, & Utilizadores(i)%Limite_Recursos IF (Estado_Leitura<0) EXIT! Fim do fiheiro END DO Num_Utilizadores = i-1 João Miguel da Costa Sousa 262 Registo Utiliz. Computadores DO! Procura numero identificacao WRITE(*,*) WRITE(*,'(1X,A)',ADVANCE="NO") "Escreva o numero de & &utilizador (0 para parar): " READ (*,*) Numero_Procurado IF (Numero_Procurado /= 0) THEN CALL Procura_Numero(Utilizadores(1:Num_Utilizadores), & Numero_Procurado,Encontrado,Localizacao) IF (Encontrado) THEN WRITE(*,'(1X, I5, 1X, 2A)') & Utilizadores(Localizacao)%Numero_Identificacao, & Utilizadores(Localizacao)%Nome, & Utilizadores(Localizacao)%Apelido WRITE(*,'(1X, "utilizou", F5.1, "% de recursos")') & * Utilizadores(Localizacao)%Recursos_Usados & / Utilizadores(Localizacao)%Limite_Recursos ELSE WRITE(*,*) Numero_Procurado, " nao encontrado." END IF END IF! Se utilizador indicar, acaba o ciclo. IF (Numero_Procurado == 0) EXIT END DO ELSE WRITE(*,*) "Erro na abertura de ficheiro!!" END IF João Miguel da Costa Sousa 263 8
9 Registo Utiliz. Computadores CONTAINS!-Procura_Numero (...) SUBROUTINE Procura_Numero(Utilizadores, NumProcurado, Encontrado, Local) TYPE(Tp_Registo_Utilizacao), DIMENSION(:) :: Utilizadores INTEGER,INTENT(IN) :: NumProcurado INTEGER,INTENT(OUT) :: Local LOGICAL,INTENT(OUT) :: Encontrado INTEGER :: NumUtilizadores NumUtilizadores = SIZE(Utilizadores) Local = 1 Encontrado =.FALSE. DO IF ((Local > NumUtilizadores).OR. Encontrado) EXIT IF (NumProcurado== & Utilizadores(Local)%Numero_Identificacao) THEN Encontrado =.TRUE. ELSE Local = Local + 1 END IF END DO END SUBROUTINE Procura_Numero END PROGRAM Registos_Utilizacao_Computadores João Miguel da Costa Sousa 264 Exemplo de execução > Escreva o nome do ficheiro: dados.dat > > Escreva o numero de utilizador (0 para parar): > Charles Babbage > utilizou 92.8% de recursos > > Escreva o numero de utilizador (0 para parar): > Gottfried Leibnitz > utilizou 26.7% de recursos > > Escreva o numero de utilizador (0 para parar): > Harvard Yale > utilizou 54.2% de recursos > > Escreva o numero de utilizador (0 para parar): > nao encontrado > > Escreva o numero de utilizador (0 para parar): > Isaac Newton > utilizou 65.8% de recursos > > Escreva o numero de utilizador (0 para parar): 0 João Miguel da Costa Sousa 265 9
10 Outros tipos de dados Tipos de dados parametrizados Inteiros em Fortran: 32 bits de a Reais em Fortran: 32 bits a aprox. (precisão simples) Estes limites podem ser inadequados; podem ser necessária maior ou menor precisão. Estas alterações são dadas por tipos de dados parametrizados. Tipo COMPLEX a + bi, onde a e b são números reais e i 2 = -1 Tipo CHARACTER processamento avançado de cadeias de caracteres João Miguel da Costa Sousa 266 Tipos de dados parametrizados Representação de números é aproximada Reais não são representados exactamente Exemplo: equação que retorna sempre 1: PROGRAM Demo_1 IMPLICIT NONE REAL :: A, B, C a f 2 2 A + B 2AB B 2 A 2 A = = 1 2 A READ (*, *) A, B C = ((A + B)**2-2.0*A*B - B**2) / A**2 WRITE (*,*) C END PROGRAM Demo_1 A B C e e e E e E+09 João Miguel da Costa Sousa
11 Declaração de tipos parametrizados Tipos parametrizados Forma: especificador_tipo(kind = numero-tipo) :: lista ou especificador_tipo(numero-tipo) :: lista o especificador_tipo é em geral: INTEGER REAL COMPLEX LOGICAL o numero-tipo é um inteiro positivo (constante) com valor positivo; os atributos são atributos opcionais; a lista é uma lista de identificadores. Declara que os identificadores na lista têm o tipo e o numero-tipo especificado. João Miguel da Costa Sousa 268 Tipos parametrizados (concl.) Os números-tipo dependem da máquina e do compilador. Reais mais utilizados: Exemplo: Tipo NúmeroTipo Descrição REAL 4 Valores com precisão simples com aproximadamente 7 dígitos significativos; armazanados em 32 bits REAL 8 Valores com precisão dupla com aproximadamente 14 dígitos significativos; armazanados em 64 bits REAL(KIND = 4) :: Z REAL(8), DIMENSION(5,5) :: Beta Inteiros em PowerStation: Tipo NúmeroTipo Descrição INTEGER 1 Inteiros de 8 bits: -2 7 até INTEGER 2 Inteiros de 16 bits: até INTEGER 4 Inteiros de 64 bits: até João Miguel da Costa Sousa
12 Tipo de dados COMPLEX Tipo COMPLEX a + bi, onde a e b são reais. Em Fortran: (a, b) Declarações de complexos COMPLEX :: A, B COMPLEX, DIMENSION(10,10) :: Rho Operações com complexos z = a + bi e w = c + di Soma z + w = ( a + c) + ( b + d) i Subtração z w = ( a c) + ( b d) i Produto Divisão z w = ( ac bd) + ( ad + bc) i z w = ac + bd bc ad + c + d c + d i João Miguel da Costa Sousa 270 Tipo complexo (exemplos) Exemplo de operações (C e Z variáveis complexas): C = (6.2, 2.4) Z = 4.0 * C / 2 retorna para Z o valor: (12.4, 4.8) Se for atribuída a X do tipo real: X = 4.0 * C/2, retorna o valor 12.4 Se for atribuída a N do tipo inteiro: N = 4.0 * C/2, retorna o valor 12 Funções complexas intrínsecas: ABS(z) CONJG(z) EXP(z) AIMAG(z) CMPLX(x, y) REAL(z) João Miguel da Costa Sousa
13 Entrada e saída de complexos Complexos são lidos como um par de reais ou 2 reais PROGRAM Demo_2 IMPLICIT NONE COMPLEX :: X, Y, W, Z, A READ(*, *) X, Y READ(*, (2F2.0) ) W WRITE(*, *) X, Y WRITE(*, *) W WRITE(*, 10) X, Y, W 10 FORMAT(1X, F5.2, +, F8.2, I ) Z = (X + Y) / (1.0, 2.2) A = X * Y WRITE(*, 10) Z, A END PROGRAM Demo_2 Entrada de dados: > (3,4), (0.75, -2.23) > 5 7 Saída produzida: > ( , ) ( , ) > ( , ) > I > I > I > I > I João Miguel da Costa Sousa 272 O tipo CHARACTER Cadeia de caracteres vazia ou Compilador associa cada variável a um endereço em memória. Nomes das variáveis são identificadores. ou Declaração de cadeias de caracteres CHARACTER(LEN = n) :: lista CHARACTER(n) :: lista Exemplo: CHARACTER(LEN = 15) :: Nome, Apelido CHARACTER(15) :: Nome Em subprogramas os argumentos formais podem ser prédefinidos: CHARACTER(*) :: lista_identificadores João Miguel da Costa Sousa
14 Operacões com caracteres Caracteres podem ser parametrizados: CHARACTER(LEN=n, KIND=num_tipo) :: lista CHARACTER(n, KIND=num_tipo) :: lista CHARACTER(n, num_tipo) :: lista CHARACTER(KIND=num_tipo, LEN=n) :: lista CHARACTER(KIND=num_tipo) :: lista onde o num_tipo especifica o esquema de codificação (ASCII, EBCDIC, etc.) e/ou o tipo de caracteres (Inglês, Português, Russo, etc.) Concatenação de caracteres: operador binário dado por // Exemplo 1 centi // metros produz: centimetros Exemplo 2 CHARACTER(7) :: UnidadeQuadrada UnidadeQuadrada = quadrados centi // metros // UnidadeQuadrada produz: centimetros quadrados João Miguel da Costa Sousa 274 Subcadeias de caracteres Exemplo: subcadeia dos caracteres 6 a 10 de Unidade = centimetros é dada por: Unidade(6:10) e tem o valor: metro As primeiras e últimas posições não necessitam de ser especificadas. Exemplo: CHARACTER(15) :: Curso, Nome*20 Curso = Engenharia Curso(:3) tem o valor Eng e Curso(8:) tem o valor ria, onde _ corresponde a um espaço em branco. A primeira posição deve ser positiva, e a última >= que a primeira, mas não maior que o comprimento da cadeia de caracteres. Podem ser efectuadas atribuições a sub-cadeias, modificando parte de uma cadeia de caracteres. João Miguel da Costa Sousa
15 Funções com caracteres Funções de cadeias para cadeias: ADJUSTL(cad_caracteres) ADJUSTR(cad_caracteres) REPEAT(cad_caracteres, n) TRIM(cad_caracteres) Exemplo: CHARACTER(10) :: Cadeia = ABCDE A saída produzida por: WRITE(*, *) ***, Cadeia, *** WRITE(*, *) ***, ADJUSTL(Cadeia), *** WRITE(*, *) ***, ADJUSTR(Cadeia), *** WRITE(*, *) ***, TRIM(Cadeia), *** WRITE(*, *) ***, REPEAT(Cadeia,3), *** é a seguinte: >*** ABCDE *** >***ABCDE *** >*** ABCDE*** >*** ABCDE*** >*** ABCDE *** >*** ABCDE ABCDE ABCDE *** João Miguel da Costa Sousa 276 Funções com caracteres (cont.) Funções de comprimento: LEN(cad_caracteres) LEN_TRIM(cad_caracteres) Exemplo: CHARACTER(10) :: Cadeia = ABCDE O valor retornado por: LEN(Cadeia) retorna 10, e LEN_TRIM(Cadeia) retorna 6. Funções de procura: INDEX(cadeia 1, cadeia 2 ) ou INDEX(cadeia 1, cadeia 2, atras) SCAN(cadeia 1, cadeia 2 ) ou SCAN(cadeia 1, cadeia 2, atras) VERIFY(cadeia 1, cadeia 2 ) ou VERIFY(cadeia 1, cadeia 2, atras) João Miguel da Costa Sousa
16 Exemplo com funções de procura Exemplo: CHARACTER(25) :: Unidades = centimetros e metros A saída produzida por: WRITE(*, *) INDEX(Unidades, metros ) WRITE(*, *) INDEX(Unidades, metros,.false.) WRITE(*, *) INDEX(Unidades, metros,.true.) WRITE(*, *) INDEX(Unidades, cents ) WRITE(*, *) SCAN( kilometro, Unidades) WRITE(*, *) SCAN( kilometro, Unidades,.FALSE.) WRITE(*, *) SCAN( kilometro, Unidades,.TRUE.) WRITE(*, *) SCAN( flora, Unidades) WRITE(*, *) VERIFY( kilometro, Unidades) WRITE(*, *) VERIFY( kilometro, Unidades,.FALSE.) WRITE(*, *) VERIFY( kilometro, Unidades,.TRUE.) WRITE(*, *) VERIFY( tenis, Unidades) é a seguinte: > 6 > 6 > 15 > 0 > 2 > 2 > 9 > 3 > 1 > 1 > 3 > 0 João Miguel da Costa Sousa 278 Gestão de memória em tabelas Instruções ALLOCATE e DEALLOCATE utilizam memória quando o programa corre. permitem utilizar apenas a memória necessária evitam desperdício de memória eficientes para tabelas com tamanho constante Para dados de diferentes tamanhos, quando se varia o tamanho da tabela efectuam-se as seguintes operações: Uma nova tabela é alocada. Os elementos da tabela antiga são copiados para a tabela nova. Os novos elementos são introduzidos na nova tabela. A tabela antiga é apagada da memória. Estas operações demoram bastante tempo! João Miguel da Costa Sousa
17 Ponteiros As tabelas (mesmo alocadas) são estruturas de dados estáticas. Estruturas de dados dinâmicas permitem expandir ou contrair a estrutura durante a execução. É constituída por uma colecção de elementos, chamados nós ligados entre si. Esta ligação associa a cada nó um ponteiro para o próximo nó da estrutura. Exige a necessidade de alocar e aceder à memória durante a execução dum programa. Variáveis que apontam para essas localizações em memória: ponteiros. Exemplo: Lista ligada Lista Dados Prox Dados Prox Dados Prox XXX YYY ZZZ João Miguel da Costa Sousa 280 Listas implementadas em tabelas Tabelas podem implementar listas. São ineficientes para: tamanhos variáveis durante a execução, inserir e retirar elementos na lista. Cada vez que elementos novos são inseri-dos dever-se-á mover elementos na tabela. Exemplo 1: Inserir 42 na lista 23, 25, 34, 48, 61, 89. Os elementos 4 a 6 devem ser deslocados para as posições 5 a 7, para o novo elemento ser introduzido em 4: ?...? ? Exemplo 2: Retirar 25 da lista: ? ?...? João Miguel da Costa Sousa
18 Listas ligadas Contém uma colecção de elementos chamados nós, que contêm: 1. um elemento da lista, 2. um ponteiro para o nó seguinte. O acesso ao nó inicial (1º elemento da lista) deve ser mantido. Exemplo: lista com nomes Silva, Fonseca e Castro Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro A variável Lista aponta para o primeiro nó da lista, e o Prox aponta para o próximo nó. O símbolo terra não aponta para nada, indicando assim o fim da lista (ponteiro vazio ou null pointer). João Miguel da Costa Sousa 282 Inserção de elementos em listas Nas listas ligadas não é necessário mover elementos quando se altera a lista. Para inserir um novo elemento na lista: 1. Criar um novo nó. Guardar o valor a inserir no elemento do nó (pressupõe-se que é possível obter nós duma dada fonte, e que estão nós disponíveis) 2. Ligar o novo nó à lista. Podem existir 2 casos: o nó é acrescentado no início da lista; o nó é inserido no meio da lista. João Miguel da Costa Sousa
19 Exemplo: inserção em listas Exemplo 1: inserir o nome Reis no início da lista Criar um nó com o nome Reis. O ponteiro NovoPont aponta para este nó. Lista NovoPont Dados Reis Prox Dados Prox Dados Prox Dados Prox Silva Fonseca Castro O nó é inserido na lista, com a sua ligação a apontar para o primeiro nó na lista; o Prox de NovoPont aponta para o mesmo que Lista: NovoPont Dados Reis Prox Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro Ao ponteiro Lista é atribuído NovoPont: NovoPont Reis Dados Prox Dados Prox Dados Prox Lista Silva Fonseca Castro João Miguel da Costa Sousa 284 Exemplo 2: inserção em listas Exemplo 2: inserir nome Ramos após Fonseca, onde PontPred é o ponteiro predecessor: PontPred Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro Criar um nó com o nome Ramos (como anteriormente): NovoPont Dados Ramos Prox PontPred Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro João Miguel da Costa Sousa
20 Exemplo 2: inserção em listas Prox de NovoPont igual a Prox de PontPred NovoPont Dados Prox Ramos PontPred Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro Prox de PontPred igual a NovoPont: NovoPont Dados Prox Ramos PontPred Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro João Miguel da Costa Sousa 286 Apagar elementos de listas Tal como na inserção existem 2 casos: 1. apagar o primeiro elemento da lista; 2. apagar um elemento com um predecessor. Exemplo: para apagar o nome Silva no início da lista basta passar Lista para o segundo nó. Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro Atribui a PontAux o ponteiro Lista. PontAux Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro João Miguel da Costa Sousa
21 Apagar elementos de listas Atribui a Lista o Prox de PontAux. PontAux Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro Ponteiro PontAux enviado para pilha de livres. Lista PontAux Dados Prox Fonseca Dados Castro Prox João Miguel da Costa Sousa 288 Apagar elementos de listas Exemplo 2: apagar o nome Fonseca da lista inicial. Atribui ao ponteiro PontAux o ponteiro Prox de PontPred. PontPred Lista PontAux Dados Prox Dados Prox Dados Prox Silva Fonseca Castro Atribui a Prox de PontPred o ponteiro Prox de PontAux. PontPred Lista Dados Prox Dados Prox Dados Prox Silva Fonseca Castro Coloca o ponteiro PontAux na pilha de ponteiros disponíveis. PontPred Lista PontAux Dados Prox Silva PontAux João Miguel da Costa Sousa 289 Dados Castro Prox 21
22 Ponteiros em Fortran Variáveis do tipo ponteiro Forma: tipo, lista-atributos, POINTER :: var_ponteiro Declara a variável var_ponteiro, usada para aceder a localizações em memória. A variável tem um dado tipo onde os atributos podem ser guardados. Exemplo 1: Um ponteiro para cadeias de caracteres é definido como: CHARACTER(10), POINTER :: PontCadeia Esta variável só pode ser utilizada para aceder a localizações em memória com 10 caracteres. Exemplo 2 TYPE :: Info_Inventario INTEGER :: Numero REAL :: Preco END TYPE Info_Inventario TYPE(Info_Inventario), POINTER :: PontInventario João Miguel da Costa Sousa 290 Criação de ponteiros Instrução ALLOCATE Forma: ALLOCATE(ponteiro) Exemplo: ALLOCATE(PontCadeia) O ponteiro PontCadeia aponta para uma localização em memória, chamada alvo, com uma cadeia de caracteres (e.g. computador ) PontCadeia Computador Estados de associação de ponteiros: 1. Indefinido - estado inicial após declaração. 2. Associado - quando aponta para um alvo. ponteiro? 3. Vazio - null pointer; não aponta para nada. ponteiro João Miguel da Costa Sousa
23 Associação de ponteiros Função de teste ASSOCIATED ASSOCIATED(ponteiro) Retorna.TRUE. se o ponteiro está associado e.false. caso contrário. O ponteiro não pode estar indefinido. Comando NULLIFY NULLIFY(ponteiro) Torna o ponteiro vazio. A localização em memória não é acessível. Programa dispõe de uma pilha de memória disponível. Instrução ALLOCATE executa: 1. Retira um bloco de memória livre da pilha. 2. Aloca esse espaço ao programa executável. Pilha de memória é limitada: ALLOCATE(lista, STAT = variavel-inteira) DEALLOCATE(lista, STAT = variavel-inteira) João Miguel da Costa Sousa 292 Atribuição de ponteiros Forma: ponteiro 1 => ponteiro 2 O ponteiro 1 tem a mesma associação do ponteiro 2. O valor anterior de ponteiro 1 não é acessível, a não ser que estivesse outro ponteiro a apontar para a mesma localização. Antes da atribuição: ponteiro1 ponteiro2 ponteiro3 Após a atribuição ponteiro 1 => ponteiro 2 : ponteiro1 ponteiro3 Exemplo: ponteiro2 CHARACTER(8), POINTER :: PontCadeia, PontTemp onde PontTemp aponta para software e PontCadeia aponta para hardware. Qual o resultado da instrução: PontTemp => PontCadeia? João Miguel da Costa Sousa
24 Expressões com ponteiros Regra básica: Quando um ponteiro associado aparece numa expressão, é utilizado directamente o valor para o qual está a apontar. Exemplo: CHARACTER(10), POINTER :: PontCadeia CHARACTER(10) :: Produto = Computador PontCadeia = Produto e PontCadeia = Computador retornam: PontCadeia Computador WRITE(*, *) PontCadeia e IF PontCadeia(2:4) == omp THEN WRITE(*, *) PontCadeia END IF imprimem: > Computador PontTemp = PontCadeia PontCadeia PontTemp Computador Computador João Miguel da Costa Sousa 294 Implementação de listas ligadas ListaNumeros Dados Prox Dados Prox Dados Prox é definida como: TYPE Lista_Nos INTEGER :: Dados TYPE(Lista_Nos), POINTER :: Proximo END TYPE Lista_Nos Construção de uma lista ligada TYPE(Lista_Nos), POINTER :: ListaNumeros, PontTemp ALLOCATE(PontTemp) PontTemp%Dados = 1550 PontTemp%Proximo => ListaNumeros ListaNumeros => PontTemp Para construir toda a lista, a primeira instrução seria: NULLIFY(ListaNumeros) João Miguel da Costa Sousa
25 Listas ligadas Percorrer uma lista ligada, escrevendo todos os seus elementos PontActual => ListaNumeros DO IF (.NOT. ASSOCIATED(PontActual)) EXIT! Fim da lista WRITE (*, *) PontActual%Dados PontActual => PontActual%Proximo END DO Inserir elemento no meio da lista ALLOCATE(PontTemp, STAT = EstadoAlocacao) PontTemp%Dados = ElementoNovo Inserir elemento entre PontPred e PontActual: PontTemp%Proximo => PontActual PontPred%Proximo => PontTemp João Miguel da Costa Sousa 296 Apagar elementos em listas ligadas Apagar elementos na lista Apagar elementos no início da lista PontActual => Lista Lista => PontActual%Proximo DEALLOCATE(PontActual) Apagar o elemento apontado porpontactual precedido porpontpred meio da lista PontPred%Proximo => PontActual%Proximo DEALLOCATE(PontActual) João Miguel da Costa Sousa
26 Aplicação: Endereços Internet Protocolos de comunicação TCP (Transmission Control Protocol) IP (Internet Protocol) TCP/IP identification endereços únicos na Internet. Exemplo: dem.ist.utl.pt endereço do Dep. Eng. Mecânica do IST Os 4 campos correspondem a: host.subdomain.subdomain.rootdomain Estes endereços são dados por inteiros: João Miguel da Costa Sousa 298 Problema: Acesso à Internet Uma porta de acesso é um sistema de ligação entre duas redes de computadores. Exemplo: ligação de uma Universidade com a Internet. Cada vez que um estudante acede à WWW o seu endereço TCP/IP é guardado num ficheiro. Problema: O administrador do sistema pretende verificar periodicamente quem e quantas vezes acedeu à Internet. Solução: Entrada: O ficheiro contendo os endereços TCP/IP Saída: Uma lista com os diferentes endereços e o número de vezes que aparecem no ficheiro Existem 2 32 possibilidades de endereços, logo uma estrutura estática, tal como uma tabela, não é eficiente. João Miguel da Costa Sousa
27 Algoritmo: Acesso à Internet Identificadores NomeFicheiro nome do ficheiro Endereco o endereço TCP/IP ListaEnderecos lista ligada de endereços Algoritmo Este algoritmo encontra endereços TCP/IP gravados num ficheiro e o número de vezes que ocorrem. Entrada: NomeFicheiro ficheiro contendo os endereços TCP/IP. Saída: Lista com os endereços e o número de vezes que aparecem no ficheiro. 1. Lê o nome do ficheiro e abre-o para leitura. Se o ficheiro não fôr aberto acaba o programa. 2. Inicializa a ListaEnderecos como lista vazia. João Miguel da Costa Sousa 300 Algoritmo: Acesso à Internet (2) 3. Repete o seguinte: a) Lê um endereço do ficheiro b) Se existe erro de leitura escreve mensagem de erro. c) Caso contrário: d) Se não há mais endereços termina o ciclo. e) Caso contrário: i. Procura na ListaEnderecos se Endereco está contido na lista. ii. Se endereço já existe Incrementa contador desse Endereco Caso contrário Insere novo endereço na lista, com contador a Atravessa ListaEnderecos e escreve cada TCP/IP e o valor do seu contador. João Miguel da Costa Sousa
28 Programa: Enderecos_Internet PROGRAM Enderecos_Internet! ! Este programa le enderecos TCP/IP de um ficheiro e produz uma lista de enderecos! distintos indicando quantas vezes esses enderecos aparecem no ficheiro.! Variáveis usadas:!! Nome_Ficheiro : nome do ficheiro com enderecos! Estado_Abertura : variavel de estado para OPEN! Estado_Leitura : variavel de estado para READ! Endereco : endereco lido do ficheiro! ListaEnderecos : ponteiro para o primeiro no da! Lista de enderecos!! Subrotinas utilizadas para processar listas:! Adiciona_Lista, Procura, Enderecos_saida!! Entradas : NomeFicheiro(teclado), Enderecos (ficheiro)! Saidas : Lista com enderecos distintos e numero de ocorrencias.! IMPLICIT NONE!Definicao do tipo no-endereco TYPE Lista_No CHARACTER(15) :: Endereco_TCP_IP!Dados endereco INTEGER :: Contador!Contador desse endereco TYPE(Lista_No), POINTER :: Prox!Ponteiro para prox. no END TYPE Lista_No João Miguel da Costa Sousa 302 Programa: Enderecos_Internet CHARACTER(15) :: Endereco, Nome_Ficheiro*20 INTEGER :: Estado_Abertura, Estado_Leitura TYPE(Lista_No), POINTER :: ListaEnderecos! Le o nome do ficheiro com os registos e abre-o WRITE(*,'(1X, A)',ADVANCE="NO") "Escreva o nome do ficheiro:" READ (*, *) Nome_Ficheiro OPEN (10, FILE = Nome_Ficheiro, STATUS = "OLD", & IOSTAT = Estado_Abertura) IF (Estado_abertura > 0) THEN WRITE(*, *) *** Ficheiro de enderecos invalido *** ELSE!Cria uma lista de enderecos vazia NULLIFY(ListaEnderecos)!Le enderecos do ficheiro ate ao fim do ficheiro DO READ(10,*,IOSTAT=Estado_Leitura) Endereco IF (Estado_Leitura<0) EXIT! Fim do ficheiro CALL Adiciona_a_Lista(ListaEnderecos,Endereco) END DO END IF CALL Escreve_Enderecos(ListaEnderecos) João Miguel da Costa Sousa
29 Subrotina: Adiciona_a_Lista CONTAINS! ! Esta subrotina verifica se Endereco ja se encontra na lista ligada (utilizando! Procura). Se nao, Endereco e acrescentado no inicio da lista. Se sim, o contador! e incrementado de 1 elemento. Variaveis locais:! EstadoAlocacao : estado da instrucao OPEN! PontLocal : pont. para o no com Endereco, ou vazio! Esta_na_Lista : indica se Endereco se encontra na! ListaEnderecos!! Recebe: ListaEnderecos e Endereco! Retorna: ListaEnderecos modificada! SUBROUTINE Adiciona_a_Lista(ListaEnderecos,Endereco) TYPE(Lista_No), POINTER :: ListaEnderecos CHARACTER(*), INTENT(IN) :: Endereco TYPE(Lista_No), POINTER :: PontLocal INTEGER :: EstadoAlocacao LOGICAL :: Esta_na_Lista IF (.NOT. ASSOCIATED(ListaEnderecos)) THEN!Lista vazia ALLOCATE(ListaEnderecos, STAT = EstadoAlocacao) IF (EstadoAlocacao /= 0) THEN WRITE(*, *) *** Nao ha memoria disponivel! *** ELSE ListaEnderecos%Endereco_TCP_IP = Endereco ListaEnderecos%Contador = 1 NULLIFY(ListaEnderecos%Prox) END IF João Miguel da Costa Sousa 304 Subrotinas de Enderecos_Internet ELSE!Lista nao vazia; determina se Endereco ja existe CALL Procura_em_Lista(ListaEnderecos,Endereco, & PontLocal,Esta_na_Lista) IF (Esta_na_Lista) THEN! Incrementa contador de um PontLocal%Contador = PontLocal%Contador + 1 ELSE!Cria um novo no e insere-o no inicio da lista ALLOCATE(PontLocal, STAT = EstadoAlocacao) IF (EstadoAlocacao /= 0) THEN WRITE(*, *) *** Nao ha memoria disponivel! *** ELSE PontLocal%Endereco_TCP_IP = Endereco PontLocal%Contador = 1 PontLocal%Prox => ListaEnderecos ListaEnderecos => PontLocal END IF ENDIF ENDIF END SUBROUTINE Adiciona_a_Lista! ! Esta subrotina procura na ListaEnderecos por um no contendo Endereco. Se este! endereco for encontrado, o ponteiro PontLocal aponta para o no com Endereco, e! Esta_na_Lista retorna verdadeiro; caso contrario PontLocal e vazio (NULL) e! Esta_na_Lista falso.!! Recebe: ListaEnderecos e Endereco! Retorna: PontLocal, Esta_na_Lista! SUBROUTINE Procura_em_Lista(ListaEnderecos, Endereco, PontLocal, Esta_na_Lista) João Miguel da Costa Sousa
30 Subrotina: Procura_em_Lista SUBROUTINE Procura_em_Lista(ListaEnderecos, Endereco, PontLocal, Esta_na_Lista) TYPE(Lista_No), POINTER :: ListaEnderecos, PontLocal CHARACTER(*), INTENT(IN) :: Endereco LOGICAL, INTENT(OUT) :: Esta_na_Lista PontLocal => ListaEnderecos Esta_na_Lista =.FALSE.! Percorre a lista ate encontrar endereco ou ate ao fim DO IF(Esta_na_Lista.OR..NOT. ASSOCIATED(PontLocal)) EXIT! Endereco nao encontrado ou fim da lista termina ciclo IF (PontLocal%Endereco_TCP_IP == Endereco) THEN Esta_na_Lista =.TRUE. ELSE! Procura no proximo elemento PontLocal => PontLocal%Prox END IF END DO END SUBROUTINE Procura_em_Lista João Miguel da Costa Sousa 306 Subrotina: Enderecos_Saida! ! Esta subrotina escreve o conteudo da lista ligada apontada por ListaEnderecos.! Imprime o endereco e o contador de cada no.! Variveis locais:! PontAux : ponteiro que percorre a lista!! Recebe: ListaEnderecos! Saida: Escreve endrecos e contador nos nos! SUBROUTINE Escreve_Enderecos(ListaEnderecos) TYPE(Lista_No), POINTER :: ListaEnderecos, PontAux PontAux => ListaEnderecos WRITE(*, *) WRITE(*, *) "Enderecos de Internet" WRITE(*, *) WRITE(*, *) " Endereco Contador " WRITE(*, *) " "! Escreve informacao nos nos ate ao fim da lista DO IF (.NOT. ASSOCIATED(PontAux)) EXIT WRITE(*, 1X, A, 4X, I4 ) PontAux%Endereco_TCP_IP, PontAux%Contador PontAux => PontAux%Prox END DO END SUBROUTINE Escreve_Enderecos END PROGRAM Enderecos_Internet João Miguel da Costa Sousa
31 Resultados Ficheiro exfic.dat: Exemplo de execução: > Escreva o nome do ficheiro: exfic.dat > > Endereco Contador > > > > > > > João Miguel da Costa Sousa
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 maisProgramação com Funções. Subprogramas do tipo Função
Programação com Funções Problemas complexos divididos em subproblemas Subprogramas funções (function) subrotinas (subroutine) Fortran contém funções intrínsecas, ou de biblioteca. Exemplos de funções intrínsecas:
Leia maisO que é uma variável?
Escopo, Ligação e Ambiente de Execução mleal@inf.puc-rio.br 1 O que é uma variável? Uma variável pode ser definida como uma tupla r nome é um string usado para
Leia maisTipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
Leia maisProgramaçã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 maisApostila 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 maisMétodos de Programação I (2005/2006) 1. Ficheiro (file)
Métodos de Programação I (2005/2006) 1 Ficheiro (file) O tipo estruturado file representa, em Pascal, uma estrutura de dados capaz de armazenar dados ou resultados de qualquer outro tipo É uma estrutura
Leia maisTÉ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 mais1.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 maisMétodos Computacionais. Funções, Escopo de Variáveis e Ponteiros
Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função
Leia maisUniversidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Leia maisTrabalho de Desenho de Linguagens de Programação e de Compiladores. Mini Pascal
Trabalho de Desenho de Linguagens de Programação e de Compiladores Mini Pascal (cod. 11482) Departamento de Informática Universidade da Beira Interior Ano lectivo 2015/2016 1 Introdução Este trabalho é
Leia maisAlgoritmos 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 maisIntCinco = 5 IntOito = 8
1. Enuncie as várias partes de um programa em FORTRAN. 2. Identifique os tipos básicos de dados em FORTRAN. 3. Escreva a declaração de tipo para as variáveis: 3.1. NumeroAluno do tipo inteiro 3.2. NomeProprio,
Leia maisVariáveis, Tipos de Dados e Operadores
! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória
Leia mais1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de º Semestre
º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica de Junho de 6 º Semestre Exame sem consulta : 6: h Nome: Número: Escreva o seu número e nome em todas as folhas de exame. O exame
Leia maisAula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz
Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz Sumário de Aula } Conceito de Memória } Variáveis e Tipos de Dados } Constantes 2 Conceito de Memória } A memória de um computador é
Leia maisCapítulo 10. MATRIZES
Capítulo 10. MATRIZES OBJETIVOS DO CAPÍTULO Conceitos de: conjunto multidimensional (matriz), ciclo implícito, ciclo duplo Comandos do FORTRAN: DIMENSION(:,:), MATMUL 10.1 programa10a.f90 Para inicializar
Leia maisLinguagem de Maquina II. Visão Geral
Linguagem de Maquina II Visão Geral Revisão A linguagem de máquina é composta de seqüências binárias (1's e 0's) São interpretadas como instruções pelo hardware A linguagem de montagem e a linguagem de
Leia maisAula 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 maisINF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 8 Listas Encadeadas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados (c) Dept. Informática
Leia maisResoluçã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 maisInteiro Os dados do tipo inteiro são quantidades numéricas inteiras. Os dados deste tipo podem ser constantes, variáveis, funções e expressões.
Inteiro Os dados do tipo inteiro são quantidades numéricas inteiras. Os dados deste tipo podem ser constantes, variáveis, funções e expressões. Real Idêntico ao anterior, as quantidades em vez de numéricas
Leia mais4ª Lista de Exercícios de Programação I
4ª Lista de Exercícios de Programação I Instrução As questões devem ser implementadas em C. 1. Faça um algoritmo que leia 10 valores inteiros armazenando-os em um vetor e depois calcule a soma dos valores
Leia maisMódulo 10 Listas Encadeadas
Estruturas de Dados Módulo 10 Listas Encadeadas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus
Leia maisAlgoritmo e Programação Matemática
Algoritmo e Programação Matemática Fundamentos de Algoritmos Parte 1 Renato Dourado Maia Instituto de Ciências Agrárias Universidade Federal de Minas Gerais Dados A funcionalidade principal de um computador
Leia maisIniciação à Informática
Iniciação à Informática Dr. Manuel Monteiro Conteúdo 5 Folha de Cálculo Conceitos básicos Os programas denominados de folhas de cálculo permitem aos seus utilizadores elaborar documentos com cálculos,
Leia maisSumário. 1.1 Variáveis Globais e Locais Passagem de Parâmetro (por valor por referência) 1
Sumário Sobre as Autoras ix Introdução xi 1 Sub-rotinas 1 1.1 Variáveis Globais e Locais 1 1.2 Passagem de Parâmetro (por valor por referência) 1 2 Vetores e Matrizes 7 2.1 Vetores 7 2.2 Matrizes 8 2.2.1
Leia maisMódulo 5 Vetores e Alocação Dinâmica
Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Leia maisIntrodução à Ciência da Computação
Introdução à Ciência da Computação Variáveis Conceitos Básicos Variáveis x Constantes a = x + 5 a, x e 5 são variáveis ou constantes? Variáveis As variáveis são recipientes de valores É um espaço reservado
Leia maisLinguagem C: Introdução
Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais
Leia maisAlgoritmos: 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 maisMé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 maisPROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S
PROGRAMAÇÃO I VA R I Á V E I S, C O N S TA N T E S, O P E R A D O R E S E N T R A DA E S A Í DA D E DA D O S Variáveis 2 Variáveis são locais onde são armazenados os valores na memória. Toda variável é
Leia maisLista de Comandos: Arquivo texto e Binário
Lista de Comandos: Arquivo texto e Declaração de arquivo do tipo binário program sequencial; type endereco = record end; rua : string[40]; numero : integer; CEP : real; cadastro = record end; nome : string[30];
Leia maisPilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira
Pilha SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Pilha O que é? Para que serve? 2 Problema: chamada de sub-rotinas Rotina A 1 print A 2 call C 3 call B 4 call D 5 return Rotina B 1 call
Leia maisCFAC: 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 maisProgramaçã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 maisIntrodução à linguagem C++
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas
Leia maisAmbiente 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 maisLinguagem 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 maisEscola Politécnica da Universidade de São Paulo Departamento de Engenharia de Computação e Sistemas Digitais. PCS 0014: Linguagens de Programação
Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Computação e Sistemas Digitais Prof. ISVega PCS 0014: Linguagens de Programação Apontamento#13 Abr/2001 Sistemas de Tipos Conteúdo
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação
Leia maisEstruturas de Dados I
Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus
Leia maisFicheiros de texto 1. Ficheiros de texto. 1. Implementar um programa que leia uma frase do teclado e a escreva num ficheiro.
Ficheiros de texto 1 Ficheiros de texto 1. Implementar um programa que leia uma frase do teclado e a escreva num ficheiro. 2. Implementar um programa que procure num ficheiro uma palavra lida do teclado.
Leia maisMétodos Computacionais. Listas Encadeadas
Métodos Computacionais Listas Encadeadas Vetores Declaração de vetor implica na especificação de seu tamanho Não se pode aumentar ou diminuir tamanho Outra alternativa no uso de vetores é alocar dinamicamente
Leia maisPORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA
PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA SUMÁRIO Introdução Conceitos básicos Formato básico Tipos primitivos Variáveis Constantes Operadores Operações
Leia maisListas Lineares Ordenadas
Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre
Leia maisCurso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 3ª Parte Prof. Sandra Pais Soares
Curso Profissional de Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Módulo 1 3ª Parte Prof. Sandra Pais Soares Fundamentos de Programação 1. Palavras Reservadas 2.
Leia maisFunção Fundamental do SO
Função Fundamental do SO Gestão do Hardware Uma das funções fundamentais do sistema operativo é gerir os recursos do hardware de um modo o mais transparente possível ao utilizador Recursos principais a
Leia maisCapítulo 11 Sistemas de Arquivos
Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo Sistemas de s Introdução O armazenamento e a recuperação de informações
Leia maisComputação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.
Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);
Leia maisHello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento
Hello World Linguagem C printf("hello world!\n"); main é a função principal, a execução do programa começa por ela printf é uma função usada para enviar dados para o vídeo Palavras Reservadas auto double
Leia maisMemória virtual. Sistemas de Computação
Memória virtual Fundamentos Memória virtual separação da memória lógica do usuário da memória física somente uma parte do programa precisa estar na memória para execução espaço de endereçamento lógico
Leia maisMicrocontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Assembly 8051 Num sistema microprocessado, geralmente, não existe um sistema operacional; O programa desenvolvido pelo programador deve cuidar tanto da lógica do programa, bem como da configuração e acesso
Leia maisMini-Projecto Nº2 INTRODUÇÃO À PROGRAMAÇÃO 3ª feira das 12 às 14h
Mini-Projecto Nº2 INTRODUÇÃO À PROGRAMAÇÃO 3ª feira das 12 às 14h INSCRIÇÕES A realização e entrega deste trabalho por parte dos alunos carece de inscrição prévia. O trabalho é individual. PRAZOS - Este
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto
Leia maisFundamentos da Programação
Fundamentos da Programação Solução do Primeiro Teste 26 de Outubro de 2013 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo
Leia maisVetor de tamanho variável
Vetor de tamanho variável Resumo O objetivo deste artigo é apresentar uma técnica utilizada nos sprites do MSX para utilização de um vetor de tamanho variável, através de strings. 1- Introdução Um vetor
Leia maisFunções de Entrada e Saída
inicio Escrita no ecrã (Saída de dados) Escrever( introduza o valor do raio ) Raio Leitura do valor do raio S Raio < 0 N O utilizador insere o valor do raio (Entrada de dados do teclado) Escrita no ecrã
Leia maisDepartamento de Matemática Universidade de Coimbra
Departamento de Matemática Universidade de Coimbra Ano Lectivo de 200x/200(x + 1) Introdução aos Computadores e Programação Exame Tipo Duração da prova: 2h30 1. (Pergunta (teórica) simples) Diga o que
Leia maisSequencial 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 maisLinguagens de Programação Conceitos e Técnicas. Amarrações
Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador
Leia maisFunções Geométricas, de Strings, de Listas e de Manipulação de Arquivos
AutoLISP - VII Funções Geométricas, de Strings, de Listas e de João Manuel R. S. Tavares Joaquim Oliveira Fonseca Funções geométricas As funções geométricas do AutoLISP são: distance, angle, polar, inters,
Leia maisProfessora Jeane Melo
Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros
Leia maisCAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
Leia maisProgramação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos
Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis
Leia maisEstruturas 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 maisTrabalho Linguagem e Programação de Compiladores
Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:
Leia maisIntrodução à Computação. Programas Básicos. ISEP DEI, Angelo Martins 2006 Programas Básicos - 1
Introdução à Computação Programas Básicos ISEP DEI, Angelo Martins 2006 Programas Básicos - 1 Conteúdo Exemplo de um programa Apresentação sumária da construção de um programa em VB. Objectos e o mecanismo
Leia maisÁrvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Leia maisCompiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)
Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Análise Léxica A primeira fase da compilação Recebe os caracteres de entrada do programa e os converte em um fluxo de
Leia maisIntrodução a linguagem C. Introdução à Programação 06/07
Introdução a linguagem C Introdução à Programação 06/07 A LINGUAGEM DE PROGRAMAÇÃO C A linguagem C foi criada, na década de setenta, por Dennis M. Ritchie; Apesar de se considerar uma linguagem de alto
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 04 Alocação Dinâmica Edirlei Soares de Lima Vetores - Declaração e Inicialização Declaração de um vetor: int meu_vetor[10]; Reserva um espaço de memória
Leia maisSSC510 Arquitetura de Computadores 1ª AULA
SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura
Leia maisParadigmas 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 maisMATLAB. 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 maisProf. Adriano Maranhão COMPILADORES
Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então
Leia maisCFAC: Exemplos de Programas em FORTRAN
FA: Exemplos de Programas em FORTRAN Exemplos de Programas em FORTRAN João Manuel R. S. Tavares Joaquim O. Fonseca Exemplo I Programa simples de utilização do ciclo DO, com escrita não formatada: PROGRAM
Leia maisTipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto
Programação Funcional Capítulo 11 Tipos Algébricos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/33 1 Tipos Algébricos 2/33 Tópicos 1 Tipos Algébricos 3/33
Leia maisAnálise Semântica: Verificação de Tipos
Análise Semântica: Verificação de Tipos Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores
Leia mais<identificador>[<tamanho>]: <tipo>;
Vetores e Constantes Imagine uma situação na qual fosse necessário armazenar 100 valores para processamento. Por exemplo, pode ser necessário armazenar as notas de 100 provas de uma turma de alunos. Uma
Leia maisAlocação Dinâmica em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Conjunto de Instruções Slide 1 Sumário Características de Instruções de Máquina Tipos de Operandos Tipos de Operações Linguagem de Montagem Slide 2 Características
Leia maisListas em Haskell. Listas. Linguagem Haskell. Maria Adriana Vidigal de Lima. Faculdade de Computação - UFU. Setembro
em Haskell Linguagem Haskell Faculdade de Computação - UFU Setembro - 2009 em Haskell 1 em Haskell Noções sobre Construção de por Compreensão Funções Sobre Processamento de Fundamentos em Haskell Noções
Leia maisObjectivos. Introdução à programação Macros em Microsoft Excel Introdução ao Visual Basic para Aplicações (VBA)
Objectivos Introdução à programação Macros em Microsoft Excel Introdução ao Visual Basic para Aplicações (VBA) Vantagens da programação Eficiência em operações repetitivas Melhor clarividência na decomposição
Leia maisCapí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 maisCAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:
CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta
Leia maisCONCEITOS 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 maisALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados
3. Introdução Segundo alguns especialistas, qualquer programa de computador pode ser escrito utilizando apenas três estruturas básicas: Seqüência, Condição e Repetição. Isto significa que, na construção
Leia maisRecursividade UFOP 1/48
BCC 201 - Introdução à Programação I Recursividade Guillermo Cámara-Chávez UFOP 1/48 Introdução I Recursividade: é um método de programação no qual uma função pode chamar a si mesma Muitas estruturas têm
Leia maisIntrodução a Programação de Jogos
Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição
Leia maisAula 11 Pilha Dinâmica. prof Leticia Winkler
Aula 11 Pilha Dinâmica prof Leticia Winkler 1 Pilha Dinâmica (Dynamic Stack) Pilha implementada através de uma lista linear encadeada. É uma lista linear encadeada em que as operações de inserção e retirada
Leia maisWindows 95/98/Me/2000
Windows 95/98/Me/2000 Mais que um Sistema Operativo, o MS-Windows é um ambiente de trabalho que simula no ecrã o trabalho diário sobre uma secretária. A ideia base do MS-Windows foi a de esconder a organização
Leia maisApêndice A. Pseudo-Linguagem
Apêndice A. Pseudo-Linguagem Apostila de Programação I A.1 Considerações Preliminares Os computadores convencionais se baseiam no conceito de uma memória principal que consiste de células elementares,
Leia maisCPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados
CPU CPU Unidade Central de Processamento Função: leitura, escrita e processamento de dados Constituída por: dispositivos que gerem a entrada (leitura) e saída (escrita) de dados; registos (memórias auxiliares)
Leia maisLP II Estrutura de Dados Estruturas Heterogêneas e Listas Lineares Estáticas. Prof. José Honorato Ferreira Nunes
LP II Estrutura de Dados Estruturas Heterogêneas e Listas Lineares Estáticas Prof. José Honorato Ferreira Nunes eu@honorato.eu Estruturas (struct) Ao manusearmos dados muitas vezes deparamos com informações
Leia maisEstruturas de Dados com Jogos. Capítulo 6 Listas Cadastrais
Estruturas de Dados com Jogos Capítulo 6 Listas Cadastrais 1 Seus Objetivos neste Capítulo 2 Entender o que é e para que serve uma estrutura do tipo Lista Cadastral; Desenvolver habilidade para manipular
Leia maisIntroduçã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 maisPROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia
PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia Calculo da área de um triângulo Algoritmo Área Var base,
Leia mais