PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

Documentos relacionados
PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

Computação e Programação Exame Época de recurso

Aula 3:Introdução à Linguagem C

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

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

Aula 3 Constantes e funções de E/S

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

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

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Introdução a linguagem C. Introdução à Programação 06/07

1 Exercícios com ponteiros

Introdução à Programação. Ciclos 1ª parte

UNIVERSIDADE DA BEIRA INTERIOR

Computação 2. Aula 8. Profª. Fabiany Arquivos

1 Exercícios com ponteiros

Programação: Vetores

Relatório Trabalho Final Reservas de Viagens de Avião

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

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

Fundamentos de Programação 1

1ª Lista de Exercícios

Aula teórica: /6. Enunciado

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Algoritmos e Programação

Computação 2. Aula 9. Diego Addan Arquivos

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

3.1 - Funções para manipular dados de entrada e saída padrão

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 2º Semestre 2013/2014

Apontadores/ponteiros

Linguagem C. André Tavares da Silva.

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná

Aula 24 Ponteiros, vetores e structs

Introdução à linguagem C

Aula 20: Matrizes (Parte 2)

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

C Comandos de Controle

#include <stdio.h> main() { int i; // Cabeçalho for (i = 1; i <=20; i++) putchar( * ); putchar( \n ); puts( Numeros entre 1 e 5 );

Introdução à Programação em C

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

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 1º Semestre 2007/2008

C/C++; biblioteca stdio

DAS5102 Fundamentos da Estrutura da Informação

Faculdade de Computação

Computação e Programação Exame Época de recurso

Conceito de procedimentos e funções

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

Introdução à Programação. Ciclos 2ª parte

Funções de Entrada e Saída

Computação 2. Diego Addan Aula 3. Funções

Linguagem C Entrada/Saída (console)

12 - Dados Estruturados Vetores, Matrizes e Strings

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Recursão em C

Algoritmos e Programação

Escreva a função e_caracter que verifica se um determinado caracter é um numero ou não. Escreva um Programa de teste da função.

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

Introdução à Programação em C

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

Introdução à Programação em C (II)

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

COMPUTAÇÃO E PROGRAMAÇÃO

Funções em Linguagem C Parte II

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

Modularidade - Funções e Procedimentos

INF 1620 P1-18/09/04 Questão 1 Nome:

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

Conhecendo a Linguagem de Programação C

Programação de Computadores I Funções Básicas da Linguagem C PROFESSORA CINTIA CAETANO

Computação 2. Aula 7. Profª. Fabiany Ponteiros

ponteiros INF Programação I Prof. Roberto Azevedo

C Comandos de Controle

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Sumário. Ficheiros. Ficheiros

Introdução à Programação. Strings

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Primeira Prova 05 de abril de 2010

Computação Informática

Programação de Computadores I Funções na Linguagem C PROFESSORA CINTIA CAETANO

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

Controlo de Execução. K&R: Capitulo 3

Programação. MEAer e LEE. Bertinho Andrade da Costa. Instituto Superior Técnico. Argumentos da linha de comando Funções recursivas

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

CCO 016 Fundamentos de Programação

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

J. L. Rangel 1. Escreva um programa em C que lê três números inteiros do teclado, e imprime os três números em ordem crescente.

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Reinaldo Gomes Alocação Dinâmica

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Linguagem C: Introdução

Material sobre Funções AEDS 1

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

1 Questões de Múltipla Escolha

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

Programação estruturada

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

Transcrição:

Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 2º semestre Trabalho nº 5 Funções e Vectores http://tele1.dee.fct.unl.pt/pm Paulo da Fonseca Pinto Luis Bernardo

1 Introdução Nos capítulos 5 e 6 do livro Linguagem C de Luís Damas, recomendado para a disciplina de Programação de Microprocessadores, são apresentados respectivamente os funções e vectores. Esta aula visa consolidar estas matérias através de um conjunto de exercícios. Faça todos os exercícios pedidos em ficheiros separados e GUARDE O CÓDIGO desenvolvido na memória USB. Durante a aula o docente pode pedir-lhe para mostrar o código desenvolvido. 2 Como escrever um ficheiro com funções? 2.1 ONDE COLOCAR AS FUNÇÕES? Uma pergunta pertinente quando se escreve o código de um programa com funções é saber onde colocar as funções e o main. Deve ser como está mostrado em baixo à esquerda, ou à direita? main () int i= 4, n=2; escreve_num (i, n); void escreve_num (int a, b) printf ("N1 = %d, N2 0 %d\n, a, b); void escreve_num (int a, b) printf ("N1 = %d, N2 0 %d\n, a, b); main () int i= 4, n=2; escreve_num (i, n); O compilador de C vai percorrendo o ficheiro do princípio ao fim, compilando o programa. Se usarmos o modo à esquerda, quando o compilador encontra a função escreve_num, como ainda não a conhece, admite que ela devolve int. É assim que o compilador de C funciona! Quando chega à função propriamente dita repara que devolve void, e que tem o mesmo nome de uma outra que ele já conhece mas que devolve int. Ora não se pode ter duas funções diferentes com o mesmo nome. O compilador detecta um erro! Existe uma solução: Escrever um protótipo da função escreve_num antes do main para indicar ao compilador que escreve_num devolve void. Ora quanto mais se escreve, mais se erra! Se a meio de programar decidirmos mudar alguma coisa na função temos de ir mudar o protótipo. Assim, deve-se usar o modo de escrita apresentado à direita. O main é sempre a última função no ficheiro e sempre que se chama uma função, chama-se para cima (isto é, o código dela está escrito em cima). Deste modo não são precisos os protótipos. SIMPLES, não é? 2

2.2 AH! AS VARIÁVEIS GLOBAIS É proibido usar variáveis globais em Programação de Microprocessadores. Simples, não é? 3 A tabuada Pretende-se utilizar o código seguinte, sem alterar qualquer linha já escrita, para fazer a tabuada. Acrescente o que for preciso num ficheiro tabuada.c. /* * Tabuada * Ficheiro: tabuada.c */ #include <stdlib.h> /* define exit() para sair do programa */ int mult (int a, b) return a*b; main () int n; printf ("Que tabuada quer (1 a 9)? : "); if (scanf (" %d", &n)!= 1) /* Se não leu um elemento */ printf ("Leitura do limite inválida\n"); exit (1); /* Sai do programa */ if ((n < 1) (n > 9)) printf ( Número incorrecto. Tente outra vez\n ); exit (1); tabuada (n); O programa deve proceder como este exemplo. Pode depois mudar o código para ficar sempre a perguntar. Que tabuada quer (1 a 9)? : 5 5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 5 x 6 = 30 5 x 7 = 35 5 x 8 = 40 5 x 9 = 45 Que tabuada quer (1 a 9)? : 3

4 A aversão aos a Pretende-se fazer um programa que manipule um vector de caracteres, chamado linha.c (não é uma string de caracteres). Existem as funções seguintes: A função main é simplesmente a chamada a procedimentos; menu contém o menu e devolve a opção escolhida pelo utilizador; limpar_vector (coloca em cada elemento do vector o carácter espaço em branco); ler_vector (pede ao utilizador que escreva um texto que coloca no vector. O texto é lido com getchar e todos os caracteres que o utilizador escrever acima do tamanho do vector são ignorados. Se o utilizador não escreveu os suficientes ficam os que estavam no vector); imprimir_vector (imprime o vector no ecrã usando putchar. Imprime todos os caracteres); substitui_vector (substitui todas as ocorrências de um carácter a pelo carácter b, em que a e b são fornecidos na lista de argumentos. Retorna o número de substituições feito, que a função main escreve no ecrã); conta_caracter (conta quantas ocorrências do carácter a existem no vector, retornando esse valor, que a função main escreve no ecrã). O vector tem tamanho TAM. 5 Padrões e padrões O objectivo do próximo programa é generalizar o problema anterior. Considere um vector a duas dimensões, uma matriz, de caracteres com a dimensão TAM x TAM. Chame ao ficheiro padrao.c. Considere que se numeram as linhas da primeira para a última (de cima para baixo) desde o valor zero a TAM-1 as colunas da esquerda para a direita do mesmo modo as diagonais do modo como mostra a figura seguinte (a diagonal principal tem a identificação de zero; as diagonais para cima são positivas; as diagonais para baixo são negativas) O que se pretende é que faça um programa que trabalhe sobre a matriz e que faça o seguinte: escrever_coluna esta função escreve o carácter a (parâmetro de entrada) na coluna i (também parâmetro de entrada); escrever_linha esta função escreve o carácter a (parâmetro de entrada) na linha i (também parâmetro de entrada); escrever_diagonal esta função escreve o carácter a (parâmetro de entrada) na diagonal i (também parâmetro de entrada); limpa_matriz esta função coloca todos os valores da matriz com o carácter a (parâmetro de entrada) escreve_matriz esta função escreve a matriz no ecrã para o utilizador ver os disparates que anda a fazer. menu esta função contém o menu das hipóteses anteriores main só chama funções 4

-2-1 2 1 0 Uma linha da matriz é, de facto, um vector. Mude então a função escrever_linha para que tenha como parâmetro de entrada um vector (cuja dimensão é dada como parâmetro) em vez de uma matriz. Será que pode mudar a função que trata as colunas do mesmo modo? Experimente Está num curso científico 6 Mais exercícios Se quiser mais exercícios com vectores e funções pode usar os seguintes enunciados de anos anteriores http://tele1.dee.fct.unl.pt/pm_2007_2008/laboratorio/pm_aula3_20072008.pdf e http://www.uninova.pt/~jab/pm/downloads/files/pm_aula4_20082009.pdf 5