Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
DCC 119 Algoritmos
2
Pontos importantes da última aula
Sistemas de Numeração: base, notação
posicional e conversão de base.
Sistemas Computacionais: processador,
memória, linguagens de programação e sistema
operacional.
Algoritmos: ação, estado, processo, padrão de
comportamento, algoritmo, aspectos estático e
dinâmico de um algoritmo e formas de
representação de algoritmos.
3
Introdução
Para cada comando serão apresentadas a sua:
sintaxe: formato geral do comando que deve ser
aceita e respeitada como padrão.
semântica: o significado da ação realizada pelo
comando, em tempo de execução.
No texto (estático) de um programa (ou algoritmo),
um valor pode ser representado na forma de
constante ou de variável.
A constante é representada em um programa
diretamente pelo seu valor (que não se altera
durante a execução do programa).
4
Variáveis
A variável é representada no texto de um
programa por um nome que corresponde a uma
posição da memória que contém o seu valor.
Em tempo de execução, o nome da variável
permanece sempre o mesmo e seu valor pode
ser modificado.
Nome de variável: é criado pelo programador e
deve ser iniciado por uma letra que pode ser
seguida por tantas letras, algarismos ou
sublinha quanto se desejar e é aconselhável que
seja significativo do valor que ela representa.
5
Variáveis
Exemplos de nomes de variáveis:
Certo:
nome, telefone, salario_func, x1
Errado:
1ano, sal/hora, _nome
6
Tipos de Dados
Todo valor (constante ou variável) de um
programa tem um tipo de dados associado.
Um tipo de dados é constituído de dois conjuntos:
um conjunto de objetos (domínio de dados) e de
um conjunto de operações aplicáveis aos objetos
do domínio.
Toda linguagem de programação tem embutido um
conjunto de tipos de dados, também chamados de
implícitos, primitivos ou básicos.
Tipos de dados básicos: inteiro, real, caracter e
lógico.
Em C, os tipos acima são, respectivamente, int,
float/double e char. Não há o tipo lógico em C.
7
Tipos de Dados Básicos
inteiro:
Domínio: conjunto dos inteiros.
Operações: usam dois argumentos inteiros e, de
acordo com o resultado são:
+, -, *, div, e mod: resultado inteiro
/: resultado real
<, , =, >, e : resultado lógico
real:
Domínio: conjunto dos reais.
Operações: usam dois argumentos reais e, de
acordo com o resultado são:
+, -, * e /: resultado real
<, , =, >, e : resultado lógico
8
Tipos de Dados Básicos
caracter:
Domínio: conjunto de caracteres alfanuméricos.
Operações: usam dois argumentos do domínio e
fornecem resultado lógico: <, , =, >, e
lógico:
Domínio: {verdadeiro, falso}.
Operações: usam dois argumentos do domínio e
fornecem resultado lógico:
Conectivos lógicos: conjunção (e, ^), disjunção
(ou, ), disjunção exclusiva (xou, ), negação
(não, ). A negação trabalha com somente um
argumento.
Conectivos relacionais: = e .
9
===
!=
>=
<=
%Mod
CPseudolinguagem
A tabela abaixo apresenta os operadores que são
diferentes em C em relação a pseudolinguagem.
O símbolo = em C é utilizado para atribuição,
correspondendo ao do português estruturado.
Não há correspondente direto em C para o operador
div .
10
O tipo básico associado a uma constante fica
determinado pela própria apresentação da
constante.
Tipos de Constantes e de Variáveis
Exemplos:
7 cte. inteiro
7.0 ou 7. cte. real
7 cte. caracter
falso cte. lógico
Para as variáveis, devem ser feitas no início do
programa (ou de um bloco) as declarações (de
tipo) de variáveis.
11
Sintaxe: <tipo> nome (s);
Implicações da declaração de uma variável:
Alocação de um espaço na memória que
possa conter um valor do seu tipo.
Associação do endereço dessa posição da
memória ao nome da variável.
Declarada uma variável, toda vez
que ela for referenciada em qualquer
comando do programa, o
computador vai trabalhar com o
conteúdo de seu endereço, que é o
valor da variável.
Exemplos:
caracter f, n;
inteiro idade;
real a, b, X1;
lógico vendido;
12
1) Indique quais das constantes abaixo são do tipo inteiro:
( )1000 ( ) 0 ( ) -900 ( )verdadeiro ( )-456 ( )34 ( )-1.56
2) Indique quais das constantes abaixo são do tipo real:
( ) -678.0 ( ) 0.87 ( ) -9.12 ( ) falso ( ) -456.0 ( ) Cinco ( ) -1.56
3) Indique quais das constantes abaixo são do tipo lógico:
( ) -678.0 ( ) 0.87 ( ) -9.12 ( )falso ( )-456 ( ) Verdadeiro ( )-1.56
13
Exercícios
Indique com um X os nomes válidos para uma variável:
( ) endereco
( ) 21brasil
( ) nome_usuario
( ) nome*usuario
( ) cidade3
( ) #cabec
14
Comando de atribuição
Sintaxe: variável expressão;
Semântica: atribuir à variável o resultado da
expressão.
Expressões aritméticas: fornecem resultado
numérico (inteiro ou real).
Operações básicas: +, -, *, /
Exponenciação: potencia( A + B , N)
Funções matemáticas comuns: sen (X), cos (X), abs (X),
raiz (X), arctan (X), exp (X), log (X), ln (X) etc.
Operadores para inteiros:
M mod I: resto da divisão inteira de M por I
M div I: quociente da divisão inteira de M por I
15
Comando de atribuição
Expressões lógicas: fornecem resultado lógico.
Conectivos relacionais: (<, , =, >, e )
Conectivos lógicos:
Conjunção: e,
Disjunção: ou,
Disjunção Exclusiva: xou,
Negação: não,
VFFFFF
VVVFVF
FVVFFV
FFVVVV
não AA xou BA ou BA e BBA
Tabela Verdade: Sejam A e B duas expressões lógicas.
16
Comando de atribuição
Prioridade de execução das operações em uma
expressão:
1º. Parênteses (dos mais internos para os mais externos)
2º. Expressões aritméticas, seguindo a ordem: funções, * e /, + e
3º. Comparações: <, , =, >, e
4º. não
5º. e
6º. ou e xou
7º. Da esquerda para a direita quando houver indeterminações.
17
Comentários
inteiro maior; //maior valor lido
//ler os valores das variáveis A, B, C
Pseudocomando
leia os valores das variáveis A, B, C ;
Classifique os valores lidos em ordem crescente ;
Comandos de entrada e saída
leia (a, x); //serão lidos os valores das variáveis a, x nesta ordem
imprima ( Valor de N = , n, Fatorial de N = , fat);
18
Bloco
(1) Conjunto de comandos entre { }
(2) Pode-se declarar variáveis em seu interior.
(3) Delimitar o escopo das variáveis.
{
<declaração de variáveis>;
<comandos>;
}
19
1. Seqüência Simples
C1;
C2;
...
Cn;
Exemplo:
leia (X, Y);
A X + Y;
B X Y;
imprima (A, B);
Semântica: o controle de fluxo de execução
entra na estrutura, executa comando por
comando, de cima para baixo e sai da estrutura.
Sintaxe: Exemplo em C:
scanf( %d %d , &X, &Y);
a = x + y;
b = x - y;
printf ( %d %d , a, b);
20
Até agora, foram estudados os seguintes
recursos visando especificamente a
construção de algoritmos:
Conceito de Constante, Variável e Tipos de Dados.
Tipos de Dados Básicos.
Declaração de Variáveis.
Construção de Expressões (Aritmética e Lógica).
Sintáxe e Semântica dos Comandos de Atribuição
e de Entrada e Saída.
Seqüência Simples (primeiro dos três tipos de
estruturas de controle).
Já é possível criar alguns algoritmos simples,
bastando adotar um método de desenvolvimento.
21
Métodos de Criação de Programas
a) Método Direto
1. Entender o problema (análise do enunciado).
2. Descrição de variáveis: lista contendo para
cada variável, o seu nome, uma descrição de
seu objetivo e o seu tipo. Iniciar a lista pelos
dados de entrada e pelos resultados a
produzir.
3. Estudo de métodos: estabelecer (pelo
menos) um método para obtenção de cada
resultado pedido e para cada controle de
processamento. Caso o método escolhido
necessite utilizar novas variáveis, incluí-las na
lista de descrição de variáveis.
22
Métodos de Criação de Programas
a) Método Direto
4. Elaborar
um algoritmo baseado no estudo de
métodos, observando a seguinte seqüência:
principal
{
definição de novos tipos;
declaração de variáveis;
inicialização de variáveis;
corpo do algoritmo controlando:
leitura;
processamento;
saída;
}
23
Métodos de Criação de Programas
a) Método Direto
5. Testar o algoritmo, considerando, se possível,
todas as alternativas de entrada.
6. Programa: traduzir o algoritmo para uma
linguagem de programação e testá-lo
exaustivamente no computador.
7. Documentação: o conjunto de documentos
produzidos ao longo do método direto constitui
a primeira documentação técnica do programa.
24
Métodos de Criação de Programas
b) Método dos Refinamentos Sucessivos
Inicialmente, manter um nível mais alto de
abstração (atenção em o que fazer e não em
como fazer).
Dispensa-se o estudo de métodos e parte-se
logo para a elaboração do algoritmo sendo que
cada tarefa lógica distinta será representada por
um pseudocomando.
25
Métodos de Criação de Programas
b) Método dos Refinamentos Sucessivos
A primeira versão do algoritmo é rapidamente
obtida pela listagem de alguns poucos
pseudocomandos que deverão ser detalhados em
refinamentos posteriores (em função de outros
pseudocomandos ou em função da própria
pseudolinguagem).
Depois que todos os pseudocomandos já
estiverem detalhados em termos da
pseudolinguagem, pode-se juntar as partes
montando a versão final e completa do algoritmo.
26
Métodos de Criação de Programas
c) Método Misto
Controles de caráter geral e as ações mais
simples são desenvolvidas diretamente e a
técnica de refinamentos sucessivos fica somente
para as ações lógicas consideradas mais
complexas.
Observação: Em qualquer dos métodos, pode-se
desenvolver as ações lógicas bem definidas na
forma de procedimentos (ou funções). A
utilização destes módulos funcionais constitui
uma técnica (programação modular) que
geralmente diminui o esforço do programador e
aumenta a qualidade de seus programas.
27
Exercícios
1. Desenvolver os algoritmos a seguir,
utilizando o método direto.
a) Ler uma temperatura em graus Celsius e apresentá-
la convertida em graus Fahrenheit. A fórmula de
conversão: F (9*C+160)/5
b) Calcular e apresentar o volume de uma lata de óleo
cilindrica, a partir da leitura do raio da base e da
altura.
c) Ler os valores do comprimento, da largura e da
altura de uma caixa, calcular e imprimir o seu volume.
28
2. Construir um algoritmo para ler 5 valores
inteiros, calcular e imprimir a soma desses
valores.
3. Construir um algoritmo para ler 6 valores
reais, calcular e imprimir a média aritmética
desses valores.
4. Fazer um algoritmo para gerar e imprimir o
resultado do número H, sendo H = 1 + 1/2 +
1/3 + 1/4 + 1/5.
5. Construa em C os algoritmos acima.
DCC 120 Laboratório de Programação
30
Tipos de dados
Impressão
Formatação da Impressão
Variáveis
Entrada de Dados
31
São nomes usados para se fazer referência a
variáveis, funções, rótulos e vários outros
objetos definidos pelo usuário.
Exemplos:
a, b, peso, i, contaCorrente, saldo, x1, x2......
OBS: A linguagem C é case sensitive, ou seja, as letras
maiúsculas diferem das minúsculas.
32
Quando você declara um identificador dá a ele um tipo.
Um tipo de objeto de dados determina como valores de
dados são representados, que valores pode expressar,
e que tipo de operações você pode executar com estes
valores.
1.7E-308 a 1.7E+308
(15 casas de precisão)8 bytesdouble
3.4E-38 a 3.4E+38
(6 casas de precisão)4 bytesfloat
-2147483648 a 21474836474 bytesint
-128 a 127
(incluindo letras e símbolos)1 bytechar
FaixaEspaço que ocupa na memóriaTipo
Obs.: Alguns sistemas trabalham com valores inteiros de 2 bytes,
com faixa de -32768 a 32 767.
33
A exibição dos resultados do processamento e de
mensagens é feita através da função pré-definida printf(),
cujo protótipo está contido também no arquivo stdio.h. Sua
sintaxe é a seguinte:
printf("Expressão" , Lista de argumentos );
Onde:
Expressão: contém mensagens a serem exibidas,
códigos de formatação que indicam como o conteúdo
de uma variável deve ser exibido e códigos especiais
para a exibição de alguns caracteres especiais.
Lista de argumentos: pode conter identificadores de
variáveis, expressões aritméticas ou lógicas e valores
constantes.
34
#include <stdio.h>
int main( )
{
printf("Estou aprendendo a programar em C");
return 0;
}
35
ponto flutuante com dupla precisãodouble%lf
uma cadeia de caracteres.........%s
um número na notação científicafloat ou double%e
um número em ponto flutuantefloat%f
um inteiroint%d ou %i
um único caracterechar%c
Elemento armazenadoTipoCódigo
#include <stdio.h>
int main( )
{
printf("Valor recebido foi %d" ,10);
return 0;
}
36
#include <stdio.h>
int main()
{
printf("Caracter A: %c" , 'A');
return 0;
}
#include <stdio.h>
int main()
{
printf("Valor inteiro %d e um float %f" ,10 ,1.10);
return 0;
}
37
#include <stdio.h>
int main()
{
printf("Minha string: %s", "Entendi tudo!!!! ");
return 0;
}
#include <stdio.h>
int main()
{
printf("Deveria imprimir um float, ");
printf("mas mandei imprimir um inteiro: %d" ,1.10);
return 0;
}
38
Impressão de Códigos Especiais
#include <stdio.h>
int main()
{
printf("\t\tx\n");
printf("\tx\t\tx\n");
printf("\t\tx\n");
return 0;
}exibe o caractere %%%
exibe o caractere \\\
exibe o caractere "\"
emite um sinal sonoro (beep)\a
leva o cursor para a próxima página\f
executa um retrocesso\b
executa uma tabulação\t
leva o cursor para a próxima linha\n
AçãoCódigo
39
#include <stdio.h>
int main()
{
printf("Default: %f \n",3.1415169265);
printf("Uma casa: %.1f \n",3.1415169265);
printf("Duas casas: %.2f \n",3.1415169265);
printf("Tres casas: %.3f \n",3.1415169265);
printf("Notacao Cientifica: %e \n",3.1415169265);
return 0;
}
Por default, a maioria dos compiladores C exibem
os números de ponto flutuante com seis casas
decimais.
Para alterar este número podemos acrescentar .n
ao código de formatação da saída, sendo n o
número de casas decimais pretendido.
40
#include <stdio.h>
int main()
{
printf("Valor: %d \n",25);
printf("Valor: %10d \n",25);
return 0;
}
O programa pode fixar a coluna da tela a partir da qual o
conteúdo de uma variável, ou o valor de uma constante
será exibido. Isto é obtido acrescentado-se um inteiro m ao
código de formatação. Neste caso, m indicará o número de
colunas que serão utilizadas para exibição do conteúdo.
41
1. Fazer um programa que imprima o seu nome.
2. Modificar o programa anterior para imprimir na
primeira linha o seu nome, na segunda linha a sua
idade e na terceira sua altura.
3. Imprimir o valor 2.346728 com 1, 2, 3 e 5 casas
decimais.
42
O nome de uma variável (identificador) é formado por um ou mais
caracteres, sendo que:
o primeiro caractere é uma letra ou sublinha ( _ );
os outros caracteres podem ser letras, algarismos ou sublinha ( _ ).
Exemplos:
a) Nomes válidos: L a de op1 V9a Lista_Notas a_2 p56 A1 _2A
b) Nomes Inválidos: x+ t.6 43x &ah $dolar Lista-Notas n! %p
Em C, letras maiúsculas e minúsculas são diferentes. Os seguintes
nomes são distintos:
PESO
Peso
peso
peSo
Uma variável não pode ter o mesmo nome de uma palavra-chave de C,
como por exemplo:
main, cout, int, float, char, short, return, case, void
43
Declaração de Variáveis
As variáveis só podem armazenar informações ou dados
sempre de um mesmo tipo (inteiro, real, caractere ou char).
Na linguagem C, a declaração de variáveis obedece a
seguinte sintaxe:
<tipo> <nome_var>;
ou
<tipo> <nome_var1>,
<nome_var2>, ..... ,<nome_varn>;
É importante não esquecer que quando se declara uma
variável, um espaço num determinado endereço na memória
é alocado para armazenar um dado que obrigatoriamente tem
que ser do mesmo tipo que o da variável.
Toda e qualquer variável deve ser declarada e sua
declaração deve ser feita antes de sua utilização no
programa.
44
Declaração de Variáveis - Exemplo
Exemplos:
int a,b, c;
char letra, d, e;
float f1;
float f2,f3;
Marque as declarações válidas:
( ) int a,
( ) char c;
( ) int a,b,a;
( ) float f1,f2,f3,4f;
( ) int meu_nro;
( ) float leitura_sensor;
45
O operador de atribuição em C é o sinal de igual =
Sintaxe:
<variavel> = <expressão>;
Exemplos:
int a,b,c,d;
a = 5;
c = 7;
b = a;
d = a + b + c;
ou
int a=5;
int c=7;
int b,d;
b=a;
d=a+b+c;
46
4Resto da divisãoBinário%
1Inversão do sinalUnário-
1Manutenção do sinalUnário+
2DecrementoUnário--
2IncrementoUnário++
3DivisãoBinário/
3MultiplicaçãoBinário*
5SubtraçãoBinário-
5AdiçãoBinário+
PrioridadeOperaçãoTipoAritméticos
47
Exemplos:
a = a + b;
a = a + 4;
a = b / 2;
a = 4 * 2 + 3; // qual o valor final de a?
b = 2 * 3 2 * 2; // qual o valor final de b?
a++; // similar a a = a + 1;
b--; // similar a b = b 1;
48
Diferente!=
Igual= =
Menor ou igual<=
Not (não)!Menor que<
Or (ou)||Maior ou igual>=
And (e)&&Maior que>
LógicosRelacionais
49
Ela é o complemento de printf() e nos permite ler dados formatados da
entrada padrão (teclado). Sua sintaxe:
scanf("expressão de controle", argumentos);
Entendendo o scanf:
......
int a;
.......
scanf ( %d , &a);
Operador utilizado para
obter o endereço de
memória da variável.
50
#include <stdio.h>
int main()
{
int num;
printf("Digite um valor: ");
scanf("%d",&num);
printf("\nO valor digitado foi %d.",num);
return 0;
}
51
#include <stdio.h>
int main()
{
int n1,n2,soma;
printf("Digite dois valores: ");
scanf("%d",&n1);
scanf("%d",&n2);
soma = n1 + n2;
printf("\n%d + %d = %d.",n1,n2,soma);
return 0;
}
52
1. Ler uma temperatura em graus Celsius (C) e apresentá-
la convertida em graus Fahrenheit. A fórmula de
conversão é F = (9*C+160)/5.
2. Calcular e apresentar o volume de uma lata de óleo,
utilizando a fórmula: volume = 3.14159*raio*raio*altura.
3. Elaborar um programa que calcule e apresente o volume
de uma caixa retangular, por meio da fórmula volume =
comprimento*largura*altura.