Apontadores/ponteiros

Documentos relacionados
Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses

Linguagem de Programação C. Ponteiros

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

Ponteiros e Tabelas. K&R: Capítulo 5

ESTRUTURA DE DADOS (TCC )

3. Linguagem de Programação C

1 Exercícios com ponteiros

ponteiros INF Programação I Prof. Roberto Azevedo

Ponteiros. Baseado nos slides do Prof. Mauro.

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

Ponteiros. prof. Fabrício Olivetti de França

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

UNIVERSIDADE DA BEIRA INTERIOR

Programação de Computadores II. Cap. 5 Vetores

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Programação: Vetores

Aula 07 Introdução à Programação Subprogramas

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Subprogramas. Prof. Carlos Lopes

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

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

Alocação Dinâmica em C

ECT1203 Linguagem de Programação

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes

Introdução a Programação de Jogos

Prova de Programação (21090) Data: 31 de Janeiro de 2008

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais. Prof. Luiz Fernando Laguardia Campos FMS

... Subprogramas Após fazer as tarefas previstas o nosso programa devolve o comando ao sistema operativo. Isto está numa hierarquia onde o nosso progr

Funções em Linguagem C Parte II

UNIVERSIDADE DA BEIRA INTERIOR

Gilberto A. S. Segundo. 24 de agosto de 2011

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

UNIVERSIDADE DA BEIRA INTERIOR

Programação Básica. Estrutura de um algoritmo

Linguagem C: funções e ponteiros. Prof. Críston Algoritmos e Programação

TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO

Algoritmos e Estruturas de dados

Linguagem C: Ponteiros - Alocação Dinâmica

Algoritmos e Programação

Introdução a Programação de Jogos

Faculdade de Computação

Exercícios. 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

1 Exercícios com ponteiros

Métodos Computacionais. Tipos Estruturados

Curso de Introdução à Liguagem de. Grupo PET-Tele. Universidade Federal Fluminense. July 16, 2012

INF 1620 P1-13/09/02 Questão 1 Nome:

Linguagem C Ponteiros

Simulado da Prova Parcial 2 (01/08/2013)

Vetores. Marina Andretta. 11 de abril de 2016 ICMC-USP. Marina Andretta (ICMC-USP) sme0230-ipc 11 de abril de / 20

Aula 2 Comandos de Decisão

Trabalho Linguagem e Programação de Compiladores

Conhecendo a Linguagem de Programação C

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

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Disciplina de Algoritmos e Programação

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

Laboratório 4 Correcção de erros sintácticos e tipos de dados primitivos

ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS

Linguagem C. André Tavares da Silva.

Ponteiros. Considere um carteiro recém-chegado na vila Na vila, a referência para se encontrar a casa é pelo morador

INTRODUÇÃO À LINGUAGEM C

Computação 2. Aula 5. Profª. Fabiany defines vetor, strings e matriz por parâmetros de função

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Variáveis e Operadores em C

LÓGICA DE PROGRAMAÇÃO. Resumo da Linguagem C. Sérgio Carlos Portari Júnior

Linguagem de Programação C. Expressões em C

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Quantas variáveis para armazenar as notas e as médias são necessárias para resolver este problema?

Ponteiros & tabelas (cont.) K&R: Capítulo 5

Programação II. Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010

CCO 016 / COM 110 Fundamentos de Programação

Módulo 3 Controle de Fluxo

Variáveis, Tipos de Dados e Operadores

Aula 24: Ponteiros e Alocação Dinâmica

UNIVERSIDADE DA BEIRA INTERIOR

Carlos Eduardo Batista. Centro de Informática - UFPB

11 - Estrutura de um programa em C

Algoritmos e Estruturas de Dados I (AEDI) Introdução - AEDI. Prof. Paulo Henrique Pisani

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

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Introdução a Programação. Tipos Estruturados de Dados

Modularidade - Funções e Procedimentos

Aula 25: Alocação Dinâmica

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

GEQ Prof. Paulo R. Coelho. Lista para prova

INF 1620 P2-14/10/05 Questão 1 Nome:

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

Aula 07: - Mapa de memória de um processo - Ponteiros (parte 1)

Revisão para Prova 2. Mirella M. Moro

Transcrição:

Apontadores/ponteiros 1 Apontadores/ponteiros 1. Um ponteiro pode ser manipulado como sendo um vetor. #include <stdio.h> int v[5] = { 10, 20, 30, 40, 50 ; int p, i; p = v; for (i = 1; i < 5; i++) printf ( %d, p[i]); a) Escreva o programa anterior no computador e, identifique e corrija os erros no código. b) Acrescente ao código anterior uma instrução para escrever o endereço do 1º elemento do vetor, usando as seguintes 4 formas diferentes para o fazer: &v[0], &p[0], v, p. c) Acrescente ao código anterior uma instrução para escrever o endereço do 2º elemento do vetor, usando as seguintes 4 formas diferentes para o fazer: &v[1], &p[1], v+1, p+1. Quantos bytes ocupa cada valor do vetor? d) Acrescente ao código anterior uma instrução para escrever o valor do 1º elemento do vetor, usando as seguintes 4 formas diferentes para o fazer: v[0], p[0], *v, *p. e) Acrescente ao código anterior uma instrução para escrever o valor do 2º elemento do vetor, usando as seguintes 4 formas diferentes para o fazer: v[1], p[1], *(v+1), *(p+1). f) Acrescente ao código anterior a instrução que se segue e compare os resultados com os obtidos na alínea anterior: printf("%d %d %d %d\n", v[1], p[1], *v+1, *p+1); 2. Faça o mesmo com o programa anterior mas considerando que o vetor usado é de valores reais e efetue as operações que constam nas alíneas b) a f) para este caso. 3. Indicar e justificar (através de simulação) o que faz o seguinte programa: int y, *p, x; y = 0; p = &y; x = *p; x = 4; (*p)++; x--; (*p) += x; printf ( y = %d\n, y);

Apontadores/ponteiros 2 4. Indicar e justificar (através de simulação) o que faz o seguinte programa: int *pont, cont, val; cont = 100; pont = &cont; val = *pont; printf ( %d, val); 5. Indicar e justificar (através de simulação) o que faz o seguinte programa: int x, y, *px, *py; x = 5; py = px; y = *py; printf ( %d %d, x, y); 6. Indicar e justificar (através de simulação) o que faz o seguinte programa: int x, y, *px, **py; x = 5; py = &px; y = **py; printf ( %d %d, x, y); 7. Indicar e justificar (através de simulação) o que faz o seguinte programa: char a, b, *p; b = 'c'; p = &a; *p = b; printf ( %c, a);

Apontadores/ponteiros 3 8. Considere as seguintes declarações de variáveis: int W[5], **V, M, k; e que sizeof(int) = 2. Considere o seguinte bloco de instruções em linguagem C: M = 5; for (k = 1; k < M; k++) W[k] = 5*k + 10; *W = 40; *(W-1) = 50; a) Preencha o quadro à direita tendo em conta a execução do bloco anterior. b) Usando os valores obtidos com a execução do bloco de instruções anterior, determine os valores de cada uma das expressões que constam na tabela seguinte: 9. Indicar e justificar (através de simulação) o que faz o seguinte programa: int x, y, *px, *py; printf ( Digite um valor: ); scanf ( %d, &x); y = *px; printf ( digitou = %d e y = %d\n, x, y); *px = 8; printf ( valor mudou para %d\n, x);

Apontadores/ponteiros 4 10. Indicar e justificar (através de simulação) o que faz o seguinte programa: #include <stdio.h> int i, k, *pi, *pk; char a; i = 2; k = 0; puts ( Qual será o valor de k? ); pk = &k; pi = &i; *pk = i; printf ( para *pk = I, temos k = %d\n, k); k = *pi; printf ( para k = *pi, temos k = %d\n, k); scanf ( %c, &a); 11. Escreva um programa que some dois valores inteiros. Para tal, deverá implementar e utilizar as funções seguintes: a) int *soma4 (int a, int b); b) int *soma5 (int *a, int *b). 12. Verificar que a função soma3, implementada da forma que segue, está incorreta. Explicar o comportamento indesejado utilizando, se necessário, exemplos de execução. int *soma3 (int a, int b) { int temp ; temp = a+b; return (&temp); 13. Escreva um programa que leia dois valores para duas variáveis de tipo float e troque os seus conteúdos. Deverá implementar e utilizar uma função com o seguinte cabeçalho: void trocar_float (float *x1, float *x2) 14. Escreva um programa que calcule o maior e o menor valor de um vetor de valores inteiros. Deverá implementar e utilizar uma função com o seguinte cabeçalho: void maior_menor (int X[], int N, int *maior, int *menor) Nota: o vetor deve ser construído a partir dos números inteiros que se encontram no ficheiro Inteiros.txt, que se encontra disponível a partir da página web da disciplina.

Apontadores/ponteiros 5 15. Escreva um programa que calcule o maior elemento, e o respetivo índice/posição, de um vetor de valores reais positivos. Deverá implementar e utilizar uma função com o seguinte cabeçalho: int maior_indicemaior (float X[], int N, float *maior) Nota: o vetor deve ser construído a partir dos números reais que se encontram no ficheiro ReaisPositivos.txt, que se encontra disponível a partir da página web da disciplina. 16. Escreva um programa que calcule a soma e a média de um vetor de valores inteiros positivos. Deverá implementar e utilizar uma função com o seguinte cabeçalho: void soma_media (int X[], int N, int *soma, float *media) Nota: o vetor deve ser construído a partir dos números inteiros positivos que se encontram no ficheiro InteirosPositivos.txt, que se encontra disponível a partir da página web da disciplina. 17. Construa um programa que: - leia 1 vetor de números inteiros, X, de tamanho N - crie um segundo vetor Y apenas com os números positivos do vetor X. - escreva os vetores X e Y. Para tal, implemente e use funções para as seguintes ações: a) ler um vetor V de números inteiros de tamanho N (usando memória estática) b) escrever um vetor V de números inteiros de tamanho N c) dado um vetor V de números inteiros de tamanho N, construa um vetor W com todos os números positivos do vetor V. Nota: o vetor deve ser construído a partir dos números inteiroa que se encontram no ficheiro Inteiros.txt, que se encontra disponível a partir da página web da disciplina.