Prévia do material em texto
I C – 2 o S e m - 2 0 2 2 – P r o f . A n d r é A m a r a n t e – L A B 0 3
O que é um nome? O que chamamos
rosa não cheiraria igualmente doce em
outro nome? W. Shakespeare.
PRINTF
O comando printf é capaz de imprimir uma
mensagem na tela, bem como o comando
puts, que além de imprimir a mensagem na
tela pula uma linha automaticamente. O
printf também pode pular uma linha desde
que seja utilizado o tag “\n”. Portanto, os
programas P1 e P2 são equivalentes:
Programa P1: Pulando uma linha.
#include <stdlib.h>
#include <stdio.h>
main()
{
puts("Pula");
system("pause");
}
Programa P2: Idem com printf.
#include <stdlib.h>
#include <stdio.h>
main()
{
printf("Pula \n");
system("pause");
}
Observe que a tag \n também poderia
funcionar em conjunto com o comando
puts, tal que duas linhas seriam puladas. Ou
seja, todas as tags usadas com printf também
causam o mesmo efeito quando usadas com
puts.
Na verdade, o símbolo \ indica que um
caractere especial será impresso. Assim,
quando se quer imprimir o caractere
correspondente ao enter (que pula uma linha)
usa-se \n. Outros comandos especiais estão
descritos na Tabela T1.
Tabela T1: Tags para comandos de
impressão.
Tag Ação
\n nova linha(enter)
\t tabulação
\b retrocesso(backspace)
\a alerta(sinal sonoro)
\r início da linha
\” exibe o caractere “
\\ exibe o caractere \
%% exibe o caractere %
É importante notar que o caractere % pode
ser utilizado para delimitar comentários e ao
invés de se utilizar \% para imprimir o
mesmo em uma mensagem de texto, deve-se
utilizar %%. Para testar os comandos da
Tabela 1 desenvolva programas que realizam
as tarefas dadas a seguir.
Programa P1: Teste printf(" \" \\ \n ");.
O que irá aparecer na tela ?
Programa P2: Escreva um programa que
coloque na tela a seguinte frase:
Bem-vindos ao /Mundo \da programação
em “C”
Programa P3: Escreva um programa que
coloque na tela a seguinte tabela de saída:
Total = 100%
IVA = 17%
IRS = 15%
-----------------------
Liq. = 68%
Programa P4: Escreva um programa que
coloque na tela a seguinte tabela de saída e
depois emita um sinal sonoro.
Valor => 300.23 R$
IOF => 2%
IRS => 15%
----------------------------
Valor Liq. => 250.09
VARIÁVEIS
Uma variável nada mais é que um nome
dado a uma determinada posição de
memória para guardar um valor de um
determinado tipo. Em C existem quatro tipos
de dados básicos: char (tipo caractere), int
(tipo inteiro), float (tipo precisão simples) e
double (tipo precisão dupla)1. A declaração
de variáveis sempre tem que ser feita antes de
sua utilização e antes de qualquer instrução.
A sintaxe para declaração de variáveis é a
seguinte:
1 Existe ainda um outro tipo básico – o tipo
Ponteiro. Este tipo de variável serve para
armazenar o endereço de memória de uma outra
variável.
I C – 2 o S e m - 2 0 2 2 – P r o f . A n d r é A m a r a n t e – L A B 0 3
2
Exemplo 1: Declaração de variáveis
main()
{
/* Declaração de variáveis */
int i;
char ch1, ch2;
float pi, raio, area;
double total;
/* Instrucoes manipulam as variaveis */
}
No exemplo 1 acima foram declaradas as
seguintes variáveis: variável i que vai
armazenar um valor do tipo inteiro. Variáveis
ch1 e ch2 que vão armazenar valores do tipo
caractere (letras). Variáveis pi, raio, area que
vão guardar valores do tipo real e por último
a variável total que vai guardar um valor real
com dupla precisão. Observe então que i,
ch1, ch2, pi, raio, area e total são os nomes
das variáveis. Nomes esses dados pelo
programador.
Para se escolher os nomes de variáveis
devem ser observadas as seguintes regras:
1.O nome deve sempre começar por uma
letra do alfabeto (a...Z), seguidos ou não de
dígitos (0...9) ou _ .
2.O primeiro caractere não pode ser um
dígito.
3.Com exceção do underline _, não se pode
usar nenhum caractere especial, como por
exemplo *, %, $, virgula e o ponto final.
4.Maiúsculas e minúsculas representam
caracteres diferentes, logo são consideradas
variáveis distintas, então Valor valor.
5.Uma variável não pode ter por nome uma
palavra reservada da Linguagem C, tais como
float, if, for, e while.
ATRIBUIÇÃO DE VALORES AS
VARIÁVEIS
Sempre que uma variável é declarada, é
solicitado ao compilador para reservar um
espaço de memória para armazená-la. Pense
nesse espaço de memória como sendo uma
caixinha que possui um nome (nome da
variável) e que será guardado dentro dela um
valor (o conteúdo da variável). Esse valor
pode ser acessado através do nome da
variável.
Então quando uma variável é declarada, é
criada uma caixinha para guardar o valor
dessa variável. Se não for atribuído nenhum
valor a essa variável e se for feito um
comando para imprimir o seu conteúdo, o
que será impresso é um número qualquer
que é considerado um lixo. Este lixo é o
resultado do estado aleatório dos bits que
constituem esse espaço de memória. Teste o
programa P4 para confirmar isto.
Programa P4: Complete o programa abaixo
e verifique o que é impresso para as variáveis
var1, var2, e var3?
main()
{
int var1, var2, var3;
var2 = 56;
printf(“valor de var1 = %d \n”, var1);
printf(“valor de var2 = %d \n”, var2);
printf(“valor de var3 = %d \n”, var2);
}
Você acha que está correto? Sim, não por
que? Reflita e observe que se deve tomar
muito cuidado pois toda variável deve ter, em
alguma parte do programa, um valor a ela
atribuído. A variável que não tem nenhum
valor atribuído provoca erros de lógica no
programa; erros esses, difíceis de serem
encontrados.
A quantidade de espaço de memória
(tamanho da caixinha) destinada a cada tipo
de variável está relacionada com a
representação binária da mesma pelos bytes
(cada byte corresponde a oito bits, ou seja, a
oito posições que podem ser valores 0 ou 1).
Por exemplo, uma caixinha para guardar uma
variável do tipo inteiro (int) tem o tamanho
de 4 bytes. Já, uma variável do tipo caractere
(char) tem o tamanho de 1 byte.
Uma variável também pode receber um valor
no momento em que é feita a sua declaração.
Neste caso dizemos que ela foi iniciada
automaticamente.
int num = -17 ;
Em C também é possível atribuir o mesmo
valor a várias variáveis. Veja o que ocorre ao
se usar as seguintes atribuições, para tanto
complete e teste o programa Programa P5.
Observe que para testá-lo é preciso colocar
os comandos para imprimir as variáveis.
Programa P5: Complete e teste o programa
int a, b, c, d;
a = 1;
b = 2;
c = 3;
d = 4;
a = b = c = d = 5;
I C – 2 o S e m - 2 0 2 2 – P r o f . A n d r é A m a r a n t e – L A B 0 3
3
OPERAÇÕES
Observe que qualquer operação com inteiros
retorna um inteiro. As operações que podem
ser realizadas são:
Operações O1
Opr Descrição Exemplo Resultado
+ Soma 21 + 4 25
- Subtração 21 – 4 17
* Multiplicação 21 * 4 84
/ Divisão 21 / 4 5
% Resto da
Divisão
Inteira
21 % 4 1
Para escrever inteiros na tela use o comando
printf e o comando %d (como descrito no
programa P4). Ou seja, a sintaxe é dada por:
int var2 = 56;
printf(“O valor de var2 = %d \n”, var2);
Na tela irá aparecer a mensagem:
O valor de var2 = 56
Para se imprimir o valor contido na caixinha
da variável var2, e não a sua string; é
necessário usar o operador %d que significa
“imprima aqui o valor de variável inteira,
contido na memória (caixinha)”.
Para imprimir dois ou mais valores; com o
mesmo comando printf, basta associar aos
pares os comandos %d com as variáveis, tal
que o primeiro %d corresponde a primeira
variável e assim por diante. Use o programa
P6 para verificar isto.
Programa P6:Complete e teste o programa:
# include <stdio.h>
main()
{
int n1, n2;
n1 = 1;
n2 = 2;
printf(“O resultado de %d + %d = %d \n
”, n1, n2, n1+n2);
}
Para ler os valores das variáveis e guardá-los
na memória (caixinha) existe a função scanf.
O scanf pega por exemplo um valor que foi
digitado na tela e o guarda na memória
(coloca na caixinha).
Seja o exemplo 2 abaixo, onde foi declarada a
variável inteira num. A linha de comando
scanf(“%d”,&num); ordena ao computador
que vá na tela do computador, leia o número
inteiro que estiver lá e o coloque na caixinha
da variável num. O símbolo “%d” é que
indica que o número a ser lido é um inteiro,
e &num, indica onde o valor lido deve ser
armazenado, neste caso, na caixinha cujo
nome é num. Se o número a ser lido fosse
um float, teria que ser usado “%f”, e para
uma variável do tipo char, usa-se “%c”.
Exemplo 2: Comando de leitura de dados
int num;
scanf(“%d”,&num);
Confirme a afirmação anterior com P7:
Programa P7: Teste o programa:
# include <stdio.h>
# include <stdlib.h>
main()
{
int num;
printf(“Introduza um No: ”);
scanf(“%d”,&num);
printf(“O resultado e %d \n ”, num);
system(" pause");
}
Da mesma forma que um comando printf
pode imprimir dois ou mais valores, o
comando scanf pode ler dois ou mais
valores. Por exemplo:
scanf(“%d%d”, &n1, &n2);
Neste exemplo o comando scanf vai pegar
dois números na tela e armazená-los nas
caixinhas n1 e n2 respectivamente. Confirmar
isto com o programa P7.
Programa P8: Refaça programa P6 usando o
comando scanf para ler os valores de n1 e n2 .
Observe que para ler qualquer variável do tipo
int, char, float ou double, utilizando a função
scanf é preciso colocar após cada variável o &
(“E” comercial)2.
Atenção, não se confunda, não se
utiliza o “E” comercial (&) no
printf.
O operador sizeof() fornece o número de
bytes que uma dada variável ocupa, isto é
fornece o tamanho da caixinha que vai
armazenar a variável. Utilize o programa P9
para confirmar isto.
2 O símbolo & significa endereço de memória. Este
operador será melhor comentado em outros Labs.
I C – 2 o S e m - 2 0 2 2 – P r o f . A n d r é A m a r a n t e – L A B 0 3
4
Programa P9: Sabendo que o comando
sizeof(var1) retorna o número de bytes que ao
variável var1 ocupa em C, crie um programa
que imprime o tamanho de todos os tipos
básicos de variáveis (int, double, float, char).
A impressão (com printf) e a leitura (com
scanf) de números reais (tipo float ou
double) pode ser feita com o uso de “ %f ”
(use P10). Para caracteres basta usar “ %c ”
(use P11).
Programa P10: Teste o programa para
verificar se ele tem algum erro e se este for o
caso, corrija-o.
# include <stdio.h>
# include <stdlib.h>
main()
{
float d, p;
printf(“Entre com o valor inicial: \n”);
scanf(“%d”,&d);
p = d + 0.01*d;
printf(“Valor final = %f \n ”, p);
system(" pause");
}
Programa P11: Crie um programa que lê um
caractere e o imprime dentro de uma
mensagem.
Um resumo dos códigos e as variáveis que eles
exibem são dados na Tabela T2:
Tabela T2: Códigos para impressão de
valores das variáveis.
Código Exibição
%d número inteiro
%f número de ponto flutuante
%e notação científica
%c caractere simples
%s cadeia de caracteres
%o representação octal
%x representação hexadecimal
%% exibe o caractere %
PROGRAMAS BÁSICOS
Programa PB1: Sabendo que a fórmula
de conversão de graus para fahrenheit é
dada por F = (9C + 160)/5, crie um
programa que lê o valor em graus e
imprime seu valor correspondente em
fahrenheit.
Programa PB2: Baseado no P10 construa
um programa que forneça o saldo de uma
caderneta de poupança remunerada em 1%
ao mês após três meses (dica: use %f no
scanf).
(a) Teste para vários valores iniciais (500,
1000, 2000).
(b) Permita a leitura simultânea do valor
inicial e da taxa de juros (use taxas de 1% e
10%).
Para fazer o PB2, lembre-se que a fórmula
para o cálculo de juros composto é:
SF=SI(1+taxa)tempo
O comando em C que calcula potência é o
pow. Para se calcular, por exemplo (3)4 , e
armazenar o resultado na variável conta
faz-se: conta=pow(3,4). Mas para se usar
esse comando é necessário colocar no
programa a biblioteca math.h, isto é, é
preciso acrescentar no inicio do programa
a linha #include<math.h>.
Programa PB3: Escreva um único
programa que execute as seguintes tarefas:
a) Leia o valor das variáveis X e Y a
partir da tela, em seguida subtraia do
valor de X o valor 10. Depois faça a
soma de Y com o novo valor de X
elevado ao quadrado e guarde o
resultado dessa operação em W.
b) Divida o valor da variável X obtida no
item (a) pelo valor da variável Y.
Extraia a raiz quadrada dessa divisão e
então multiplique-a pela metade do
valor da soma de X e Y. Guarde o final
dessa operação em W.
c) Somar ao valor da variável X elevado
ao cubo o resultado da diferença de X
e Y e guarde o valor resultante na
variável K.
d) Imprima os valores de W e K, obtidos
em cada item.
OBS: para se extrair a raiz quadrada de um
número M qualquer, faz-se sqrt(M) e aqui
também é necessário usar
#include<math.h>, pois esse comando
faz parte da biblioteca math.h
Programa PB4: Escreva um programa em
C para executar as seguintes ações:
a) Leia um valor para X. Se X < 0
escreva uma mensagem dizendo que o
valor é negativo e peça para digitar um
valor positivo e imprima o novo valor
digitado.
b) Se X está entre 0 e 10, imprima uma
mensagem dizendo que X está entre 0
e 10, seguido do valor de X.
I C – 2 o S e m - 2 0 2 2 – P r o f . A n d r é A m a r a n t e – L A B 0 3
5
c) Se X está entre zero e 100, imprima
“O valor de X está entre zero e 100. X
= . Se X > 100, imprima ” O valor
de X eh maior que 100, X= “ , e
emita 7 sinais sonoros.
Para fazer os programas PB4, PB5, PB6
e PB7, que virão a seguir, você vai precisar
utilizar a estrutura: se-então-senão, cuja
sintaxe na linguagem C é a seguinte:
if (condição)
{
comando do então (condição verdadeira);
}
else
{
comando do senão (condição falsa);
}
Então observe atentamente e procure
compreender o Programa PB4,
mostrado abaixo, de modo que você
consiga programar os demais.
Programa PB4
#include <stdio.h>
#include <stdlib.h>
main ( )
{
int X;
printf ("Digite um numero para X: ");
scanf ("%d", &X);
if (X < 0) {//inicio então
printf ("\n\nVoce digitou um numero
negativo\n");
printf ("Por favor, digite um numero
positivo\n");
scanf ("%d", &X);
}//fim então
if (X <= 10)
{printf ("\n\n O valor de x esta entre
zero e dez! X=%d\n",X);}
else if(X <= 100)
printf ("O valor de X esta entre zero
e 100. X=%d\n", X);
else printf ("O valor de X eh maior
que 100. X=%d\a\a\a\a\a\a\a\n", X);
system("pause");
}
Programa PB5 As raízes de uma equação
quadrática da forma ax2+ bx +c = 0 são
reais se e somente se o discriminante dado
por b2 – 4ac for maior ou igual a zero.
Fazer um programa em C para ler os
valores dos coeficientes a, b, c e imprimir
o valor do discriminante dizendo se as
raízes são reais ou não. Se as raízes forem
reais, calcular as raízes.
Programa PB6 Preparar um programa em
C para ler os comprimentos dos três lados
de um triângulo (S1, S2, e S3) e calcular a
área do triângulo de acordo com a
fórmula:
)3)(2)(1( STSTSTTárea −−−=
onde 2
321 SSST
++
=
Programa PB7 Preparar um programa em
C para ler os comprimentos dos três lados
de um triângulo (S1, S2, e S3) e determinar
que tipo de triângulo tem-se, com a base
nos seguintes casos. Sejam A o maior dos
lados de S1, S2, e S3 e B e C os outros dois
lados. Então:
• Se A B + C nenhum triângulo é
formado.
• Se A< B + C e se
1) A2 = B2 + C2 um triângulo
retângulo é formado,
2) A2 > B2 + C2 um triângulo
obtusângulo é formado
3) A2 < B2 + C2 um triângulo
acutângulo é formado.