Unesp – Campus de Guaratinguetá
Linguagem C
Curso de Programação Computadores
Prof. Aníbal Tavares
Profa. Cassilda Ribeiro
Unesp-Campus de Guaratinguetá
4.1 - Variáveis
Como visto anteriormente, o computador possui uma
área de armazenamento conhecida como
memória
.
A
memória
do computador pode ser entendida como
uma seqüência finita de
caixinhas
, que num dado
momento, guardam algum tipo de informação, como
por exemplo um número, uma letra, uma palavra, uma
frase etc, não importa, basta saber que lá sempre
existe alguma informação.
O computador
precisa saber onde, na memória, o
dado está localizado.
Algoritmos 3
Fisicamente,
cada caixinha
, ou cada posição de
memória, possui um endereço, ou seja, um número,
que indica onde cada informação está localizada.
Este número é representado através da notação
hexadecimal, tendo o tamanho de quatro, ou mais
bytes.
4.1 – Variáveis
A seguir é mostrado um exemplo:
‘João’
30ff712
12345
20ff312
Informação Endereço físico‘M’
31ff502
Exemplo 1.
Unesp-Campus de Guaratinguetá
O endereçamento das posições de memória através de números
hexadecimais é perfeitamente compreendido pela máquina
, mas
para nós humanos esta tarefa é complicada.
As linguagens de computador permitem que, ao invés de
trabalhar diretamente com os números hexadecimais, sejam
dados nomes diferentes a cada posição de memória (a cada
caixinha).
Tais nomes são de livre escolha do usuário.
Os usuários ficaram livres dos
endereços físicos
(números
hexadecimais) e passaram a trabalhar com
endereços lógicos
(nomes dados pelos próprios usuários para cada posição de
memória).
Algoritmos 5
Assim, podemos dizer que os
endereços lógicos
são como
caixinhas
, que num dado instante guardam algum tipo de
informação
.
Observe que o conteúdo destas
caixinhas
não é algo fixo,
permanente. Na verdade, uma
caixinha
pode conter
diversas informações, isto é, uma informação diferente a
cada momento
Então o
Exemplo 1
anterior, pode ser alterado para:
‘João’
Aluno
12345
numero
Informação Endereço lógico‘M’
sexo
4.1 – Variáveis Unesp-Campus de Guaratinguetá
No exemplo 1 a
caixinha
(Endereço Lógico) rotulada de
“Aluno”
num primeiro momento continha a informação
“João”
,
mas agora
ela contém a informação
“Maria
”. O mesmo acontece com as
caixinhas
numero
e
sexo
, que antes continham respectivamente
as informações
1234
e
“M”
, e agora contém as informações
2348
e
“F”
.
Então, sempre que for necessário, pode-se alterar o conteúdo
armazenado em cada variável (caixinha).
A figura do
Exemplo 1
, mostrado a seguir, ilustra esse fato.
‘F’
‘Maria’
Aluno
2358
numero
Informação Endereço lógicosexo
4.1 – VariáveisAlgoritmos 7
Então a informação armazenada em cada
caixinha
(endereço
lógico) pode variar. Isto é, podem ocorrer alterações em seu
conteúdo.
Tendo este conceito em mente, a partir de agora iremos
chamar, as caixinhas ou endereços lógicos, de
VARIÁVEIS
.
Então,
uma
variável
é qualquer quantidade que possa mudar
de valor em diferentes estágios, dentro de um programa.
O uso
de variáveis permite a especificação de uma fórmula geral de
cálculo
.
Desta forma podemos dizer que uma
VARIÁVEL
é uma
posição de memória, representada por um
Nome simbólico
(atribuído pelo usuário), a qual contém, num dado instante, uma
informação.
4.1 – Variáveis Unesp-Campus de Guaratinguetá12
5
13
2
8
6
10
3
3
4
5
1
C
B
A
Caso
Para cada conjunto de valores atribuídos a B e C
teremos um valor de A, ou seja:
Exemplo 2:
Seja um triângulo com os seguintes lados: A, B, C.
Do Teorema de Pitágoras temos: A
2= B
2+ C
2Vejamos então, um outro exemplo.
Vejamos então, um outro exemplo.
Observe então que neste exemplo temos 3 variáveis. A variável A, a variável B e a variável C. E quando fazemos B=4 e C=3, teremos A=5
Algoritmos 9
4.1.1 - Nomes de Variáveis
Para que as variáveis possam ser identificadas no programa,
elas necessitam ter um nome. Este nome deve ser significativo
tais como:
hipotenusa, lado1 e lado2
.
OBS:
Na fórmula do exemplo 2, foi dado o nome de A para a
hipotenusa, B para o lado 1 e de C para o lado 2 do triângulo
retângulo. Contudo, esses nomes não são suficientemente
significativos para se usar num programa de computador, ao
passo que se for usado o nome hipotenusa, por exemplo,
imediatamente sabe-seque se trata da dimensão de um triangulo
retângulo.
Regras para dar nomes as variáveis
As regras para dar nomes as variáveis podem variar ligeiramente
dependendo da linguagem de programação ou do sistema de
computador em utilização.
4.1.1 - Nomes de Variáveis
Unesp-Campus de Guaratinguetá
O nome da variável deve começar sempre com uma letra. Os
outros caracteres podem ser letras, dígitos numéricos e alguns
caracteres especiais.
Não é permitido o uso de espaços em branco ou de qualquer outro
Não é permitido o uso de espaços em branco ou de qualquer outro
caractere, que não seja letra ou dígito, na composição do nome d
caractere, que não seja letra ou dígito, na composição do nome da
a
variável.
variável.
Se utilizar palavras para compor o nome da variável utilize o “_”
underline para separar as palavras.
em C, apenas os 31 primeiros caracteres são considerados.
em C, apenas os 31 primeiros caracteres são considerados.
A linguagem C possui palavras-chave que não podem ser
utilizadas como nome de variáveis:
int, for, while, etc...
Algoritmos 11
Exemplos de nomes
válidos
Lado1 A3 Caixa_preta XmetroExemplos de nomes não válidos
3cubo
começa com número
X+Y
o
“+”
não vale pois confunde
com o sinal
Caixa preta
não é permitido caractere
branco
As variáveis, assim como os dados, podem ser do tipo
inteiro, real, cadeia e lógica.
OBS: A Linguagem C é CASE-SENSITIVA, isto é, ela faz
diferença entre letras maiúscula e minúscula.
Então em C, Lado1 ≠ lado1 ≠ LADO1
4.1.1 - Nomes de Variáveis
Unesp-Campus de Guaratinguetá
4.1.2 Tipos de Variáveis
Pode-se dizer que esta fórmula contém basicamente duas
coisas:
1) Valores que podem ser classificados como
constantes
constantes
e
e
variáveis.
variáveis.
ConstantesConstantessão os valores que não variam em todas as aplicações da fórmula. Na fórmula acima os valores4, 3 e π
são chamados de constantes;
VariáveisVariáveissão valores que mudam a cada aplicação da fórmula. Na fórmula acima o
V
e oR
são variáveis.Considere a fórmula matemática para o cálculo do volume de uma
esfera:
33
4
R
V
=
π
4.1.2 - Tipos de VariáveisAlgoritmos 13
2) Operações que devem ser feitas sobre determinados
valores, para a obtenção da solução do problema.
4.1.2 - Tipos de Variáveis
Deste modo esta fórmula pode ser usada para resolver uma
certa classe de problemas e não apenas um problema
específico.
Então para cada valor de R que atribuímos a fórmula,
obtemos um valor de volume V.
33
4
R
V
=
π
Unesp-Campus de Guaratinguetá4.1.2.1- Tipos de Dados
A Linguagem C exige que no momento em que se for
utilizar variáveis, seja indicado o tipo de informação que a
(caixinha)
variável
variável
vai conter, isto é, se numa dada posição
de memória será armazenado um número ou uma letra etc.
Para isto, a linguagem C já tem definido alguns tipos de
dados que deverão ser usados quando da utilização de
variáveis.
As características de cada um destes tipos será mostrada
gradativamente a medida em que ser for trabalhando com
eles.
Algoritmos 15
Resumindo:
O
tipo
de uma
variável
variável
define os valores
define os valores
que ela pode
assumir e as operações que podem ser realizadas com ela
Ex:
– variáveis tipo
int
recebem apenas valores inteiros
– variáveis tipo
float
armazenam apenas valores reais
A seguir são mostrados alguns dos tipos de variáveis mais
utilizados.
4.1.2.1 - Tipos de Dados Unesp-Campus de Guaratinguetá AlgoritmoC
Inteiroint
Realfloat
Realdouble
Caracterechar
Cadeiachar [ ]
Lógicaint
float
DescriçãoRepresenta números entre -2147483647 e +2147483647. Ocupa 4 bytes de memória.
Representa números entre ±3.4x10-38e ±3.4x10+38.
Ocupa 4 bytes de memória.
Representa números entre ±1.7x10-308e ±1.7x10+308.
Ocupa 8 bytes de memória.
Representa um dos caracteres da Tabela ASCII. Ocupa 1 byte de memória.
Vetor de caracteres. Cada elemento do vetor ocupa 1 byte de memória.
Qualquer valor diferente de zero é associado ao valor lógico verdadeiro. Senão é falso.
Algoritmos 17
ALGORITMO Exemplo 3
ALGORITMO Exemplo 3
VARIÁVEIS lado1, lado2:REAL;
VARIÁVEIS lado1, lado2:REAL;
INICIO INICIO lado1 lado1 ←←1.11.1 lado2 lado2 ←←3.23.2 Escreva (
Escreva (“L1 =“ “L1 =“ lado1,lado1,“L2=”“L2=”lado2);lado2); FIM
FIM
4.1.3 - Definição de Variáveis
As variáveis são definidas no início do programa, para que o computador reserve um espaço na memória para a elas.
No Algoritmo, para definir (declarar) uma ou mais variáveis, utilizaremos a
palavra VARIAVEIS na linha abaixo do nome do algoritmo. // Programa Exemplo 3
// Programa Exemplo 3
#
# includeinclude<<stdiostdio.h>.h> #
# includeinclude<<stdlibstdlib.h>.h> main
main()() {
{ floatfloatlado1, lado2;lado1, lado2; lado1 = 1.1;
lado1 = 1.1;
lado2= 3.2;
lado2= 3.2;
printf
printf((“L1 = %f“L1 = %f L2L2=%f”=%f”,lado1,lado2);,lado1,lado2);
system
system((“pause”“pause”);); }
}
Declaração da variável lado1 do tipo REAL
Atribuição de valor Impressão do valor do tipo
REAL (f ⇔ float)
4.1.3 - Definição de Variáveis
Unesp-Campus de Guaratinguetá
i
i
)
Foram definidas duas variáveis as quais demos o Nome de
Foram definidas duas variáveis as quais demos o Nome de
“lado1” e “lado2”,
“lado1” e “lado2”,
e informamos que estas variáveis, ou
e informamos que estas variáveis, ou
posição de memória, só poderão aceitar dados, que sejam
posição de memória, só poderão aceitar dados, que sejam
números
números
reais
reais
e que estejam entre ±3.4x10
e que estejam entre
-38e ±3.4x10
e
+38,
,
pois estas variáveis são do tipo REAL (
pois estas variáveis são do tipo REAL (
float
float
na linguagem
na linguagem
C).
C).
O Exemplo anterior nos informa que:
O Exemplo anterior nos informa que:
ii
ii) Atribuímos à variável
) Atribuímos à variável
“lado1”
“lado1”
o
o
valor 1.1.
valor 1.1.
e
e
à variável
à variável
“lado2”
“lado2”
o
o
valor 3.2.
valor 3.2.
Algoritmos 19 // Programa Exemplo 4 #include <stdio.h> #include <stdlib.h> #include <math.h> main() { float lado1,lado2,hipo; lado1 = 1.1; lado2 = 2.2;
hipo = sqrt(lado1*lado1 +lado2*lado2); printf(“L3 = %f ”,hipo); system(“pause”); } ALGORITMO Exemplo 4 ALGORITMO Exemplo 4 VARIÁVEIS VARIÁVEIS lado1, lado2,
lado1, lado2, hipohipo: REAL;: REAL; INICIO INICIO lado1 ←←1.1 lado2 ←←2.2 hipo←←sqrt(lado1*lado1+lado2*lado2) Escreva(“L3 =”,hipo) FIM FIM Cálculo da hipotenusa: 2 2
b
a
c
=
+
Biblioteca matemática: fornece seno, cosseno, exponencial, raiz quadrada (sqrt), etc.
4.1.3 - Definição de Variáveis
Unesp-Campus de Guaratinguetá
4.1.4 Maneiras de dar valores a uma variável
4.1.4 Maneiras de dar valores a uma variável
Quando definimos uma variável é natural atribuirmos a ela uma
informação, ou seja dar-lhe um valor.
Existem duas maneiras de se dar valores a uma variável:
1. Ler o valor da variável através de uma operação de entrada,
como por exemplo a leitura de dados.
2. Através da atribuição direta, do valor desejado à variável,
usando o comando de atribuição
Algoritmos 21
// Programa Exemplo 5
// Programa Exemplo 5
// Colocar aqui as Bibliotecas do Exemplo 4 ! main
main()() {
{
float
floatlado1;lado1; printf
printf((“Digite L1:”“Digite L1:”);); scanf
scanf((“ %f“ %f””,&lado1); ,&lado1);
lado1 =
lado1 = sqrtsqrt(lado1);(lado1); printf
printf((““sqrtsqrt(L1) = %f(L1) = %f””,lado1);,lado1); system
system((“pause”“pause”);); }
}
O Tag%f indica a leitura de um valor do tipo float
ALGORITMO Exemplo 5 ALGORITMO Exemplo 5 VARIÁVEIS VARIÁVEIS LADO1: REAL LADO1: REAL INICIO INICIO
Escreva ((“Digite L1:”“Digite L1:”););
Leia (LADO1) Leia (LADO1)
LADO1 ←←sqrt(LADO1) Escreva(“raiz de L1 =”,lado1) FIM
FIM
4.1.4 Maneiras de dar valores a uma variável
1) Ler o valor da variável através de uma operação de entrada
Em linguagem algorítmica, para fazer a leitura da variável, usamos o
comando:
Leia(nome da variável).
Em linguagem C usamos o comando:
scanf(“ % ”,&);
Unesp-Campus de Guaratinguetá ALGORITMO Exemplo 6 ALGORITMO Exemplo 6 VARIÁVEIS VARIÁVEIS A,B,C: INTEIRO; A,B,C: INTEIRO; INICIO INICIO Escreva(“Digite a e b:”) Leia (A,B); Leia (A,B); C C ←←A + B;A + B; Escreva( Escreva(A,A,”+”,B,”+”,B,”=“”=“,,C);C); FIM FIM
Leitura de a e b com apenas um scanf.
Impressão dos valores de a, b e c com um printf
4.1.4 Maneiras de dar valores a uma variável
// Programa Exemplo 6
// Programa Exemplo 6
<
<includeincludestdiostdio.h>.h> <
<includeincludestdlibstdlib.h>.h> main main()() { { int int a, b, c;a, b, c; printf
printf((“Digite a e b:”“Digite a e b:”);); scanf
scanf((““%d%d”%d%d”,&a,&b); ,&a,&b); c = a + b;
c = a + b;
printf
printf((“%d + %d = %d “%d + %d = %d \\n”n”,a, b, c);,a, b, c);
system
system((“pause”“pause”);); }
}
A tag %dindica que o tipo da variável a ser lida é inteiro
Algoritmos 23
Observe no exemplo 6que em linguagem algorítmica, utilizamos o Leia para se fornecer um valor para a variável e na linguagem C, utilizamos o comando scanf() Então no exemplo 6, ao se executar o programa aparecerá escrito na tela:Digite a e b.
Digite a e b.
Se digitarmos os números, por exemplo 14e 33, eles serão armazenados respectivamente nas variáveis ae b.
A seguir, o programa irá calcular c = a + bc = a + b⇒⇒14+3314+33 e colocará o valor 47 na
caixinha da variávelc, e c, e por ultimo escreverá na tela os valores dea, b a, b ecc
O leia é um comando bloqueante, isto é, ele faz com que o computador fique esperando que o dado lhe seja fornecido (digitado). Se não digitarmos nada para que o computador possa ler, ele ficará parado para sempre esperando que o dado seja digitado. Leia é um comando que ordena ao computador que vá por exemplo, na tela buscar o que o usuário digitou.4.1.4 Maneiras de dar valores a uma variável
Unesp-Campus de Guaratinguetá
2) Através da atribuição direta, do valor desejado à variável,
usando o comando de atribuição
Em linguagem algorítmica a operação de atribuição é
indicada pelo símbolo: .
Em linguagem C a operação de atribuição é feita pelo
sinal
de igual (=)
Exemplo: A3
no algoritmo
A=3;
no programa em C
O exemplo acima indica que o
valor
3
foi atribuído à
variável A
e
que qualquer valor que A pudesse ter antes se perdeu. Ou
seja, a posição de memória (
a caixinha
) que uma variável
representa, receberá uma informação, a qual será armazenada
no interior desta variável.
Algoritmos 25 // Programa Exemplo 7 #include <stdlib.h> #include <stdio.h> main() { int a = 16; printf(“a = %d”,a); a = -13; printf(“a = %d”,a);
printf(“Digite o valor de a”); scanf(“ %d ”,&a);
printf(“a = %d”,a); system(“pause”); }
Então, seja a seqüência de operações mostradas a seguir: A 16
A -13 A 0
O valor da variável Aapós as três operações é igual à última atribuição realizada, ou seja, 0 (zero). Definição+Atribuição Atribuição Leitura ALGORITMO Exemplo 7 VARIÁVEIS A: INTEIRO INICIO A ← 16
Escreva (“a=“,a) A ← -13
Escreva (“a=“,a)
Escreva(“Digite o valor de a”)
Leia(A)
Escreva (“a=“,a) FIM
4.1.4 Maneiras de dar valores a uma variável
Unesp-Campus de Guaratinguetá
No programa do
Exemplo 7
, anterior, foi feita a atribuição de
um valor a
variável a (a=16)
, juntamente com a declaração da
variável a
. A seguir foi feita a atribuição do valor
–13
á
variável
a
e este valor foi impresso na tela. Depois disso foi pedido que
se digite um valor para
variável a
, e novamente será impresso
o valor de
a,
que desta vez será o mesmo que foi digitado.
Lembre-se então que o valor que fica guardado na caixinha
(memória)
é sempre o último.
Algoritmos 27
4.1.4 Maneiras de dar valores a uma variável
OBS
: em C, uma variável tem que ser declarada no início de
um bloco de código. Assim, o programa a seguir não é válido
em C (embora seja válido em C++).
#include <stdio.h>
#include <stdlib.h
main()
{
int x;
int y;
y = 10;
x = 24;
int k = 20;
/* Esta declaracao de variável não é válida, pois não está
sendo feita no início do bloco */
system(
“pause”
);
}
Unesp-Campus de Guaratinguetá
Exercícios
1)
Em quais dos seguintes pares é importante a ordem dos
comandos? Em outras palavras, quando se muda a ordem dos
comandos, os resultados finais se alteram? Suponha X=2 Y=3
Z=4
4.1.4 Maneiras de dar valores a uma variável
a) X
Y
Y
Z
Resultado X = 3
Y = 4
Se invertermos o comando
Y
Z
X
Y
Resultado Y = 4
X = 4
O resultado é alterado.
Algoritmos 29 b) Fazendo Invertendo as linhas
X Y X = 3 Z X Z = 2
Z X Z = 3 X Y X = 3
O resultado é alterado.
c) Fazendo
Invertendo o comando
X
Z
X = 4
Z
X
Z = 2
X
Y
X = 3
X
Y
X = 3
O resultado é alterado.
d) Fazendo
Invertendo as linhas
Z
Y
Z = 3
X
Y
X = 3
X
Y
X = 3
Z
Y
Z = 3
O resultado não é alterado.
Suponha X=2 Y=3 Z=4
4.1.4 Maneiras de dar valores a uma variável
Unesp-Campus de Guaratinguetá
4.2 - Constantes
Constantes são valores fixos que não podem ser modificados pelo
programa
Tipo
Exemplos
char
‘a’
‘\n’
‘9’
int
123
1 1000
-23
long int
35000 -45
short int
10
-12 90
unsigned int
1000U
234U 4365U
float
123.45 3.1415e -10
double
123.45 -0.91254
Algoritmos 31
4.3. Comandos de Entrada e Saída
Os comandos para manusear entrada e saída de dados são muito importantes.
Já vimos anteriormente que o comando leia permite que forneçamos
valores as variáveis. Então, recapitulando temos que:
4.3 Comandos de Entrada e Saída
1.
O
comando leia
ordena ao computador que leia valores dados
atribuindo-os às variáveis indicadas;
2.
O
comando escreva
ordena ao computador que escreva, por exemplo,
na tela mensagens ou valores que estão armazenados na variável.
Em linguagem algorítmica o comando
leia
será feito como se segue :
Leia ( lista de entrada )
A
lista de entrada
é composta pelos nomes das variáveis para as quais os
valores serão atribuídos e na mesma ordem em que são encontrados no
fluxo de dados de entrada.
Unesp-Campus de Guaratinguetá
Exemplo 8: Leia ( V1)
O computador pega o valor encontrado na tela e coloca-o na caixinha da variável V1.
Exemplo 9: Leia ( A, B, C )
Os próximos três valores encontrados na tela serão atribuídos as variáveis A, B e C, sendo o primeiro a A, o segundo a B e o terceiro a C.
Exemplo 10: Deseja-se ler valores digitados, e estes valores são: -16, 3, 7, 21, 6, 0, 4, 8, 1. Suponha que temos os seguintes comandos Leia:
Leia ( A, B, C ) Leia ( D, E, F, G ) Leia ( X, Y )
Os valores digitados serão atribuídos as variáveis A, B, C,
D, E, F, G, X, Y um por um na ordem escrita.
Algoritmos 33
Observações:
1.
No exemplo anterior os valores estão numa única linha mas
poderiam estar em várias linhas.
2.
Qualquer valor que a variável possua anteriormente é destruído.É
mantida a compatibilidade de tipo.
Neste comando a tag
“%”
é para indicar o tipo de dado que vai ser lido.
%d ⇒ é usado para valores numéricos do tipo inteiro
%f ⇒ é usado para valores numéricos do tipo real
%c ⇒ é usado para valores do tipo caractere
%s ⇒ é usado para valores do tipo cadeia de caracteres (string)
4.3 Comandos de Entrada e Saída
Na linguagem C uma maneira de se ler dados é através do
comando: scanf(
“ %”,&nome da variável);
NÃO ESQUECER O ponto e virgula (;) no final da linha de comando, nem o & antes do nome da variável
Unesp-Campus de Guaratinguetá
Assim o exemplo 8, em linguagem C, torna-se:
Exemplo 8: scanf( “%d”,&V1 );
Ao executar esta linha de comando, o computador vai pegar o valor
inteiro que foi digitado na tela e vai armazena-lo na caixinha da
variável V1.
OBS: A variável V1 deve ser declarada como sendo do tipo inteira, no
inicio do programa
Exemplo 9: scanf ( “%d%d%d”, &A, &B, &C );
Ao executar esta linha de comando, o computador vai pegar os três
valores inteiros que foram digitado na tela e vai armazená-los na
caixinhas da variáveis A, B, e C, respectivamente nesta ordem.
Algoritmos 35
4.3 Comandos de Entrada e Saída
Exemplo 10:
Deseja-se ler valores digitados, e estes valores
são: -16, 3, 7, 21.2, 6.3, 0.5, 4.2, 8, 1. Suponha que temos os
seguintes comandos de leitura:
scanf (
“%d%d%d”
, &A, &B, &C );
scanf (
“%f%f%f%f”
, &D, &E, &F ,&G);
scanf (
“%d%d%”
, &X, &Y );
Os valores digitados serão atribuídos as variáveis A, B, C,
D, E, F, G, X, Y um por um na ordem escrita.
Observe que as variáveis D,E,F,G são do tipo real e por isso foi
usado
%f
Unesp-Campus de Guaratinguetá
Com o comando de saída
Escreva ,
em linguagem algorítmica
,
é
possível mostrar o conteúdo de qualquer variável, o resultado de
qualquer expressão ou o valor de qualquer constante.
A forma geral do comando
Escreva
que será utilizada aqui é:
Escreva ( lista de saída )
4.3 Comandos de Entrada e Saída
Em linguagem C, uma maneira de se fazer o comando escreva é:
printf(
“% “
, nome da variável).
Aqui também a tag “%” serve para indicar o tipo de dado que vai ser escrito.
%d ⇒ é usado para valores numéricos do tipo inteiro %f ⇒ é usado para valores numéricos do tipo real %c ⇒ é usado para valores do tipo caractere
Algoritmos 37
Exemplo 11
Nota1 = 73.0;
Nota2 = 65.0;
Nota3 = 94.0;
Nota4 = 87.0;
Media = (Nota1+Nota2+Nota3+Nota4) / 4.0;
printf (
“%f “,Media);
O comando prinf vai mostrar o resultado 79.75.
E se desejássemos ver além da média as notas parciais?
printf (“notas individuais =%f, %f, %f, %f\n“, nota1, nota2, nota3,nota4); printf (“media final=%f”, media);4.3 Comandos de Entrada e Saída
OBS:
Qualquer frase que estiver entre aspas duplas dentro do
comando printf vai aparecer na tela do computador exatamente
como está escrito. E no local onde estiver a tag
%
, vai aparecer
o valor da variável correspondente a tag.
Unesp-Campus de Guaratinguetá
Então para o exemplo anterior, o resultado impresso na tela será:
notas individuais= 73.0, 65.5, 94.0, 87.0media final=79.75
Observe que tem duas linhas impressas. Isto só ocorreu porque foi colocado um \n, no primeiro printf, antes de fechar a aspa.
Se não tivesse sido colocado esse \n, a impressão iria acontecer tudo na mesma linha, isto é:
notas individuais= 73.0, 65.5, 94.0, 87.0 media final=79.75
4.3 Comandos de Entrada e Saída
É possível incluir uma expressão como parte da lista de saída. A expressão é avaliada primeiro e só depois o resultado é impresso. Exemplo 12: printf (“media final=%f”, (nota1+nota2+ nota3+nota4) / 4.0);
Algoritmos 39
Vejamos alguns exemplos de
printf()
e o que eles exibem:
printf (
"Teste %% %%"
)
⇒
Teste % %
printf (
"%f"
,40.345)
⇒
40.345
printf (
"Um caractere %c e um inteiro %d"
,'D',120)
⇒
Um caractere D e um inteiro 120
printf (
"%s e um exemplo"
,"Este")
⇒
Este e um exemplo
printf (
"%s%d%%"
,"Juros de ",10)
⇒
Juros de 10%
printf (
"%s %d = %.2f"
,“Raiz de ",10,sqrt(10))
⇒
Raiz de 10=3.16
4.3 Comandos de Entrada e Saída
Unesp-Campus de Guaratinguetá
4.4
4.4
-
-
Expressões
Expressões
Definição:
uma
Expressão
é uma combinação de
variáveis, constantes e operadores. O resultado da
avaliação daquela expressão é o valor que é atribuído
à variável indicada.
Isto significa
que
o valor 27 será atribuído
à variável
conta
.
4
3
42
1
Expressão
conta
←
3
+
16
+
8
Exemplo 13
Algoritmos 41
4.4
4.4
-
-
Expressões
Expressões
Definição: Uma expressão é uma combinação de variáveis,
constantes e operadores. O resultado de uma expressão é
atribuído à variável indicada.
Exemplo 13 #include<stdio.h> #include<stdlib.h> main() { int conta; conta = 3 + 16 +8; printf(“ %d ”,conta); system(“pause”); } Código C conta←3+16+8 Em termos de memória conta
27
conta(1)
(2)
Algoritmos 42 Unesp-Campus de Guaratinguetá4.4
4.4
-
-
Expressões
Expressões
Exercício 1:
Fazer uma programa em C que converte uma
temperatura dada na escala Celsius para a escala Fahrenheit. A
relação entre os valores TC (em Celsius) e TF (em Fahrenheit)
correspondentes à mesma temperatura é : TF - 32 = 9/5 TC.
#include <stdio.h>
#include <stdlib.h>
main()
{
int celsius, fahrenheit;
printf(
"Digite a temperatura de hoje: "
);
scanf(
"%d"
, &celsius);
fahrenheit =
9
* celsius /
5
+
32
;
printf(
"Hoje esta fazendo %d graus Fahrenheit!\n"
, fahrenheit);
system (
"pause"
);
Algoritmos 43
4.4
4.4
-
-
Expressões
Expressões
Ao se executar esse programa para uma temperatura de 3 graus
Celsius, o resultado será:
Esse resultado está errado!!!!
O valor correto é: 37.4 graus Fahreinheit.
Isso aconteceu porque as variáveis
celsius, fahrenheit,
foram
declaradas como
int
e elas deviam ser declaradas como
float.
Durante o cálculo, o programa pegou a parte inteira da divisão
Unesp-Campus de Guaratinguetá
4.4
4.4
-
-
Expressões
Expressões
O programa do Exercício 1 correto é :
#include <stdio.h>
#include <stdlib.h>
main()
{
float celsius, fahrenheit;
printf(
"Digite a temperatura de hoje: "
);
scanf(
"%f"
, &celsius);
fahrenheit =
9.0
* celsius /
5
+
32
;
printf(
"Hoje esta fazendo %.2f graus Fahrenheit!\n"
, fahrenheit);
system (
"pause"
);
Algoritmos 45
4.4
4.4
-
-
Expressões
Expressões
#include <stdio.h>
#include <stdlib.h>
main()
{
const float pi=
3.1416
;
float raio, volume;
printf(
"Digite o valor do raio: "
);
scanf(
"%f"
, &raio);
volume = (
4.0
* pi*raio*raio*raio)/
3.0
;
printf(
"O volume da espera de raio %f eh:%f\n"
,raio, volume);
system (
"pause"
);
}
Exercício 2:
Fazer uma programa em C para calcular o volume da
esfera. Sabe-se que o volume da esfera é dado por:
33
4
R
V
=
π
Unesp-Campus de Guaratinguetá4.4
4.4
-
-
Expressões
Expressões
Termo2
Termo1
ado
Result
28,6
0.7
Termo2
7.4
13.6
Termo1
14
Exemplo
/
←
←
←
←
∗∗∗∗
←
←
←
←
+
++
+
←
←
←
←
Termo1=21
Termo2=20.02
resultado = 1.048951
O
exemplo 15
está errado pois na expressão
Resultado
a variável
Termo2
ainda não está definida.
28.6
0.7
Termo2
Termo2
Termo1
o
Resultad
7.4
13.6
Termo1
15
Exemplo
∗∗∗∗
←
←
←
←
←
←
←
←
+
+
+
+
←
←
←
←
/
Algoritmos 47
4.4
4.4
-
-
Expressões
Expressões
Declaração de VariáveisTermo1, Termo2, resultado: real Inicio
Termo1←13.6+7.4 Termo2←0.7*28.6
resultado ←Termo1/Termo2 Escreva(“Resultado=“,resultado) Fim
Algoritmo Exemplo 14
resultado
21.0
(2) 20.02
Termo1 Termo2 resultado
Em termos de memória (1) Termo1 Termo2 21.0 21.0 (3) 20.02
Termo1 Termo2 resultado
1.04
#include<stdio.h> #include<stdlib.h> main()
{
float Termo1, Termo2, resultado; Termo1= 13.6+7.4;
Termo2= 0.7*28.6;
resultado = Termo1/Termo2;
printf(“ Resultado = %f ”,resultado); system(“pause”);
}
Código C Exemplo 14
Unesp-Campus de Guaratinguetá
4.4.1
4.4.1
–
–
Avaliação de Expressões
Avaliação de Expressões
Problema de Lógica : os componentes de uma expressão só podem
ser avaliados se seus valores já estiverem definidos.
Variáveis
Termo1, Termo2, resultado: real Inicio
Termo1←13.6+7.4
Resultado ← Termo1 / Termo2 Termo2←0.7*28.6
Escreva(“Resultado=“,resultado) Fim
Algoritmo Exemplo 15
resultado
21.0
(2)
Termo1 Termo2 resultado
Em termos de memória (1) Termo1 Termo2 21.0 21.0 (3)
Termo1 Termo2 resultado
Não tem como calcular o valor da variável
Não tem como calcular o valor da variável
Não tem como calcular o valor da variável
Não tem como calcular o valor da variável
resultado
resultado
resultado
resultado
pois, a variável
pois, a variável
pois, a variável
pois, a variável
Termo2
Termo2
Termo2
Termo2
ainda não recebeu nenhum valor. Isto causa então, um erro
ainda não recebeu nenhum valor. Isto causa então, um erro
ainda não recebeu nenhum valor. Isto causa então, um erro
ainda não recebeu nenhum valor. Isto causa então, um erro
de Lógica
de Lógica
de Lógica
de Lógica
Algoritmos 49
4.4.1
4.4.1
–
–
Avaliação de Expressões
Avaliação de Expressões
Modificando um valor: O valor de uma variável pode ser modificado
tantas vezes quantas for necessário e a última modificação é a que fica
armazenada.
Algoritmo Exemplo3 Variáveis X, A: inteiro Inicio X←0 A ←3 X ← A + 1 Escreva(“Valor de X=“,X) FimExemplo 16:Suponha que as variáveis X e A sejam inteiras
#include<stdio.h> #include<stdlib.h> main() { int X, A; X = 0; A = 3; X = A+1; printf(“Valor de X= %d ”,X); system(“pause”); }
Código C Exemplo 16 Em termos de memória
Inicialmente o valor zero é atribuído á variável X e o
valor 3 é atribuído à variável A.
A seguir é atribuído à variável X o valor de A + 1, e assim o valor de X passa
a ser 4 0 X 3 A 4 X 3 A Unesp-Campus de Guaratinguetá
4.4.1
4.4.1
–
–
Avaliação de Expressões
Avaliação de Expressões
Modificando um valor: O valor de uma variável pode ser modificado
tantas vezes quantas for necessário e a última modificação é a que fica
armazenada.
Algoritmo Exemplo 17 Variáveis X, A: inteiro Inicio X←0 X ← X + 1 Escreva(“Valor de X=“,X) FimExemplo 17: Suponha que as variáveis X e A sejam inteiras
#include<stdio.h> #include<stdlib.h> main() { int X; X = 0; X = X+1; printf(“Valor de X= %d”,X); system(“pause”); } Código C Exemplo 17 0 X Em termos de memória
Inicialmente o valor zero é
atribuído á variável X.
A seguir o computador pega
o valor de X que está na caixinha, soma uma unidade e
devolve o valor resultante a variável X
Observe que aqui foi feito um incremento no valor da variável
X 1 X
Algoritmos 51
4.4.1
4.4.1
–
–
Avaliação de Expressões
Avaliação de Expressões
Do mesmo modo que o valor de uma variável pode ser incrementado, ele
também pode ser decrementado. O Exemplo 6 a seguir nos mostra isso.
Algoritmo Exemplo 18 Variáveis Y, B: inteiro Inicio B← 1 Y ←10 B ←B+1 Y ← Y -1
Escreva(“Valor de Y=“,Y) Escreva(“Valor de B=“,B) Fim
Exemplo 18: Suponha que as variáveis X e A sejam inteiras #include<stdio.h> #include<stdlib.h> main() { int B, Y; B= 1; Y= 10; B = B+1; Y= Y-1
printf(“Valor de Y= %d ”,Y); printf(“Valor de B= %d ”,B); system(“pause”);
}
Código C Exemplo 18 Inicialmente foram
atribuídos os valores: 1 a variável B e 10 à variável Y.
A seguir o computador
pega o valor de B que está na caixinha, soma uma unidade e devolve o valor resultante a variável B, depois ele pega o0 valor de Y que está na caixinha, subtrai um e devolve o valor resultante a caixinha
1 B 10 Y 2 B 9 Y Unesp-Campus de Guaratinguetá
4.4.1
4.4.1
–
–
Avaliação de Expressões
Avaliação de Expressões
Linguagem C: Na linguagem C existem 3 formas de se realizar o
incremento/decremento de uma variável.
Cuidado: As operações são equivalentes quando aparecem
isoladas, mas produzem efeitos diversos quando presentes em
expressões.Veja os exemplos abaixo:
x = x + 1;
x++;
++x;
x ← x + 1;
Em linguagem algorítmica Em linguagem C
1)
y = x++; →
Nesta expressão primeiro é atribuído o valor de X à variável Y, depois o valor de X é incrementado de 1. Se por exemplo o valor inicial de X for 1, ao final da atribuição os valores Y=1 e X=22)
y = ++x; →
Nesta expressão primeiro o valor de X é incrementado de 1 depois o valor de X é atribuído a variável Y. Se por exemplo o valor inicial de X for 1, ao final da atribuição os valores serão Y=2 e X=2Algoritmos 53
4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
Operadores: quando uma expressão possui mais de um tipo de
operação é necessário determinar qual é a prioridade na avaliação destas.
Exemplo 19:
Seja a expressão: x ← 3+6 * 13.
Qual será o valor resultante de x ?
Podemos ter por, exemplo, os dois casos a seguir:
x ←(3 + 6)*13
9
117
x ←3 + (6*13)
78
81
Caso 1
Caso 2
Unesp-Campus de Guaratinguetá4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
As operações para avaliação de uma dada expressão obedecem à uma
regra de prioridade fornecida na Tabela abaixo.
Classe
Operador
Significado
1
↑
↑
↑
↑
Exponenciação: é aplicada da
esquerda para a direita.
2
- , +
Menos e mais unários: são aplicados da
esquerda para a direita.
3
* , /
Multiplicação e divisão são aplicadas da
esquerda para a direita.
Algoritmos 55
4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
Prioridade: se operadores de mesma classe aparecerem mais de uma
vez em uma expressão realize as avaliações da esquerda para a direita.
x ← 8 + 7 * 3 + 4 * 5
21
+
20
+
8
1 2 329
+ 20
449
Exemplo 20:
Seja a expressão
x ←8+7*3+4*5
.
Qual será o
valor de X ?
Unesp-Campus de Guaratinguetá
4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
Prioridade: o uso de parênteses serve para modificar as prioridades na
avaliação dos operadores em uma expressão.
Exemplo 21: Para esta expressão
x ←(8+7)*(3+4)*5.
Qual será
o valor de X?
x
←
(8 + 7) * (3 + 4) * 5
7
*
5
*
15
1 2 3105
*
5
4525
Algoritmos 57
4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
x ←(3*(6+2))*8
Exemplo 22
8
(3
*
8)
*
8
1 2 3192
24
*
(3 * (6 + 2)) * 8
Programa em C
#include <stdio.h> #include <stdlib.h> // Programa principal main() { int X, Y; X = (6+2); printf(“ X = %d ”,X); X = 3*X; printf(“ X = %d ”,X); X = X*8; printf(“ X = %d ”,X); Y = (3*(6+2))*8; printf(“ Y = %d ”,Y); system(“pause”); } Unesp-Campus de Guaratinguetá4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
2 ↑ 3 ↑ 2
2
↑
9
1 2512 = 2
32
x ←2 ↑3 ↑2
Exemplo 23
Programa em C
#include <stdio.h> #include <stdlib.h> #include <math.h> main() { int X, Y; X = pow(3,2); printf(“ X = %d ”,X); X = pow(2,X); printf(“ X = %d ”,X); Y = pow(2,pow(3,2)); printf(“ Y = %d ”,Y); system(“pause”); }Algoritmos 59
4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
x ← -3 * 7 + 2 ↑ 3 / 4 -6
Exemplo 24
-3 * 7 + 2 ↑ 3 / 4 - 6
/
18
4 6
--3 * 7 +
2-21 +
8
/
4 6
-3-21 +
2
-
6
-25
4 5Programa em C
// Incluindo a biblioteca math.h !
#include <stdio.h> #include <stdlib.h> #include <math.h>
// Programa Principal que usa pow. main() { float X; X = -3*7+pow(2,3)/4-6; printf(“ X = %f ”,X); system(“pause”); } Unesp-Campus de Guaratinguetá
4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
Alternativa: a linguagem C permite outra forma de representar
as operações aritméticas entre dois números x e y.
Algoritmo
C operação
1
C operação 2
x ← x + y
x = x + y;
x += y;
x ← x - y
x = x - y;
x -= y;
x ← x * y
x = x * y;
x *= y;
x ← x / y
x = x / y;
x /= y;
x ← x % y x = x % y;
x %= y;
Resto da divisão inteira
Algoritmos 61
4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
Exercício 3: Representar as frações em expressões.
Exercício 3: Calcular o valor final de x, com variáveis REAIS.
3
4
2
12
−
−
(12-2)/(4-3)
4
1
*
3
2
−
(-2/3)*(1/4)
A) x
←3.0*6;
B) x
←2.0;
y ←3.0;
x ←x ↑y-x;
A) x
←
18.0;
B)
x ←6.0;
C) X
←4;
y ←2;
x ←x*y↑(x-y);
x ←x/y;
C)
x ←8.0;
Resultados:
Unesp-Campus de Guaratinguetá4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
C) X
←4;
y ←2;
x ←x*y↑(x-y);
x ←x/y;
Exercício 4
Programa em C
#include <stdio.h> #include <stdlib.h> #include <math.h> main() { float X, Y; X = 4; Y = 2; X = X*pow(Y,X-Y); X = X/Y; printf(“ X = %f ”,X); system(“pause”); } Observação: No programaao lado valores inteiros são atribuídos a X e Y, mas o resultado obtido é do tipo real. Isto ocorre, pois ocorre uma conversão implícita por conta de X e Y serem
declarados do tipo float (ou seja, real).
Algoritmos 63
4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
Exercício 5: Escreva as seguintes expressões matemáticas
como expressões de Computador
A / B + 1
1
b
a +
a)
d
-c
b
a +
b)
( A + B ) / ( C – D )
1
b
a
+
A / B + 1
c)
f
e
-d
c
b
a +
(A + B / C) / ( D – E / F )
d)
Unesp-Campus de Guaratinguetá4.4.2
4.4.2
–
–
Prioridade das Operações
Prioridade das Operações
d
-c
b
a +
A + B / ( C – D )
e)
(
)
d
c
b
a +
( A + B ) * C / D
f)
g)
[
(
)
c
]
d
b
a +
( ( A + B ) C ) D
Algoritmos 65
4.4.3
4.4.3
–
–
Funções Embutidas
Funções Embutidas
Freqüentemente o conjunto de operações ( +, -, *, /, ↑ ) é
complementado por operadores especiais denominados
funções embutidas
.
Por exemplo:
A operação de raiz quadrada é denominada
sqrt
. E a exponênciação é denominada
pow
.
As funções embutidas são rotinas pré-escritas, fornecidas
pelos projetistas de linguagem de programação para auxiliar
o programador na execução de cálculos que requeiram mais
do que o conjunto convencional de operadores.
Na linguagem C as funções embutidas fazem parte da
biblioteca
math.h
Unesp-Campus de Guaratinguetá
4.4.3
4.4.3
–
–
Funções Embutidas
Funções Embutidas
Funções matemáticas da biblioteca math.h
Trigonométricas
sin
(x): Retorna o valor do seno de x, sendo x em graus e em double.
cos
(x): Retorna o valor do co-seno de x, sendo x em graus e em double.
tan
(x): Retorna o valor da tangente de x, sendo x em graus e em double.
asin
(y) Retorna o valor do arco seno de y.
acos
(y) Retorna o valor do arco co-seno de y.
atan
(y) Retorna o valor do arco tangente de y.
sinh(x) Retorna o valor do seno hiperbólico de x, com x em graus e tipo
double.
Constantes
M_PI : Constante, "pi", fornece o valor 3.14159265358979323846
Logarítmicas
log
(x): Retorna o valor do logaritmo de x na base 2. Sendo x do tipo double.
log10
(x): Retorna o valor do logaritmo de x na base 10. Com x do tipo
double.
Algoritmos 67
4.4.3
4.4.3
–
–
Funções Embutidas
Funções Embutidas
Funções matemáticas da biblioteca math.h
Potências
pow ()
: Retorna o valor da base elevada ao expoente. Recebe dois
argumentos do tipo double, o primeiro é a base e o segundo o expoente.
Por exemplo:
Para calcular 2
10, faz-se pow (2, 10).
sqrt ()
: Retorna o valor da raiz quadrada. Recebe como argumento um
double do qual ele deve extrair a raiz.
exp(x): Retorna o valor de
e
xArredondamento
ceil()
: Retorna o primeiro float sem casas decimais acima. Recebe um float
como argumento.
Exemplo
:
ceil (45.98561) resultaria em 46.
floor()
: Retorna o primeiro float sem casas decimais abaixo. Recebe um
float como argumento.
Exemplo:
floor (45.98561) resultaria em 45.
Unesp-Campus de Guaratinguetá
4.4.3
4.4.3
–
–
Funções Embutidas
Funções Embutidas
Funções matemáticas da biblioteca math.h
abs(x)
: Retorna o valor absoluto de x um número inteiro
fabs(y): Retorna o valor absoluto de y um número real
cabs(x): Retorna o valor absoluto de x um número complexo
Exemplo
:
abs(-45) resultaria em 45.
floor(x)
: Retorna o primeiro float sem casas decimais abaixo de x.
Exemplo:
floor (45.98561) resultaria em 45.
Logarítmicas
log
(x): Retorna o valor do logaritmo de x na base 2. Sendo x do tipo
double.
log10
(x): Retorna o valor do logaritmo de x na base 10. Com x do tipo
Algoritmos 69
Exercício 6:
Escrever as seguintes expressões matemáticas
como expressões da linguagem C.
4.4.3
4.4.3 –
–
Funções Embutidas : Exercícios
Funções Embutidas : Exercícios
H= [ ( a + b ) ]
dJ= sen a + cos a
tg a
h= pow ( A + B, D);
J= ( sin (A) + cos (A) ) / tan (A);
K=
2a
ac
4
b
b
-
+
2−
K= - B + sqrt ( pow(B,2) – 4 * A * C ) / 2 *A
Em C, para se usar as funções que calculam expoente, raiz,
seno, cos etc. é necessário colocar a biblioteca math.h
Unesp-Campus de Guaratinguetá
4.4.3
4.4.3
–
–
Funções Embutidas
Funções Embutidas
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
main()
{
double coseno = -1.0;
printf(
"O arco co-seno de %lf
eh %lf\n"
,coseno,acos(coseno));
system(
"pause"
);
}
Exercício 8
: Fazer um programa
para imprimir o co-seno de 30º (pi/6
radianos), 60º (pi/3 radianos), 45º
(pi/4 radianos) e 90º (pi/2 radianos).
Para tanto, use a constante, "pi",
presente na biblioteca matemática,
que é referenciado pela constante
"M_PI“. Assim quando você
compilar o seu programa ela será
substituída pelo valor
3.14159265358979323846:
Exercício 7
: Fazer um programa
que use a função
acos
para calcular
o arco co-seno de um ângulo em
radianos. O valor de arg deve estar,
logicamente entre -1.0 e 1.0
Algoritmos 71
4.4.3
4.4.3
–
–
Funções Embutidas
Funções Embutidas
#include <stdlib.h>
#include <stdio.h>
Exercício 8
#include <math.h>
int main()
{
// pi/2 radianos = 90
// pi/6 radianos = 30
// pi/4 radianos = 45
// pi/3 radianos = 60
double angu_rad;
printf(
"Este programa imprime os cosseno dos angulos fundamentais: \n"
);
angu_rad = M_PI/
2
;
//90 em radianos
printf(
"O cosseno de 90 graus eh %lf\n"
,cos(angu_rad));
angu_rad = M_PI/
6
;
//30 em radianos
printf(
"O cosseno de 30 graus eh %lf\n"
,cos(angu_rad));
angu_rad = M_PI/
4
;
//45 em radianos
printf(
"O cosseno de 45 graus eh %lf\n"
,cos(angu_rad));
angu_rad = M_PI/
3
;
//60 em radianos
printf(
"O cosseno de 60 graus eh %lf\n"
,cos(angu_rad));
system(
"pause"
);
}
//fim programa
Unesp-Campus de Guaratinguetá
Pode-se usar a função pow p/ extrair as raízes de qualquer número, uma
vez que a raiz cúbica de 2, por exemplo é a mesma coisa que 2 elevado a
1/3 !!!!!
#include <stdio.h> #include <math.h> #include <stdlib.h> main() {double indice; double N,M, raiz;printf("Digite o no.para o qual vc deseja extrair a raiz:"); scanf("%lf",&N);//leitura de número com dupla precisão
printf("Digite o INDICE da raiz: ");
scanf("%lf",&indice);//leitura de número com dupla precisão
M=1.0/indice;
printf("valor de N= %lf valor de M= %lf \n", N, M); raiz = pow(N,M);
printf("A raiz %lf de %f eh: %lf\n", M, N,raiz); system("pause");
Exercício 9:
Fazer um programa para
calcular a raiz de índice K de um numero N
qualquer
4.4.3
Algoritmos 73
4.5.1 - Conversão implícita:
real para inteiro
4.5
4.5
-
-
Conversão de Tipo
Conversão de Tipo
Se uma variável é declarada como real (float) e for atribuída a ela um valor inteiro, vai ocorrer uma conversão implícita, pois ela será automaticamente convertida para um valor real
Exemplo 25: Sejam X
e Y reais.
Algoritmo
Variáveis x, y: real
Inicio
x ← 5;
y ←2;
x ←x / y;
fim
Em termos de memória
O valor 5.0 será atribuído avariável X, em seguida o valor 2.0 será atribuído a variável Y, a seguir o valor da variável será dividida por dois e novamente atribuída a variável X.
Como as variáveis X e Y foram
declaradas como sendo real, os valores inteiros se transformam em reais 2.0 Y 5.0 X 2.0 Y 5.0 tmp 5.0 X Y 5.0 X Unesp-Campus de Guaratinguetá
4.5.1 - Conversão implícita:
inteiro para real
4.5.1 - Conversão implícita:
Se uma variável é declarada como inteira (int) e for atribuída a ela um
valor real, vai ocorrer uma conversão implícita, pois ela será
automaticamente convertida para um valor inteiro
Exemplo 26: Suponha que VI e VR sejam variáveis do tipo inteira e real, respectivamente. Se atribuirmos os seguintes valores,
VR -17 VI 392.73
A constante inteira –17 é convertida automaticamente pelo computador em -17.0 para se ajustar a variável.
No caso da constante 392.73, ela será convertida para inteiro mas o valor armazenado será 392, que não é exatamente igual ao anterior.
Portanto, deve-se evitar conversões, exceto quando são para atingir um
Algoritmos 75
4.5.1 - Conversão implícita:
// Programa Exemplo 27 #include <stdlib.h> #include <stdio.h> main() { int vi, a = -17; float vr, b = 392.73;printf(“Atribuir inteiro para vi e real para vr \n”); vi = a;
vr = b;
printf(“vi = %d \n”, vi); printf(“vr = %f \n”, vr);
// Continuação Exemplo 14
printf(“Atribuir inteiro para vr e real para vi \n”); vr = a; vi = b; printf(“vi = %d \n”,vi); printf(“vr = %f \n”,vr); system(“pause”); } Ao se executar o programa anterior, teremos: Unesp-Campus de Guaratinguetá
4.5.1 - Conversão implícita:
Exemplo 28
:
Seja a seguinte
atribuição de valores para X e Y,
onde eles são declarados como
inteiros
X ←5.0;
y ←2.0;
X ←X/Y;
Ao se executar o programa ao lado vai
ocorre uma conversão implícita por conta de X e Y serem declarados do tipo int.
O resultado final da divisão de X por Y
será 2, que é a parte inteira da divisão de 5 por 2
Exemplo 28 - Programa em C
#include <stdio.h>
#include <stdlib.h>
main()
{
int X, Y;
X = 5.0;
Y = 2.0;
X = X/Y;
printf(
“ X = %d ”
,X);
system(
“pause”
);
Algoritmos 77
4.5.1 - Conversão implícita:
Exercício 10:
Sejam A, B e C variáveis reais e K, I, J variáveis
inteiras. Dados A=4.0, B=6.0 e I=3. Quais serão os valores finais
obtidos com os seguintes comandos?
C ←A*B - I;
C = 4.0*6.0-3;
C = 21.0;
K ←I/4 * 6;
K = 0 * 6;
K = 0;
C ←A/B+1.5;
C=6.0/4.0+1.5;
C=3.0;
Apesar da variável I ser inteira, o resultado desta expressão será um número real porque a variável C é real.Comentário
A expressão I/4
fornece o valor inteiro (zero), ao invés de 0.75
pois I é inteiro e 4 também.
Comentário
A expressão A/B
fornece um valor real e igual a 1.5. Este valor será somado ao valor 1.5 resultando em 3.0.
Comentário
Unesp-Campus de Guaratinguetá
4.5.1 - Conversão implícita:
Uma variável do tipo numérica
(real ou inteira) não pode ser
convertida implicitamente em
uma variável do tipo cadeia ou
vice-versa
.
Algoritmos 79
4.5.2 - Conversão explícita:
4.5.2 - Conversão explícita ou cast:
os valores atribuídos a uma variável são promovidos para um tipo definido explicitamente pelo usuário.Exemplo 16: Seja a atribuição
Abaixo, onde x e y são inteiros
x ← 5.0;
y ←2.0;
r ←float(x)/y;
Observação: O resultado
da divisão entre dois
inteiros seria inteiro, mas o resultado a ser fornecido será real (float), devido ao uso do operador float(X).
Programa em C
#include <stdio.h> #include <stdlib.h> main() { int X, Y; float R; X = 5.0; Y = 2.0; R = float(X)/Y; printf(“ float(X)/Y = %f ”,R); system(“pause”); } Unesp-Campus de Guaratinguetá #include<stdio.h> #include<stdlib.h> #include<math.h> main() { int x=9, y=0, z=0; int NUM = 5; y = x / NUM;printf("\n valor inicial de x = %d",x); z = NUM * y;
x = (NUM * x) + z;
printf("\n valor final de x = %d\n", x); printf("\n valor inicial de y = %d", y); y = (NUM * z) + y - 2;
printf("\n valor final de y = %d\n", y); printf("\n valor de z = %d",z);
z = y/x;
printf("\n valor final de z = %d\n", z); system("pause");
Exercício 11: Analise o programa abaixo e mostre o que aparecerá na
tela do computador
Algoritmos 81
4.6
4.6 -
-
Aplicações
Aplicações
Problema 1: Ler dois números inteiros exibi-los. Depois, trocar os
valores entre si e exibir novamente.
Algoritmo
(1) Leia(A,B);
(2) Mostre(A,B);
(3) C ← A;
(4) A ← B;
(5) B ← A;
(6) Mostre(A,B);
(4)
A
B
xC
(5)
A
B
yC
x x xEm termos de memória
(3)
A
B
C
x y x y Unesp-Campus de Guaratinguetá4.6
4.6 -
-
Aplicações
Aplicações
Problema 1: Ler dois números inteiros exibi-los. Depois, trocar os
valores entre si e exibir novamente.
Algoritmo
(1) Leia(A,B);
(2) Mostre(A,B);
(3) C ← A;
(4) A ← B;
(5) B ← A;
(6) Mostre(A,B);
Programa em C
// Incluir bibliotecas ! main() { int A, B, C; printf(“Digite A e B: ”); scanf(“%d %d”,&A,&B);printf(“A = %d e B = %d \n”,A,B); C = A;
A = B; B = A;
printf(“A = %d e B = %d \n”,A,B);
system(“pause”); }
Algoritmos 83
4.6
4.6 -
-
Aplicações
Aplicações
Problema 2: Fazer programa que pede ao usuário para entrar com
um valor inteiro que chama de dias, depois ele divide esse número por 365.25, ou seja, converte os dias para anos e informa ao usuário quantos anos equivalem aos dias digitados
Programa em C
#include <stdio.h>
void main ()
{int Dias;
// Declaracao de Variaveis
float Anos;
printf (
"Entre com o número de dias: "
);
// Entrada de Dados
scanf (
"%d"
,&Dias);
Anos=Dias/365.25;
// Conversao Dias
Anos
printf (
"\n\n%d dias equivalem a %f anos.\n"
,Dias,Anos);
system("pause");
}
Unesp-Campus de Guaratinguetá
4.6
4.6 -
-
Aplicações
Aplicações
Problema 3: Determinar o saldo ao final do 3º mês de uma aplicação
financeira com investimento inicial de R$300,00 e juros de 1% ao mês.
0
A
1
P=A+A*i
2
S
3
T
Programa em C
// Incluir bibliotecas ! main() { float A, P, S, T, i;printf(“Digite investimento e juros: ”);
scanf(“%f %f”,&A,&i); P = A*(1+i);
S = P*(1+i); T = S*(1+i);
printf(“Valor final = %f \n”, T); system(“pause”); }