Anda di halaman 1dari 17

Princípios de Programação Procedimental – Ficha 1

Ficha 1 - Introdução à Programação e


Compilação em C

1 Objectivos
 Introdução à programação em C.

 Familiarização com o ambiente Unix em linha de comandos: edição do programa,


compilação, linkagem e execução.

 Familiarização com o IDE Code::Blocks (http://www.codeblocks.org/) para C/C++.


Este IDE está disponível para os sistemas operativos Linux, Windows e MacOS.

2 Primeiros Passos no Unix

Nesta secção vão-se rever alguns dos comandos fundamentais do sistema Unix. Ao iniciar a
leitura deste documento deve arrancar o seu PC no sistema Linux e fazer "login". Caso não
pretenda instalar o Linux no seu PC. Poderá, por exemplo:

1. Utilizar o Linux das salas de aulas;


2. Correr o Live CD XUbuntu 8.10 - PPP Edition (não requer qualquer instalação no PC).
Pode fazer download da imagem do Live CD em
"http://ftp.dei.uc.pt/pub/local/cadeiras/ppp/xubuntu-8.10-desktop-i386-custom.iso" e
gravar o conteúdo num CD. Em seguida deverá fazer boot do PC a partir do CD;
3. Instalar a imagem do Live CD XUbuntu 8.10 - PPP Edition numa Pen USB e tornar a
pen "bootable". Para isso deve utilizar um PC com o Ubuntu 8.10 instalado (ou o Live
CD do Ubuntu 8.10), deve escolher a opção do menu “System/Adminstration/Create a
USB Startup Disk”, seleccionar a imagem referida em cima, a Pen a utilizar e o espaço a
usar para guardar o seus ficheiros entre sessões (para não perder informação quando
desliga o PC). Também é possível fazer este processo em Windows (mais informação
em: http://www.pendrivelinux.com/usb-xubuntu-810-persistent-install-windows/);
4. Realizar uma instalação do Live CD XUbuntu 8.10 - PPP Edition dentro de uma
máquina virtual (e.g. VirtualBox - "http://www.virtualbox.org/").
Após a realização de um destes passos deve abrir um terminal para poder executar os comandos
que se seguem.

©DEI-2009/2010 1
Princípios de Programação Procedimental – Ficha 1

2.1 ls (list)

Quando abre um terminal, a directoria actual é a directoria home. Esta directoria servirá para
armazenar todos os ficheiros que criar - por exemplo, todas as resoluções de fichas que realizar
nesta disciplina. Para saber o que existe na directoria em que se encontra actualmente deverá
executar o comando:

$ ls

O comando ls permite utilizar várias opções. Uma das mais importantes é a opção -a, que
mostra todos os ficheiros que existem na directoria, incluindo os ficheiros começados por um
ponto (.bash_profile) por exemplo. Por omissão estes ficheiros são considerados ocultos
e não são listados pelo ls. A ideia é não permitir a utilizadores inexperientes a manipulação
destes ficheiros que armazenam informação de configuração do sistema.

Outra das opções importantes do comando ls é a opção -l, que mostra os ficheiros num
formato `”longo". O formato longo inclui várias informações importantes sobre o ficheiro,
nomeadamente as suas permissões, a data em que foi criado, o seu tamanho, etc.

2.2 mkdir (make directory)

Um dos conceitos chave na organização dos conteúdos na conta de um utilizador é o de


directoria. Para criar uma nova directoria (que será uma subdirectoria de outra directoria
qualquer), utiliza-se o comando mkdir. Por exemplo:

$ mkdir ppp

Cria uma directoria que poderá utilizar para armazenar dados relativos a esta disciplina.

2.3 cd (change directory)

Para permitir a navegação entre directorias, para, por exemplo, conseguir listar conteúdos ou
acrescentar um novo ficheiro numa directoria, utiliza-se o comando cd. Por exemplo, para
entrar na directoria "ppp" (depois de ter sido criada com o comando mkdir), escreve-se:

$ cd ppp

Importa aqui referir que há duas directorias com um significado especial: as directorias . e ...
A directoria . refere-se à directoria actual, enquanto que a directoria .. refere-se à directoria
anterior. Por exemplo, se a directoria actual for /home/jose/ppp, a directoria . será a

©DEI-2009/2010 2
Princípios de Programação Procedimental – Ficha 1

própria directoria /home/jose/ppp, enquanto que .. será a directoria /home/jose. Existe


ainda a possibilidade de se executar o comando cd sem quaisquer argumentos. Nesse caso, a
directoria actual passará a ser a raiz do utilizador, neste caso /home/jose. Este comando
seria equivalente a fazer-se cd , porque o til refere-se precisamente à directoria raiz do
utilizador.

2.4 rmdir (remove directory)

O comando rmdir serve para eliminar directorias vazias. Deve ser invocado a partir da
directoria anterior àquela que se pretende eliminar. Por exemplo, o utilizador jose pode, a
partir da sua directoria raiz /home/jose, utilizar o comando

$ rm ppp

para eliminar a directoria ppp.

2.5 pwd (print working directory)

O comando pwd mostra a directoria actual. Mais concretamente o resultado deste comando
resulta na impressão de todo o caminho até à directoria actual. Por exemplo,

$ pwd

poderá ter como resposta /home/jose/ppp, se esta for a directoria actual do utilizador
jose.

2.6 cp (copy)

O comando cp serve para copiar ficheiros. Na sua forma mais simples o comando cp recebe
dois argumentos, sendo o primeiro o nome do ficheiro de origem e o segundo o nome do
ficheiro de destino. Ao nome pode-se acrescentar, na forma de prefixo, a directoria onde se
encontra um ficheiro. Se não se fizer, o comando cp procura o ficheiro na directoria actual. Se,
por exemplo, o utilizador jose invocar o comando

$ cp /etc/xinetd.conf .

o resultado será que o ficheiro /etc/xinetd.conf será copiado para a directoria actual de
jose. Este facto é indicado pelo . passado ao cp. Note-se que o segundo argumento nunca
poderá ser omitido. Seria possível ao jose alterar o nome final do ficheiro, bastando nestes

©DEI-2009/2010 3
Princípios de Programação Procedimental – Ficha 1

exemplo substituir o ., pelo nome que se pretendesse.

2.7 mv (move)

O comando mv serve para mover ficheiros de uma directoria para outra. Poderá também ser
usado para alterar nome de um ficheiro sem o mudar de directoria. Nas versões mais simples, o
comando mv é semelhante ao comando cp, pelo que não se vai detalhar aqui a sua utilização. É
preciso apenas ter em mente que o ficheiro original deixa de existir, se o comando for bem
sucedido, passando apenas a existir o ficheiro final.

2.8 rm (remove)

O comando rm serve para eliminar um ou mais ficheiros. Por exemplo, a seguinte sequência de
comandos:

$ cp /etc/xinetd.conf .
$ rm xinetd.conf

apagará o ficheiro xinetd.conf copiado para a directoria actual pelo comando cp anterior.

2.9 cat e less

Os comandos cat e less servem para mostrar o conteúdo de um ficheiro. Embora no Unix
não haja distinção entre ficheiros de texto e ficheiro binários, por norma, estes comandos são
utilizados exclusivamente em ficheiros de texto. Considere que tem um ficheiro com um
programa em C. Para poder ver o conteúdo desse ficheiro poderá utilizar o comando cat da
seguinte forma:

$ cat cliente.c

O resultado deste comando poderia ser algo como o que está representado na Figura 1.

©DEI-2009/2010 4
Princípios de Programação Procedimental – Ficha 1

Figura 1: Comando cat

No entanto, o comando cat tem um pequeno inconveniente: a listagem é efectuada a uma


velocidade que impossibilita qualquer leitura assim que o conteúdo do ficheiro ultrapassa o
comprimento do ecrã. Há muitas formas de ultrapassar este problema. Por ventura, uma das
mais simples será utilizando o comando less. Por exemplo:

$ less cliente.c

O output do comando less é exactamente o mesmo do comando cat, no entanto irá existir
uma pausa, controlada pelo utilizador, entre a exibição de cada página de texto.

©DEI-2009/2010 5
Princípios de Programação Procedimental – Ficha 1

2.10 Resumo

A Tabela 1 mostra um resumo dos comandos apresentados anteriormente.

Comando Significado
ls Lista ficheiros e directorias.
mkdir directoria Cria a directoria directoria.
cd directoria Muda a directoria para directoria.
pwd Imprime o caminho para a directoria actual.
rmdir directoria Apaga a directoria vazia directoria.
cp ficheiro1 ficheiro2 Copia ficheiro1 para ficheiro2.
mv ficheiro1 ficheiro2 Move ou renomeia ficheiro1 para ficheiro2.
rm ficheiros Apaga ficheiros.
cat ficheiros Mostra conteúdo de ficheiros.
less ficheiros Mostra o conteúdo, uma página de cada vez.

Tabela 1: Resumo de alguns dos comandos Unix mais importantes

3 Programação em C no Unix

Nesta disciplina vai poder utilizar dois tipos de ambientes para programar em C: um em linha
de comandos e outro em ambiente visual (IDE). Nos dois casos, a programação em C (bem
como em muitas outras linguagens compiladas), desde que o programador começa a escrever o
programa até que o executa, requer os seguintes passos:

1. Edição do programa;
2. Compilação e linkagem;
3. Execução do programa compilado;
4. Depuração.

O último passo poderá ser dispensado, no entanto.

Por norma, cada um destes passos é executado por um programa diferente, mas é possível que
estes programas estejam escondidos num ambiente integrado de desenvolvimento (IDE). Um
IDE permite ao programador efectuar cada um dos passos anteriores de forma relativamente
transparente e sem comutação, ou, pelo menos, com um número mínimo de comutações de

©DEI-2009/2010 6
Princípios de Programação Procedimental – Ficha 1

janelas no ambiente gráfico. No caso do Unix a execução manual destes passos é relativamente
simples e apresenta-se como muito instrutiva para um aluno que queira compreender todo o
processo de criação de um programa em C. Por esta razão apresenta-se de seguida um resumo
dos passos indicados anteriormente usando este sistema.

3.1 Compilação e linkagem com o gcc

Normalmente o primeiro passo no desenvolvimento de qualquer programa executável escrito


em C é a sua criação! No entanto, neste texto vai-se subverter um pouco esta ordem e vai-se
assumir que já existe um programa escrito em C. Poderá encontrar este programa no material de
apoio desta disciplina. O nome do ficheiro é "ola_mundo.c" e o ficheiro tem o seguinte
conteúdo:

#include <stdio.h>

int main(void) {
printf("Ola Mundo!\n");
return 0;
}

Como poderá facilmente deduzir pelo código, este programa vai limitar-se a escrever a frase
"Ola Mundo!" no monitor e terminar logo de seguida. No entanto, para conseguir que o
programa produza este efeito, precisa de o compilar, linkar e executar. Para isso vai seguir os
seguintes passos:

• criar uma directoria com o nome aula1 que poderá utilizar para efectuar todas as
experiências de que necessitar nesta aula. De preferência, esta directoria aula1 deverá
ser criada dentro duma directoria que tenha criado para esta disciplina;
• descarregar o ficheiro ola_mundo.c para a directoria que acabou de criar;
• pode ver o conteúdo do ficheiro utilizando o comando cat ola_mundo.c.

Depois destes passos o programa está pronto para ser compilado. Para compilar o programa
poderá utilizar o programa gcc (gnu compiler collection), da seguinte forma:

$ gcc ola_mundo.c

Este comando deverá correr de forma totalmente silenciosa, isto é, sem qualquer mensagem de
resposta. Para verificar o sucesso do comando poderá fazer uma nova listagem dos conteúdos
da directoria com o comando ls. Deverá ter algo como o que está representado na Figura 2.

©DEI-2009/2010 7
Princípios de Programação Procedimental – Ficha 1

Figura 2: Ficheiro a.out

3.2 Execução de um Programa

Findas as fases de edição e compilação (com sucesso) do programa é chegada a altura de o


executar. Como poderá verificar existe um novo ficheiro na sua directoria, com o nome a.out.
Este ficheiro foi criado pelo gcc e é um executável que poderá correr directamente a partir da
linha de comando. Na verdade, se fizer uma listagem longa dos conteúdos da directoria com ls
-l poderá verificar que as permissões do ficheiro a.out incluem um ou mais x, por exemplo
-rwxr-xr-x. Resumidamente, isto significa que o ficheiro pode ser executado. Para o fazer
escreve-se simplesmente:

$ ./a.out

O ./ antes do nome do programa indica que o programa que está a executar se encontra na
directoria actual.

É também possível indicar ao gcc, que se pretende um nome diferente para o ficheiro
executável. Com efeito, a.out não é muito indicativo daquilo que faz o programa, além de
que poderá querer mais do que um executável na mesma directoria. Para chamar ola_mundo
ao executável poderá utilizar a opção -o do programa gcc. Por exemplo:

$ gcc ola_mundo.c -o ola_mundo

Poderá encontrar a lista completa de opções do gcc -- que é extremamente grande --,
fazendo man gcc. A partir deste momento para executar o programa deverá escrever
./ola_mundo. O resultado obtido deverá ser semelhante ao representado na Figura 3.

©DEI-2009/2010 8
Princípios de Programação Procedimental – Ficha 1

Figura 3: Olá Mundo

3.3 Edição de Texto

Na secção anterior descarregou compilou e executou um ficheiro de C previamente


programado. No entanto, noutras circunstâncias será mesmo necessário escrever o código
utilizando para o efeito um editor de texto. O Linux oferece para esse fim um sem número de
editores de texto. A sua utilização extravasa o âmbito deste documento. Enumeram-se apenas
alguns que poderá utilizar:

• vi. Apesar de ser extremamente difícil de utilizar nas primeiras abordagens, o vi é


muito popular, porque existe em praticamente todos os sistemas Unix e é, muitas vezes
o primeiro editor de texto que um iniciado em Unix aprende. Depois de ultrapassada
uma curva de aprendizagem algo complicada a sua utilização para pequenas tarefas
acaba por ser bastante rápida e compensadora;
• emacs. Em termos de usabilidade o emacs aproxima-se bastante mais do padrão a que
um utilizador proveniente de ambientes amigáveis para o utilizador espera encontrar. O
emacs já dispõe de uma interface gráfica, que permite a utilização do rato para várias
operações. Um pequeno senão é o facto de utilizar combinações de teclado
(nomeadamente para fazer o copy-paste) que se podem considerar não padronizadas.
Algumas das grandes vantagens do emacs são a enfatização da sintaxe (syntax
highlighting) e a indentação automática (características que algumas das versões
melhoradas do vi também apresentam);
• os ambientes gráficos do Linux incluem, desde há vários anos, outros editores de texto
que também são adequados à programação em C (gedit, por exemplo).

Alguns dos aspectos a ter em conta na escolha do editor de texto são precisamente a enfatização
da sintaxe e, sobretudo, a indentação automática. Não será demais realçar a importância da
indentação automática, na medida em que esta favorece muito a detecção rápida de alguns tipos
de erros, normalmente relacionados com colocação incorrecta de chavetas. A ausência desta
característica implica que todos os erros relacionados com faltas de chavetas ou chavetas a
mais, por exemplo, sejam detectados apenas no momento da compilação, sendo que as
mensagens debitadas pelo gcc poderão não apontar para o sítio onde se encontra efectivamente
o problema. Isto significa que um utilizador inexperiente pode perder bastante tempo a resolver

©DEI-2009/2010 9
Princípios de Programação Procedimental – Ficha 1

problemas que de outra forma nem existiriam. No pior dos casos, este tipo de erros poderá
chegar indetectado até ao momento da execução, podendo trazer consequências bastante
negativas.

3.4 Utilização de um Debugger

Um dos programas que terá maior preponderância no desenvolvimento de quase todos os


programas com dimensão ou complexidade relevantes será o debugger. Um debugger serve
para ajudar o programador a eliminar erros que sejam detectados num executável. Um dos
debuggers mais conhecidos que existem é o gdb. O gdb é controlado através da linha de
comando, razão pela qual a sua utilização é relativamente complexa. Por esta razão existem
outros debuggers que oferecem uma interface gráfica, que possibilita a utilização do rato, a
visualização de estruturas de dados e outras facilidades. Um destes debuggers é o ddd (Data
Display Debugger).

4 Exercícios

1. Para exercitar os comandos Unix que aprendeu anteriormente vá à página da disciplina e


descarregue o ficheiro AulaPratica1.zip relativo à aula 1. Crie uma estrutura de
directorias como a que está representada na Figura 4.

Figura 4: Árvore de directorias a criar.

2. Apague agora a directoria aula1. Na verdade não vai necessitar desta directoria,
porque quando expandir o ficheiro AulaPratica1.zip a directoria vai ser criada
automaticamente.
3. Mova o ficheiro AulaPratica1.zip para a directoria ppp. Expanda o ficheiro
utilizando o comando
$ unzip AulaPratica1.zip
No fim, certifique-se de que a árvore de directorias obtida está de acordo com a Figura
4.
4. Mude para a directoria aula1. Verifique o conteúdo da directoria.
5. Se ainda não compilou e executou o programa ola_mundo.c faça-o agora.
6. Edite o programa bom_em_C.c, para que o programa escreva o seu nome. Compile o

©DEI-2009/2010 10
Princípios de Programação Procedimental – Ficha 1

programa, dando o nome bom_em_C ao executável.


7. Compile e execute o programa pequeno_bug.c. O que se passa de errado? Como é
que pode detectar este tipo de problemas no editor de texto que usa?
8. Tente compilar o programa idade.c. Corrija o erro e volte a tentar.
9. Escreva, desde o seu início, um programa que escreva o nome e as idades de alguns dos
seus colegas. Não deverá escrever a idade directamente no texto que fornece ao
printf(). Em vez disso, deve guardar cada uma das idades numa variável diferente, à
semelhança do que se faz no programa idade.c.

5 Code::Blocks

O Code::Blocks é um “Integrated Development Environment” (IDE) que se destina a


simplificar o desenvolvimento de programas em C e que pode ser executado no sistema
operativo Linux, entre outros. O seu nome é Code::Blocks e a sua utilização é bastante simples.
No entanto, embora o Code::Blocks permita compilar ficheiros .c individualmente e realizar a
execução do ficheiro gerado, para conseguir utilizar o debugger é necessário criar um projecto.

Figura 5: Diálogo para a criação de um novo projecto

Para criar o seu primeiro programa, comece por iniciar o Code::Blocks. No menu da janela
principal do IDE seleccione “File/New/Project”'. O diálogo para a criação de um novo projecto
(Figura 5) deverá aparecer no ecrã.

©DEI-2009/2010 11
Princípios de Programação Procedimental – Ficha 1

Seleccione a categoria “Console” na lista de categorias “Category”. Deverão aparecer apenas


cinco tipos de template de projectos na janela. Escolha o tipo “Console Application”. De
seguida, deverá aparecer o diálogo para configuração do novo projecto. Clique em “Next” no
primeiro ecrã, seleccione “C” no segundo ecrã e clique “Next”. No terceiro ecrã introduza
“Ficha01” em “Project Title” e escolha a localização onde deverá ser criada a directoria do
projecto (se estiver a correr este programa utilizando o Live CD poderá gravar o projecto
directamente numa Pen USB). De seguida, clique em “Next” e no último ecrã em “Finish”.

Neste momento, tem um projecto com um ficheiro de código fonte pronto a ser compilado e
executado. Se expandir o item “Sources” na janela de navegação do projecto no lado esquerdo
do ecrã verá que foi criado um ficheiro com o nome “main.c”. Clique duas vezes sobre este
ficheiro e o código ficará visível no ecrã (ver Figura 6).

Figura 6: Visualização do código no ficheiro main.c.

Para compilar e executar o programa em main.c basta pressione F9 (Build and Run). A
execução do programa resulta na abertura duma nova janela onde será possível ao utilizador
interagir através do teclado. É importante realçar que não poderá voltar a executar o programa
enquanto não terminar a execução anterior. A janela fecha-se premindo qualquer tecla após a
conclusão do programa. O output exibido na nova janela é visível na Figura 7.

©DEI-2009/2010 12
Princípios de Programação Procedimental – Ficha 1

Figura 7: Output da execução do programa em main.c

Neste programa (gerado automaticamente) não existem erros de execução. No entanto, quanto
maior é a complexidade de um programa maior é a probabilidade de haver erros durante a sua
execução. Se encontrar erros na execução do seu programa poderá ser necessário utilizar o
"debugger". O Code::Blocks possui um interface de depuração muito completo que utiliza o
gdb. Comece por executar o seu programa em modo de "debug", para isso basta pressionar F8.
Pode verificar que o seu programa executou sem paragens e terminou sem que pudesse verificar
o output. Se quiser introduzir paragens na execução do programa durante o debug
(breakpoints), deve utilizar o botão esquerdo do rato para clicar na posição do código onde
pretende introduzir o breakpoint - deve fazê-lo na zona cinzenta imediatamente à direita do
número da linha (Figura 8). Nesse momento aparecerá nessa localização uma bola vermelha
(Nota: o procedimento para “desligar” um breakpoint é o mesmo). Pode reiniciar a execução
pressionando F8. Vai verificar que a execução pára imediatamente antes de executar a instrução
“marcada”. Para controlar a execução em debug pode utilizar o seguinte conjunto de teclas:
CTRL+F7 – Continuar até ao próximo breakpoint ou até ao fim do programa; F7 – Executar a
próxima linha; SHIFT+F7 – Executar a próxima linha dentro do método invocado;
SHIFT+CTRL+F7 – Executar a próxima linha dentro do método que invocou o método
corrente.

©DEI-2009/2010 13
Princípios de Programação Procedimental – Ficha 1

Figura 8: Criação de um breakpoint

Se quiser saber o valor de algumas variáveis durante a execução deverá colocar "watches" para
essas variáveis e "breakpoints" nos locais onde pretende parar a execução do debug. Para o
fazer introduza os breakpoints que deseja, de seguida pressione F8 para iniciar a sessão de
debug. Quando a execução parar, clique com o botão direito sobre o nome da variável a
“vigiar”. Irá aparecer um menu onde deve seleccionar “Watch 'nome da variável'”. De seguida,
vá ao menu “Debug/Debugging Windows” e seleccione “Watches”. Irá aparecer uma nova
janela no ecrã onde será visível o valor da variável. Para ilustrar esta operação construiu-se o
exemplo da Figura 9.

Figura 9: Adicionar um watch sobre uma variável

©DEI-2009/2010 14
Princípios de Programação Procedimental – Ficha 1

É possível adicionar mais ficheiro de código (.c ou .h) ao seu projecto. No entanto, só pode
existir uma função main() dentro de cada projecto. Se tiver mais do que um main() em
vários ficheiros, o seu projecto não compilará. Deverá nessa altura comentar os main que não
interessam. Para comentar seleccione toda a função com o rato e pressione SHIFT+CTRL+C
(esta operação irá introduzir os caracteres “//” no início de cada linha seleccionada). Para
remover os caracteres de comentário, volte a seleccionar o código pretendido e pressione
SHIFT+CTRL+X.

Para adicionar novos ficheiros ao seu projecto, vá ao menu “File/New/File...”, seleccione o tipo
de ficheiro que quer criar (.h ou .c) e clique em “Go”. Depois comece por clicar em “Next”,
escolha a opção “C” na lista exibida, clique “Next”, introduza o caminho e o nome para o novo
ficheiro, clique “All” e “Finish” para terminar.

Imagine que se pretendia agora que escrevesse um programa para calcular a área de um
quadrado a partir do valor do lado que é pedido ao utilizador. Em Python e usando o Dr. Phyton
como IDE viria:

Figura 10 – Programa que calcula a área de um quadrado em Python.

Depois de pedir ao utilizador o valor do lado, que guarda numa variável lado, faz o cálculo e
apresenta o resultado. Em C a situação é semelhante, como pode verificar na Figura 11:

©DEI-2009/2010 15
Princípios de Programação Procedimental – Ficha 1

Figura 11 – Programa que calcula a área de um quadrado em C.

No entanto, há algumas diferenças. As principais são:

• As variáveis usadas têm que ser declaradas (lado e area);

• Para imprimir um varlor usa-se a instrução printf;

• Para ler um varlor usa-se a instrução scanf;

• Estas instruções usam especificadores de formato associados (%) que indicam o


tipo de variável a ler/escrever;

• As instruções terminam com ; (ponto e vírgula);

• Todo o código deve estar escrito dentro de um módulo chamado main() que
devolve 0. Podem existir, no entanto, outros módulos num programa.

©DEI-2009/2010 16
Princípios de Programação Procedimental – Ficha 1

6 Exercícios

1. Utilizando o Code::Blocks, escreva um programa que escreva o seu nome.

2. Altere o programa anterior para escrever também a sua idade e o seu peso no ecrã. Deve
utilizar variáveis para armazenar esta informação. Para guardar o peso deve utilizar uma
variável do tipo float. A chamada ao printf() deverá ter o seguinte aspecto:
printf("Chamo-me Jose, tenho %d anos e peso %.2f Kg", ...), onde as reticências devem
ser substituídas pelas variáveis adequadas.

3. Altere o programa anterior de modo a que o programa pergunte todos os dados


utilizando o scanf() antes de os imprimir no ecrã.

4. Escreva um programa que leia dois números inteiros e que calcule e imprima no ecrã o
resultado da sua divisão. Mude o tipo de um dos números para float e mande executar
de novo o programa. O que pode verificar?

5. Escreva um programa que leia três números inteiros e calcule a sua média apresentando
o resultado no ecrã.

6. Construa um programa que determine o menor número de notas e de moedas a devolver


de troco para uma compra inferior a 100 euros.

©DEI-2009/2010 17

Anda mungkin juga menyukai