Академический Документы
Профессиональный Документы
Культура Документы
- Abraham Lincoln -
Comando
3 Sequencial
Sumário:
3.1- Motivação
3.2- Comando de Atribuição Simples
3.3- Conversão Automática de Expressões
3.4- Conversão Explícita
3.5- Operador Unário
3.6- Comando de Atribuição Múltiplo
3.7- Comando Sequencial
3.8- Estrutura de um Programa em C
3.9- Funções de Entrada e Saída
3.10- Exemplo de Programas Simples
3.11- Documentação de Programas
3.12-Funções Matemáticas
3.13- Funções para Converter Caracteres
3.14- Importância dos Nomes dos Identificadores
3.15- Exercícios Resolvidos
3.16- Exercícios Propostos
3.17-Trabalhos de Programação
Este capítulo tem por finalidade, iniciar o estudo dos comandos da linguagem
C. No seu término, o leitor deverá ser capaz de:
3.1- Motivação
Antes de iniciarmos o estudo sobre comandos sequenciais, vamos recordar a
resolução do problema de mudar o pneu de um carro, visto no primeiro
capítulo. Vimos que a resolução desse problema baseava-se nos seguintes
passos:
variável = expressão;
e caracteriza-se por:
ou ainda
Calcular variável = expressão;
O comando
i = 2;
O comando
j = j + 1;
O comando
k = a + 6/b – 2;
a + 6/b - 2
= 5 + (6/3) – 2
= 5+2–2
= 7- 2
=5
int x;
x = 2/1.5;
x = 2/1.5;
= 2.0/1.5 Converter o valor 2 para o tipo real
= 1.3333333 Calcular o valor da expressão
=1 Converter o valor 1.333333 para tipo inteiro
float massa;
Ao executarmos as expressões:
x= - 8;
x = -x;
e caracteriza-se por:
O comando:
Os comandos:
h = 10;
a = b = d = h * 2 - 1;
Os comandos:
d = 5;
b = 2;
a = b +( c = d +3 );
d = 5;
b = 2;
c = d + 3;
a = b + c;
{
Comando1;
Comando2;
.
.
Comandon;
}
inicio
Comando1;
Comando2;
.
.
Comandon;
fim
Directivas de pré-processamento
int main()
{
Declaração de constantes;
Declaração de variáveis;
Comandos que resolvem o problema;
return 0;
}
onde:
onde, formato é uma cadeia de caracteres que indica o tipo de dado que será
lido.
%d Especifica um inteiro
%f Especifica um real
%c Especifica um caracter
%s Especifica uma cadeia de caracteres
Para além dos formatos que vimos, podemos inserir caracteres especiais e
controlar o movimento do cursor. Os caracteres mais importantes são:
/*--------------------------------------------------------------------------------------------------------
Objectivo: Mostrar uma mensagem no monitor
--------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* Incluir a função printf() */
int main()
{
printf ("Ola! Eu estou a programar computadores. Viva \n");
return 0;
}
- A linha int main() define uma função que é identificada pelo nome main que
indica o início do programa. Os comandos dessa função estão delimitados
pelos colchetes { e }. Como o main() é uma função do tipo inteiro e toda função
deve devolver um valor ( veremos esse assunto mais tarde), por consistência, a
última linha do programa deve devolver o valor zero através da instrução
return, embora esse valor não tem qualquer utilidade.
A única coisa que este programa faz é chamar (invocar) a função printf(), para
mostrar na tela a frase: Ola! Eu estou a programar computadores. Viva! e
mover o cursor para a próxima linha.
/*--------------------------------------------------------------------------------------------------------
Objectivo: Converter o número de dias em anos
Entrada : Número de dias
Saida : Número de anos
Autor : Manuel Meneses
Data : 21-05-2011
--------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir a função printf() e scanf() */
int main()
{
int dias;
float anos;
printf(" Entre com o numero de dias : "); scanf(" %d ", &dias);
anos = dias/365.25;
printf(" \n %d dias equivalem a %f anos ", dias, anos);
return 0;
}
- A função scanf() lê esse número de dias. O formato %d indica que vamos ler
um número inteiro. O símbolo & indica o endereço de memória da variável dias,
ou seja, o lugar na memória do computador onde esse valor será armazenado.
- Para terminar temos a função printf() que imprime uma mensagem a dar-nos
o correspondente número de anos.
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular a soma de dois números inteiros
Entrada : Dois números
Saida : Soma
--------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir a função printf() */
int main()
{
int a, b, soma;
a = 5;
b = 10
Soma = (a + b);
printf(" \n a Soma de %d com %d é igual a %d ",a, b, soma);
return 0;
}
Ao compilar este programa, terá alguns erros nas linhas que estão em
vermelho. Estes erros devem-se aos seguintes factos: Falta o delimitador; na
instrução b = 10 e a variável Soma não está definida. Na Linguagem C as
letras maiúsculas são diferentes das letras minúsculas, logo Soma ≠ soma.
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular o produto de dois números inteiros
Entrada : Dois números
Saida : Produto
--------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir a função printf() */
int main()
{
int n1, n2, prod;
n1 = 5;
prod = n1 * n2;
printf(" \n A multiplicacao de %d com %d = %d ",n1, n2, prod);
return 0;
}
double pow(double x, double y); Devolve xy . Não pode ser utilizado se for
x=0 e y <0 ou x <0 y não é um inteiro.
int isdigit(int c); Se c for um dígito devolve verdadeiro, caso contrário devolve
falso.
int isalpha(int c); Se c for uma letra devolve verdadeiro, caso contrário devolve
falso.
int isalnum(int c); Se c for um dígito ou uma letra devolve verdadeiro, caso
contrário devolve falso.
int islower(int c); Se c for uma letra minúscula devolve verdadeiro, caso
contrário devolve falso.
int isupper(int c); Se c for uma letra maiúscula devolve verdadeiro, caso
contrário devolve falso.
int tolower(int c); Se c for uma letra maiúscula converte para letra minúscula,
caso contrário não faz nada.
int toupper(int c); Se c for uma letra minúscula converte para letra maiúscula,
caso contrário não faz nada.
Isso quer dizer que devemos ter muito cuidado com os nomes dos
identificadores e estabelecer alguns critérios. Programadores inexperientes,
têm a tendência de não dar a devida importância a este ponto crucial do
desenvolvimento de software de boa qualidade.
O nome das variáveis com mais de uma palavra podem ajudar a tornar um
programa mais legível. Devemos evitar a junção de palavras separadas como
totalpagamentos, em vez disso, separar as palavras com o caracter undescore
como total_pagamentos ou começar o identificador com uma letra minúscula e
a primeira letra da palavra seguinte com uma letra maiúscula como
totalDePagamentos.
Versão 1
1- ler o raio;
2- calcular a área da circunferência;
3- imprimir a área;
Versão 2:
1- declarar constante pi;
Versão 3:
1- declarar constante pi;
2- declarar area, raio;
3- ler (raio);
4- calcular area = pi*raio*raio;
5- imprimir (area);
/*--------------------------------------------------------------------------------------------------------
Objectivo : Calcular a área de uma circunferência
Entrada : Raio
Saida : Área
-------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* Incluir as funções printf() e scanf() */
int main()
{
const float pi = 3.14;
int raio;
float area;
printf(" \n Entre com o valor do raio: "); scanf("%d",&raio);
area = pi*(raio*raio);
printf(" \n Circunferência de raio %d possui a área %.2f \n ",raio, area);
return 0;
}
area = pi*(raio*raio);
printf(" \n Circunferência de raio %d possui a área %.2f \n ",raio, area);
system("PAUSE");
return 0;
}
Volte a correr o programa e verá que as letras com acentos são impressas com
caracteres estranhos. Para resolver esse problema basta incluir a arquivo-
cabeçalho <locale.h> e utilizar a função setlocale(LC_ALL, “Portuguese”), ou
seja:
Versão 1
1- ler um número inteiro;
2- separar o último algarismo;
3- imprimir o último algarismo;
Pelo enunciado, fazem parte dos dados de entrada um número inteiro positivo
e da informação de saída, o último algarismo desse número. Vamos relacionar
essas variáveis aos seus tipos de dados.
Versão 2
1- declarar numero, algarismo;
2- ler (numero);
3- separar o último algarismo;
4- imprimir (algarismo);
Versão 3
1- declarar numero, algarismo;
2- ler (numero);
3- calcular algarismo = numero % 10;
4- imprimir (algarismo);
/*--------------------------------------------------------------------------------------------------------
Objectivo: Determinar o algarismo das unidades de um número inteiro
Entrada : Número
Saida : Algarismo
-------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
#include <locale.h> /* incluir a função setlocale() */
int main()
{
setlocale(LC_ALL, “Portuguese”);
int numero, algarismo;
printf(" \n Entre com um inteiro positivo: "); scanf(" %d ",&numero);
algarismo = numero % 10;
printf(" \n O algarismo das unidades é igual a % d ",algarismo);
system("PAUSE");
return 0;
}
𝐹−32 𝐶 𝐾−273
= =
9 5 5
9
logo F = C+32 e k = C+273.
5
Versão 1
1- ler a temperatura em graus Celsius;
2- calcular a conversão;
3- imprimir os resultados;
Versão 2
1- declarar celsius, kelvin, fahrenheit;
2- ler (celsius);
3- calcular a conversão;
4- imprimir (kelvin, fahrenheit);
Versão 3
1- declarar celcius, kelvin, fahrenheit;
2- ler (celsius);
3- calcular fahrenheit = 9/5*celcius + 32;
4- calcular kelvin= celsius + 273;
5- imprimir (kelvin, fahrenheit);
/*--------------------------------------------------------------------------------------------------------
Objectivo: Converter graus Celsius em Kelvin e Fahrenheit
Entrada : Temperatura em graus Celsius
Saida : Temperatura em graus Kelvin e Fahrenheit
-------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
#include <locale.h> /* incluir a função setlocale() */
int main()
{
setlocale(LC_ALL, “Portuguese”);
Média final = 30 % nota freq + 20% trabalho laboratório + 50% exame final
Versão 1
1- ler os dados do estudante;
2- calcular média final;
3- imprimir o passe, notas da avaliação e a média final;
Versão 2
1- declarar passe, notaFreq, notaLabo, notaFinal;
2- declarar mediaFinal;
3- ler (passe, notaFreq, notaLabo, notaFinal);
4- calcular à media final;
5- imprimir (passe, mediaFinal);
Versão 3
1- declarar passe, notaFreq, notaLabo, notaFinal;
2- declarar mediaFinal;
3- ler (passe, notaFreq, notaLabo, notaFinal);
4- calcular mediaFinal= 0.30*notaFreq + 0.20*notaLabo + 0.50*notaFinal;
5- imprimir ("Passe =", passe);
6- imprimir ("Nota Frequencia = ", notaFreq);
7- imprimir ("Nota laboratório = ", notaLabo);
8- imprimir ("Nota Final ",notaFinal);
9- imprimir (" Media Final = ",mediaFinal);
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular a nota final de um aluno com base na média ponderada
Entrada : Passe, nota parcial, laboratório e exame
Saida : Nota final
-------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
#include <locale.h> /* incluir a função setlocale() */
int main()
{
setlocale(LC_ALL, “Portuguese”);
int notaFreq, notaLabo, notaFinal, passe;
float mediaFinal;
printf("\n Entre com o passe do aluno:"); scanf("%d",&passe);
prinft("\n Entre com a nota Frequência :"); scanf("%d",¬aFreq);
printf("\n Entre com a nota Laboratório:"); scanf("%d",¬aLabo);
printf("\n Entre com a nota Final:"); scanf("%d",¬aFinal);
mediaFinal = 0.30*notaFreq + 0.20*notaLabo + 0.50*notaFinal;
printf(" \n Passe = %d ",passe);
printf(" \n Nota Parcial = %d ",notaFreq);
printf(" \n Nota Laboratório = %d ",notaLabo);
printf(" \n Nota Final = %d ",notaFinal);
printf(" \n");
printf(" \n Nota Media Final = %f ",mediaFinal);
system("PAUSE");
return 0;
}
Versão 1
1- ler os dados do inquérito;
2- calcular a taxa de inflação;
3- imprimir os resultados;
Pelo enunciado fazem parte dos dados de entrada, o código do artigo, o preço
em vigor e o preço do mês anterior. Fazem parte da informação de saída, o
código do artigo e a taxa de inflação. Mas, para calcular a taxa de inflação,
necessitamos de uma variável auxiliar que irá receber o valor da diferença
algébrica. Vamos associar essas variáveis aos seus tipos de dados.
int codArtigo;
float precoActual, precoAnterior, difAlgebrica, taxaInflacao;
Versão 2
1- declarar codArtigo;
2- declarar precoActual, precoAnterior, difAlgebrica, taxaInflacao;
3- ler (codArtigo, precoActual, precoAnterior);
4- calcular a diferença algébrica;
5- calcular a taxa de inflação;
6- imprimir (codArtigo, taxaInflacao);
No próximo passo, vamos descrever com mais rigor o método para calcular a
taxa de inflação mensal.
Versão 3
1- declarar codArtigo;
2- declarar precoActual, precoAnterior, difAlgebrica, taxaInflacao;
3- ler (codArtigo, precoActual, precoAnterior);
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular a taxa de inflação mensal
Entrada : Código do artigo, preço no mês anterior e preço actual
Saida : Taxa de inflação
-------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
#include <locale.h> /* incluir a função setlocale() */
int main()
{
setlocale(LC_ALL, “Portuguese”);
float precoActual, precoAnterior, difAlgebrica, taxaInflacao;
int codArtigo;
printf("\n Entre com o código do artigo :"); scanf("%d",&codArtigo);
printf("\n Entre com o preço actual:"); scanf("%d",&precoActual);
printf("\n Entre com o preço anterior :"); scanf("%d",&precoAnterior);
difAlgebrica = precoActual – precoAnterior;
taxaInflacao = difAlgebrica/precoActual * 100;
printf(" \n Código do artigo : %d ", codArtigo);
printf("\n Taxa de Inflação : %d ",(int)taxaInflacao);
system("PAUSE");
return 0;
}