UNIVERSIDADE DA BEIRA INTERIOR

Documentos relacionados
UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

1/22 FICHEIROS BINÁRIOS

UNIVERSIDADE DA BEIRA INTERIOR

Apontadores/ponteiros

UNIVERSIDADE DA BEIRA INTERIOR

Arquivos Binários UFOP 1/25

Aula 16. Ficheiros de texto

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE:

Tabelas de dispersão/hash

CURSO BÁSICO DE PROGRAMAÇÃO AULA 17. Manipulação de arquivos binários.

Operações em Arquivos. MC102 Felipe Bergo

1 Escrita de Arquivos Binário

MÓDULO 3: Programação Estruturada

Métodos Computacionais. Arquivos

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos

Carlos Eduardo Batista. Centro de Informática - UFPB

3ra. Avaliação - Grupo A

INF 1620 P3-06/12/03 Questão 1 Nome:

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Introdução a Programação. Manipulando Arquivos em Modo Texto

Linguagem C. Armazenamento de Dados em Arquivos - Continuação

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Acesso Aleatório em Arquivos

Algoritmos de pesquisa. Tabelas de dispersão/hash

Programação de Computadores II

AULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos

TABELAS DE DISPERSÃO/HASH

Planificação Anual da disciplina de Programação e Sistemas de Informação 10º 1PI

INF 1620 P3-27/11/04 Questão 1 Nome:

Funções em Linguagem C Parte II

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

Manipulação de Arquivos

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

ORDENAÇÃO DE ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Laboratório de Introdução à Ciência da Computação I

Aula 06 Introdução à Programação Matrizes

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel.

Linguagem C arquivos. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Arquivos em C. Material da Prof. Ana Eliza

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Métodos de Busca Parte 1

1/34 GESTÃO DINÂMICA DE MEMÓRIA

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos

Lista de Exercícios. Av. Trabalhador São-carlense, 400. centro. São Carlos - SP cep Brasil.

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática

Linguagem de Programação C. Registros

INF1010 Lista de Exercícios 2

MÉTODOS DE ORDENAÇÃO DE DADOS EM MEMÓRIA PRIMÁRIA. Material da Prof. Ana Eliza

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

13a. Aula Manipulação de arquivos

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Universidade de São Paulo

Introdução a Programação. Arquivos

CURSO PROFISSIONAL Técnico de Gestão e Programação de Sistemas Informáticos

Introdução à Programação em C Input / Output

A sintaxe para se declarar uma variável do tipo ponteiro é dada por:

Aula 30: Revisão para Prova 03

Carlos Eduardo Batista. Centro de Informática - UFPB

Estruturas de dados e algoritmos fundamentais

INF 1620 P3-29/06/04 Questão 1 Nome:

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Linguagem C vetores multidimensionais

LINGUAGEM C: ARQUIVOS

C Arquivos. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

Lista de Exercícios 04

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Algoritmos e Estruturas de Dados II IEC013

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

INF 1010 Estruturas de Dados Avançadas

ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Métodos de Ordenação Parte I

max1: 20,max2:+ max1:15, max2:20 max1:30,max2:32,max3:35 max1:40,max2:+

- Mapa de memória de um processo - Ponteiros

Introdução aos Algoritmos e Estruturas de Dados. 2 o Teste - A

4ª Lista de Exercícios de Programação I

Métodos de Ordenação Parte 3

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

MCTA001 Algoritmos e Estruturas de Dados I. Aula 08 Árvores (parte 1) Laboratório

Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) {

PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

DAINF - Departamento de Informática

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó.

Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Programação de Computadores I. Linguagem C Arquivos

ESTRUTURA DE DADOS LISTAS LINEARES

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec

1.a) Qual a diferença entre uma linguagem de programação de alto nível e uma linguagem de programação de baixo nível?

Transcrição:

UNIVERSIDADE DA BEIRA INTERIOR Programação II 1º Semestre Exame Época Normal (15 val) 2h + 30min 21/01/2019 1 [2,00 val = 1,00 val + 1,00 val] - Memória dinâmica Considere as seguintes declarações de variáveis: int **V, *W, N, A, B; e que sizeof(int) = 4 a) Preencha o esquema dado na folha de resposta (em anexo) tendo em conta a execução do seguinte bloco de instruções em linguagem C: W = (int *) malloc(sizeof(int)); **V = 800; for (N = 2; N < 5; N++){ W = (int *) realloc(w, N * sizeof(int)); W[N-1] = N * 100; } W = (int *) realloc(w, N * sizeof(int)); *W = 700; *(W + 4) = 600; *(*V + 1) = 900; b) Usando os valores obtidos com a execução do bloco de instruções anterior, determine os valores de cada uma das seguintes expressões (responder na folha de resposta, em anexo): i) *V + 3 iii) (*V)[2] v) *(*V - 3) vii) *(W + 5) ii) W - 3 iv) &(**V) vi) W[3] viii) *W - 2 2 [1,50 val] - Memória dinâmica Usando memória dinâmica na manipulação dos vetores, implemente uma função que dados um vetor V de elementos do tipo ALUNO, o seu tamanho N e um número inteiro K (parâmetros de entrada da função), construa e devolva um outro vetor do mesmo tipo com apenas os elementos do vetor V cujo campo Nota seja um valor igual a K

3 [2,25 val] Ficheiros binários Considere também o ficheiro binário NotasProgramacaobin que contém a informação relativa às notas finais obtidas por todos os alunos à disciplina de Programação II; ou seja, um ficheiro composto por estruturas do tipo ALUNO para todos os alunos inscritos à disciplina Construa um programa em C que a partir dos dados contidos no ficheiro NotasProgramacaobin crie um ficheiro binário de nome AlunosNotaKbin com os números de aluno de todos os alunos que obtiveram na disciplina de Programação II uma nota igual a um valor inteiro K (campo Nota = K) Este valor K terá que ser pedido ao utilizador Para tal não pode usar vetores e deve usar a função fseek (para além de outras que achar necessárias), e deve ler o mínimo de informação possível para atingir o objetivo proposto Ou seja, depois de inserir um valor inteiro K, a estratégia deve ser a seguinte: para cada estrutura contida no ficheiro NotasProgramacaobin deve ler a respetiva Nota e, caso esta seja igual a K, deve ler o Número de aluno que lhe corresponde e escrever apenas o Número de aluno (campo Numero ) no ficheiro AlunosNotaKbin Algumas funções para manipulação de ficheiros binários: int fread(void *ptr, int size, int n, FILE *fich) Leitura de dados int fwrite(void *ptr, int size, int n, FILE *fich) Escrita de dados ptr (endereço inicial da zona de memória que recebe/tem os dados a ler/escrever); size (número de bytes que cada um dos dados ocupa); n (número de dados a ler/escrever); file (endereço do ficheiro de leitura/escrita) Retorna o número de elementos (não bytes) que conseguiu ler/escrever long ftell (FILE *file) devolve a posição corrente, em bytes, dentro do ficheiro file void rewind (FILE *file) coloca-se no início do ficheiro file int fseek(file *file, long salto, int origem) move-se no ficheiro file salto bytes desde a origem em que origem pode ser início (SEEK_SET), posição corrente (SEEK_CUR) e fim (SEEK_END) 4 [1,25 val] - Recursividade Implemente uma função recursiva que devolva a menor elemento de um vetor V de N valores inteiros Exemplo: V = [ 6-5 2-8 -9 4 ] (N = 6) => -9

5 [1,25 val] - Análise de Complexidade dos Algoritmos Considere o seguinte bloco de código em linguagem C: for (k = 0; k < N; k++){ for (p = N-10; p < N; p++) printf( %d\n, k); } Determine a ordem de complexidade do algoritmo (considerando o pior caso) associado ao bloco de código anterior Justifique, apresentando todos os cálculos efetuados Pode incidir os cálculos sobre a operação que mais vezes é executada, que é a instrução de comparação p < N 6 [2,50 val = 1,25 val + 0,25 val + 0,50 val + 0,50 val] - Tabelas de Dispersão/Hash Considere uma tabela de hash T de tamanho 10 inicialmente vazia e a seguinte função de hash: h(k, i) = ( k % 10 + i 2 ) % 10, i = 0, 1, 2, Responda às questões que se seguem, justificando com os cálculos que são necessários efetuar a) Considerando que as colisões são tratadas com hashing fechado, desenhe a tabela de hash T após a inserção das seguintes chaves (pela ordem apresentada): 30, 34, 54, 19, 75 e 45 b) Redesenhe a tabela anterior após a remoção da chave 30 c) Prove que a chave 39 não se encontra na tabela anterior d) Insira a chave 39 na tabela obtida em b) (ou seja, após remoção da chave 30)

7 [2,00 val + 2,25 val] - Algoritmos de Ordenação e de Pesquisa Considere as seguintes funções (já implementadas): void OrdenarNota (ALUNO V[], int tam); // ordena decrescentemente o vetor V pelo campo Nota int PesquisaBinariaNota (int K, ALUNO V[], int N);// devolve o índice de um elemento de V cujo campo Nota é igual a K ou -1 (se não existe qualquer elemento), em que V está ordenado por ordem decrescente do campo Nota a) Usando a função OrdenarNota, implemente uma função em C que dados como parâmetros da função um vetor do tipo ALUNO não ordenado e o seu tamanho (número de elementos), remova todos os elementos daquele vetor cujos valores do campo Nota são menores do que 10 b) Usando as funções OrdenarNota e PesquisaBinariaNota, implemente uma função em C que dados como parâmetros da função um vetor do tipo ALUNO, o seu tamanho (número de elementos) e um valor inteiro K, determine e devolva a quantidade de elementos do vetor V cujo valor do campo Nota é maior ou igual ao valor de K NOTA: As funções OrdenarNota e PesquisaBinariaNota devem ser usadas de tal forma que sejam fundamentais na resolução dos problemas e que otimizem os algoritmos (com o menor número de operações possível)

UNIVERSIDADE DA BEIRA INTERIOR Programação II Exame Época Normal 21/01/2019 Nº Nome: Responder à questão 1 nesta folha e entregar junto com a folha de prova 1 a) 1 b) (esquema de um bloco de memória) 100500 110164 W EXPRESSÃO *V + 3 W - 3 (*V)[2] &(**V) VALOR 100700 110184 100800 N 110160-100 A 110164 110168 *(*V - 3) W[3] *(W + 5) *W - 2 NOTA: Caso o valor da expressão não seja conhecido deve responder com Indefinido ; ou seja, deve colocar na coluna VALOR na respetiva posição a palavra Indefinido 110172 110176 110180 110184 110188 110192-200 B 110500 100700 V