You are on page 1of 53

Algoritmos em C

Prof: Jonathan
Email: jonathan.andrade@ufms.br
Esqueleto de um programa em C
Declaração de
Início do
Bibliotecas
programa

Comentários

Operador de saída

Fim do Retorna o código de erro


programa ZERO para o S.O. informando
que está OK.

OBS: NUNCA DEVE SE ESQUECER DE ADICIONAR O “;” NO


FINAL DE CADA COMANDO.
Compilando e Executando
 Compilando:
 Linux:
 gcc –c <nome-do-arquivo.c> -o <nome-do-arquivo>
 Exemplo, compilar o programa soma.c.
 gcc -c soma.c –o soma
 Windows:
 gcc –c <nome-do-arquivo.c> -o <nome-do-arquivo>
 Exemplo, compilar o programa soma.c
 gcc –c soma.c –o soma.exe

 Executando
 Se não foram encontrados erros durante a compilação, então..
 Linux
 ./<nome-do-arquivo>
 Por exemplo, para o caso do soma.c: ./soma

 Windows
 <nome-do-arquivo.exe>, por exemplo: soma.exe
Exercícios no run.codes
 Acessem o sistema run.codes
 Resolvam os exercícios:
 L1-printf:
 Esse exercício pede para vocês fazerem um algoritmo para mostrar na tela um losango
formatado com o símbolo “*”.
 L2-printf
 Esse exercício pede para vocês fazerem um algoritmo para mostrar na tela uma tabela
formatada.
Professor não sei começar!!
 Passos para escrever um programa em C:
1. Escreva o esqueleto de um programa em C;
2. Declare as variáveis;
3. Inicialize as variáveis;
4. Faça a leitura de dados do programa (ENTRADA);
5. Resolva o problema / calcule o resultado (PROCESSAMENTO);
6. Mostre o resultado na tela (SAÍDA).
Declaração de Variáveis
 As variáveis são utilizadas para guardar valores na memória.
(exemplo de armário enumerado)
 São utilizadas no lugar do endereço de memória.
 São identificadas por um nome.
 Os nomes devem obedecer às seguintes regras:
1-Só podem começar por LETRA.
2-Só podem ter LETRAS, NÚMEROS e o caractere _ (sublinhado).
 Exemplos:
 A, B, A2, Contador, X_2, ABC2, Nome_Cliente (válidos)
 2A, ABC$%, A B C, Nome Cliente 2, Início (inválidos)
 A linguagem em C é sensível ao contexto (MAIÚSCULO é diferente
de minúsculo), ou seja, o nome da variável utilizada deve ser
exatamente igual a declarada!
 ex.:Se for declarada uma variável com nome “Letras”, deve ser utilizado
em todo o algoritmo o nome Letras para referenciar a variável declarada.
Declaração de variáveis
 Sintaxe
Tipo NomeDaVariável ;
 Os tipos de variáveis são os seguintes:
 int: Números sem parte decimal (Inteiro).
 float e double: Números com parte decimal (Real).
 char: Um único símbolo gráfico (Caractere).
 void: nenhum valor ou tipo definido (vazio).
 O tipo de uma variável informa a quantidade de memória, em bytes que
a variável ocupará e a forma como um valor deverá ser armazenado.

TIPO BYTES Faixa de Valores


char 1 -128 a 127
int 2 -2.147.483.648 a 2.147.483.647
float 4 -3,402823E038 a 3,402823E038
double 8 -1,175494E308 a 1,175494E308
void 0 Sem valor
Exemplos:
int valorInteiro;
int n1, n2;
char tecla;
float nota1, nota2;
double media;

OBS: se declarar nomes das


variáveis com maiúsculo ou
minúsculos elas são distintas:
int soma, Soma, SOMA, SomA;
Operadores
 Atribuição.
 Aritméticos.
 Entrada e saída.
 Condicionais:
 Lógicos.
 Relacionais.
Atribuição de valores
 Indicam o valor que uma variável deve receber
em um algoritmo.
variável = valor;
 Exemplos:
x = 2;
x = y;
x = y + 2;
Atribuição de valores
Operadores Aritméticos
 São utilizados os seguintes operadores:
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Resto da divisão inteira
Exemplos:
x = a + b;
y = 2 * x;
z = 5 / 2;
r = 5 % 2;
OBS: no caso da divisão, o resultado
poderá ser inteiro ou real dependendo do
tipo e dos valores a serem divididos:
int resultado;
float Resultado;
resultado = 5.32 / 1.05;
resultado = 5 / 2;
Resultado = 5 / 2;
Resultado = 5.32 / 1.05;
Variáveis acumuladoras e
contadores
 Variáveis que acumulam valores de operações
aritméticas anteriores e de outras variáveis em si
mesma.
Atribuição de valores simplificada
 É possível simplificar as operações de atribuição
para variáveis acumuladoras;
 Exemplos:
x =x+2; -> x+=2;
x =x-y; -> x-=y;
m =m*k; -> m*=k;
m =m/k; -> m/=k;
m =m%k; -> m%=k;
m =m+1; -> m++;
m =m-1; -> m--;
Entrada e Saída
 Entrada: indica que algum dado deve ser
fornecido ao algoritmo (programa) pelo
USUÁRIO.
 Saída: indica que algum dado deve ser fornecido
pelo algoritmo (programa) ao USUÁRIO.
Entrada
Necessita incluir a biblioteca:
#include<stdio.h>
Sintaxe: Não esquecer!
scanf(“%<tipo>”,&<nome-variavel>);
 O valor inteiro digitado pelo usuário será armazenado
na variável X. Exemplo:
scanf(“%i”,&X); %i ou %d -> inteiro (int)
 Os dois valores reais (float ou double) digitados serão
armazenados nas variáveis Y e Z.
scanf(“%f %f”,&X,&Z); %f -> double ou float
 O caracter digitado será armazenado na variável T;
scanf(“%c”,&T); %c -> caracter (char)
Saída
Necessita incluir a biblioteca:
#include<stdio.h>
Sintaxe:
printf(“MENSAGEM %<tipo-saida>
”,<nome-variavel>); Caractere para
Exemplos: indicar pula linha
printf(“BOA NOITE! \n”);
printf(“A soma é %i”,soma);
printf(“A média é %f”,media);
printf(“Os valores de X %i , Y %d ,
Z %f e T %c são:”,X,Y,Z,T);
Exercício
 Calcule a média de três notas de um aluno.
Solicite que o usuário insira os valores das três
notas. Imprima a 3 notas e a média dos números.
Exercício
 Calcule a média de três notas de um aluno.
Solicite que o usuário insira os valores das duas
notas. Imprima a 3 notas e a média dos números.
Exercício
Exercícios
 Faça um algoritmo para ler um valor inteiro e
mostrar na tela a todos os valores da tabuada
desse número de 1 a 10. Considere que o valor
inteiro seja 4, logo a tabua de 4 é:
 4; 8; 16; ... 40
 Utilize apenas somas!
 Seu algoritmo deve mostrar na tela a tabuada
completa, com o seguinte formato:
 4x1=4
 4x2=8
 ...
 4x10=40
Exercícios
 Tabuada
Exercício
 Reescreva o algoritmo abaixo para ler dois
valores inteiros e mostrar esses valores
invertidos.
 OBS: utilizar no máximo três variáveis E não
modificar a entrada e saída no código abaixo.
Operadores Relacionais
 Utilizados para verificarem a magnitude entre
dois valores ou expressões:
Operador Significado Exemplo
> Maior do que x>7
>= Maior ou igual a x >= 5
< Menor do que x<7
<= Menor ou igual a x <= 5

== Igual a x == 1
!= Diferente de x != 1
 Como resultado, esse tipo de operador retorna:
 O valor 1 (um), se a expressão relacional for verdadeira.
 O valor 0 (zero), se a expressão relacional for falsa.
 Pode se utilizar o tipo int para armazenar o retorno.
Operadores Lógicos
 Certas situações não podem ser modeladas
apenas utilizando os operadores aritméticos e/ou
relacionais.
 Determinar se uma sequência está entre uma faixa
de valores, por exemplo, x está entre 0 e 5.
 0 <= x <= 5
 Podemos utilizar 3 operadores lógicos para avaliar
duas expressões relacionais:
 && (AND): é verdadeiro somente se as duas expressões
são verdadeira
 || (OR): é falso somente se as duas expressões são falsas
 ! (NOT): inverte o resultado da expressão, se era
verdadeira passa a ser falso e vice-versa.
Operadores Lógicos
 Analise o seguinte algoritmo:

 Quais são os possíveis valores de x para a variável


vlogica1 ser verdadeira?
 E para a variável vlogica2 ser verdadeira?
Operadores Lógicos
 Considere o problema de determinar se uma pessoa é criança,
adolescente ou adulto. De acordo com as idades podemos
dizer que:
 A idade de uma criança é até 12 anos;
 Um adolescente tem idade entre 12 e 18 anos;
 Uma pessoa a partir de 18 anos é considerada adulta.
 Faça um algoritmo que leia um valor de idade e mostre na tela
a categoria da pessoa. Utilize os valores 0 e 1 para indicar
quando uma pessoa é criança, adolescente ou adulta. Por
exemplo, suponha que com a idade de valor 4 a pessoa é uma
criança, então a mensagem deve ser com o valor 1 para
criança e 0 para as demais :
 “Criança 1, Adolescente 0, Adulto 0”
Desvio Condicional
 Os comandos de um algoritmo são executados
um após o outro na ordem que foram definidos e
nenhum é ignorado.
 Porém, há situações em que um conjunto de
comandos seja executado somente se
determinada condição for verdadeira.
 Exemplo:
Se (x > 7) então
x é maior que 7
Desvio Condicional
 Como utilizar em C?
 if (<expressão relacional>) {
 Sequencia de comandos...
}

 Porém, quando queremos tomar mais de uma


ação, por exemplo, executar uma outra
sequência de comandos para o caso em que a
expressão for falsa, como devemos fazer?
Desvio Condicional
 Se (<expressão relacional>) entao
Sequencia de comandos...
 Senao
Outra sequencia de comandos...
Comando Switch
 Além do IF e ELSE, existe um comando de seleção
múltipla chamado switch.
 Só funciona para verificar se valores inteiro ou caractere é
igual a uma constante.

Quebra a execução
da sequência de
comandos.
Desvio Condicional
 Exemplo de algoritmo
 Faça um programa que leia um número e mostre o seu
valor absoluto.

 Faça um algoritmo que calcule o preço do ingresso no


cinema. O preço varia de acordo com a idade da pessoa. O
preço para uma pessoa com idade inferior a 16 anos é 17
reais. O preço para uma pessoa com idade superior a 65
anos é de 15 reais. O preço é 20 reais para qualquer outra
pessoa.
Exercícios de Desvio Condicional
1. Faça um programa que leia dois números e mostre qual
deles é maior.
2. Faça um programa que leia dois números e mostre os
dois números em ordem crescente.
3. Faça um programa que leia dois números e mostre o
maior deles. Se, por acaso, os dois números forem
iguais, imprima “Números Iguais!”.
4. Calcule a média aritmética de 3 notas de um aluno e
mostre, além do valor da média, uma mensagem
“Aprovado”, caso a média seja superior ou igual a 6,0 ou
mostre “Reprovado”, caso contrário.
Estrutura de Repetição
 Indicado para um algoritmo que necessita
executar um conjunto de comandos
repetitivamente.
Estrutura de Repetição
 Componentes de um loop (laço):
 Inicialização:
 Definir as condições iniciais antes de começar o laço.
 Teste/Condição de parada:
 Definir uma expressão relacional para verificar se o laço
deve continuar.
 Algumas vezes os testes são verificados antes ou após o
bloco de comandos.
 Bloco de repetição:
 Contém o conjunto de comandos a serem repetidos
 Mudança de estado/Incremento:
 Mudança de estado de uma das variáveis do teste para
permitir que o laço termine, ou seja, não repita infinitamente
o conjunto de comandos.
Estrutura de Repetição
 Existem 3 tipos de estruturas de repetição em C:
 Laço For, While, Do-While.
 Sintaxe
 Laço PARA:

 Laço Enquanto Laço Repita-Até


Estrutura de repetição
 Implemente um algoritmo que solicite um valor
inteiro positivo N e mostre a soma dos valores de
1 até N.
 Entrada: solicitar um valor N do usuário
 Processamento: calcular a soma dos valores de 1
até N
 1+2+3+...+N
 Saída: mostrar na tela a soma dos valores.

 OBS: Implemente 3 algoritmos cada um com laço


de repetição diferente.
Estrutura de repetição
 Resolução do exercício com laço FOR:

 Compilando e Executando (Linux):


 gcc -c Soma.c -o Soma
 ./Soma
Estrutura de repetição (while)
 Implemente um algoritmo que leia dois valores
inteiros a e b e mostre na tela todos os valores
de a até b. Exemplo, considere os valores de a=3
e b=5, a saída deve ser:
345
 Implemente utilizando apenas o laço WHILE!
Estrutura de repetição (while)
 Resolução do exercício: Execução do Algoritmo
LINHA a b a<b
4 ? ? ?
5 2 5 1
7 2 5 1
8 2 5 1
9 3 5 1
10 3 5 1
8 3 5 1
9 4 5 1
10 4 5 1
8 4 5 1
9 5 5 0
10 5 5 0
8 5 5 0
Estrutura de repetição
 Exercícios Laço PARA
1. Faça um programa que leia um número inteiro
positivo N e imprima todos números naturais de 0
até N em ordem crescente.
2. Faça um programa que leia um número inteiro
positivo N e imprima todos números naturais de 0
até N em ordem decrescente.
3. Faça um programa que solicite do usuário 10
valores. Some esses valores e apresente o
resultado na tela.
4. Escreva um programa que leia 10 números
inteiros positivos e mostre na tela o maior e o
menor valor lido.
Variáveis compostas
homogêneas (“Arrays”)
 Estruturas utilizadas para armazenar um conjunto
de variáveis ou valores: vetores e matrizes.
 Vetor e Matriz pode ser considerando como um
conjunto finito que contém variáveis de um
mesmo tipo.
 Por exemplo, um vetor pode ser utilizado para
armazenar 100 notas de alunos. Ao invés de
declarar 100 variáveis com diferentes nomes para
armazenar as notas.
Vetor
 Como declaramos um vetor em C
 <tipo> <nome-do-vetor> [<tamanho>];
 Por exemplo,
 int vetor [100];
 char texto [50];
 float notas[100];

 Manipulando um vetor
 Para acessar as posições de um vetor
 <nome-do-vetor>[<posição>]
 O valor de posição deve ser inteiro e positivo e dentro do intervalo
de 0 até <tamanho-1>.
 Exemplos:
o valor = vetor[1];
o vetor[2] = vetor[3];
o vetor[3] = valor;
Vetor
 Como declaramos um vetor em C
Vetor
 Armazene 100 valores inteiros no vetor e mostre-
os na tela na ordem inversa de leitura.
Exercícios - Vetor
 Armazene 10 valores inteiros informados pelo
usuário no vetor e mostre na tela o quadrado de
cada valor lido.
Exercícios - Vetor
 Faça um programa que manipule um vetor de inteiros
para armazenar 6 valores da seguinte maneira:
1. Atribua os seguintes valores ao vetor: 1, 0, 5, -2,
-5 e 7;
2. Armazene em uma variável a soma dos valores
das posições [0], [1] e [5] do vetor e mostre na
tela a soma;
3. Modifique o vetor na posição [4], atribuindo a
essa posição o valor 100;
4. Mostre na tela cada valor do vetor, um por linha.
Vetor (exceção para string)
 Armazenando um conjunto de caracteres ou
string em C.
 Declare um vetor de caracteres
 char texto[100]; //armazenar 100 caracteres
 Leia um texto ou string do usuário
 scanf(“%s”,texto); //Armazendo 100 caracteres do usuário
no vetor texto.
 Mostre na tela o texto lido
 printf(“%s”,texto); //Mostrando os 100 caracteres do vetor.
 Para acessar cada posição de texto, o
procedimento é o mesmo descrito no slide 33.
 caracter = texto[1];
 texto[2] = texto[3];
 texto[3] = caracter;
Exercícios string
 Implemente um algoritmo para ler uma string do
usuário e mostre-a na ordem inversa.
Matriz
 Manipulando uma matriz em C
 Considere uma matriz 4x4
 Por exemplo, Matriz 4x4
 int matriz [4][4];
1,1 1,2 1,3 1,4
 Acessando a posição 2,1
 matriz[2][1] = 10; 2,1 2,2 2,3 2,4
 Acessando a posição 4,3
 matriz[4][3] = 8; 3,1 3,2 3,3 3,4

4,1
0 4,2
0 4,3
0 4,4
0

10 0 0 0

0 0 0 0

0 0 8 0
Matriz
 Somando os valores de uma matriz 3x3.
1 2 3

4 5 6 Soma = 45
7 8 9
Matriz
 Algoritmo:

Saída

You might also like