Você está na página 1de 27

ESCOLA

 ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    


Curso  Técnico  em  Eletroeletrônica  
 
 

APOSTILA  DE  PROGRAMAÇÃO  –  C3.ET1.ELE  


ETAPA  1  
 

 
 
 
 
 
 
 
 
Apostila  de  Algoritmos  e  Linguagem  C  
 

Programação  Estruturada  
PROFª  INGRID  SANTOS  
Em  construção...  

  1  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 

Algoritmos  
1 ABORDAGEM  CONTEXTUAL    
 

O uso de algoritmos é quase tão antigo quanto à matemática. Com o passar do tempo, entretanto, ele foi
bastante esquecido pela matemática. Com o advento das máquinas de calcular e mais tarde os computadores, o
uso de algoritmos ressurgiu com grande vigor, como uma forma de indicar o caminho para a solução dos mais
variados problemas.
Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo.
Algoritmo é o caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são
muitos.
Ao longo dos anos surgiram muitas formas de representar os algoritmos, alguns utilizando linguagens
semelhantes às linguagens de programação e outras utilizando formas gráficas.
O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios.
 

1.1 CONCEITO  DE  ALGORITMOS  


 

É um processo de cálculo matemático ou de resolução de um grupo de problemas semelhantes, em que se


estipulam, com generalidade e sem restrições. Podemos dizer também, que são regras formais para obtenção de
um resultado ou da solução de um problema, englobando fórmulas de expressões matemáticas. Em
processamento de dados, é muito comum relacionar a palavra algoritmo com diagramação de bloco, já que
muitas fórmulas estão dentro das simbologias de processos para a resolução de um determinado problema, seja
na área financeira, seja uma folha de pagamento, bem como, em qualquer situação que exija um resultado final
“correto” e/ou “coerente”.
Resumindo,
Um algoritmo é um conjunto de instruções finitas colocados em uma seqüência lógica, com oobjetivo de
resolver um determinado problema.

Algoritmo  
__________
Problema   __________
Solução    
__________
__________
__________
__________  

Figura 1: Resolução de problemas com algoritmos

Para se ter um algoritmo é necessário:


• Que tenha um número finito de passos;
• Que cada passo esteja precisamente definido, sem possíveis ambigüidades
• Que existam zero ou mais entradas tomadas de conjuntos bem definidos
• Que existam uma ou mais saídas
• Que exista uma condição de fim sempre atingida para quaisquer entradas e num tempo finito.

  2  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
1.2  FORMAS  DE  REPRESENTAÇÃO  DE  ALGORITMOS  
 

Dentre as formas de representação de algoritmos mais conhecidas podemos citar: Descrição Narrativa,
Fluxograma Convencional e Pseudocódigo.

1.2.1  Descrição  Narrativa  


 

Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural.


Exemplo:

• Receita de bolo:

 Pegue uma tigela


 Coloque todos os ingredientes
 Misture os ingredientes
 Unte a forma com manteiga
 Despeje a mistura na forma
 Se houver coco ralado
 então despeje sobre a mistura
 Leve a forma ao forno
 Enquanto não corar
 deixe a forma no forno
 Retire do forno
 Deixe esfriar

1.2.2  Pseudocódigo  

 
Esta forma de representação de algoritmos, também conhecida com português estruturado ou portugol, é
bastante rica em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos.
Esta representação é suficientemente geral para permitir que a tradução de um algoritmo nela
representado para uma linguagem de programação específica seja praticamente direta.

Representação  d e  A lgoritmo  em  forma  d e  pseudocódigo  

Algoritmo  <nome_do_algoritmo>  
Var

<seção de declaração de variáveis>

Inicio

<corpo do algoritmo>

fimalgoritmo

Onde:

  3  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Algoritmo é uma palavra que indica o início da definição de um algoritmo em forma depseudocódigo.
<nome_do_algoritmo> é um nome simbólico dado ao algoritmo com a finalidade de distingui-lodos demais.
<declaração_de_variáveis>consiste em uma porção opcional onde são declaradas asvariáveis globais usadas no
algoritmo principal e, eventualmente, nos subalgoritmos.
<subalgoritmos>consiste de uma porção opcional do pseudocódigo onde são definidos ossubalgoritmos.
Início e Fim são respectivamente as palavras que delimitam o início e o término do conjunto deinstruções do
corpo do algoritmo.

1.  3    REPRESENTAÇÃO  DE  ALGORITMOS  X  LINGUAGEM  C  


 

ALGORITMOS   LINGUAGEM  C  
Algoritmo  Exemplo   <inclusão  das  b ibliotecas>  
var   main(  )  
               <declaração  d e  variáveis>   {  
inicio                  <declaração  das  variáveis>  
               <corpo  do  a lgoritmo>                  <  corpo  do  programama>  
fim   }  
   

1.4   FATORES   A   SEREM   LEVADOS   EM   CONSIDERAÇÃO   NA   CONSTRUÇÃO   DE  


ALGORITMOS  
 

Complexidade: A complexidade pode ser vista como um sinônimo de variedade, as quaisdevem ser
previstas na sua solução. Deve-se fazer o máximo para diminuir a complexidade,a fim de controlar o problema e
encontrar a solução. Deve-se diferenciar O que de Como. Aforma errada de interpretação de um problema pode
levar a respostas irrelevantes à soluçãoalmejada ou até mesmo a nenhuma solução.
Legibilidade: Mede a capacidade de compreensão de um algoritmo por qualquerobservador, a clareza
com que sua lógica está exposta. Quanto mais legível for umalgoritmo, menor será sua complexidade.
Portabilidade: para trabalhar os algoritmos usa-se uma pseudo-linguagem, que visa apermitir a
representação dos algoritmos através da língua portuguesa (portuguêsestruturado). Estes algoritmos poderão ser
convertidos facilmente para qualquer linguagemde programação usual.
Técnica de resolução por método Cartesiano: é um método que ataca um problemagrande, de difícil
solução, dividindo-o em problemas menores de soluções mais fáceis
Planejamento reverso: consiste em, a partir do resultado final, determinar quais são oscomponentes
básicos para a solução.

Referencias: http://www.cefetrn.br/~ajdsouza/algo/PDF/aula1.pdf

  4  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 

2    TÉCNICAS  BÁSICAS  DE  PROGRAMAÇÃO  


 

2.1  TIPOS  DE  INFORMAÇÕES  


 

Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas
em sua memória. Estas informações podem ser classificadas em dois tipos: instruções e dados.
As instruções comandam o funcionamento da máquina e determinam a maneira como devem ser
tratados os dados.
Os dados são as informações a serem processadas pelo computador. Os dados podem ser
classificados em três tipos, que sintetizam os padrões utilizados na maioria das linguagens: numéricos,
caracteres e lógicos.

2.1.1  Tipos  inteiros  


 

É toda e qualquer informação numérica que pertença ao conjunto dos números inteiros (positivo,
negativo ou nulo). Exemplos:
• A quantidade de funcionários de uma empresa é um dado inteiro, pois não existe parte fracionária
(não há ½ pessoa);
• O número de cheques emitidos por um correntista (Não há como emitir uma quantidade fracionária
de cheques);

2.1.2  Tipos  reais  


 

É toda e qualquer informação numérica que pertença ao conjunto dos números reais (positiva,
negativa, nula, inteira e fracionária). Exemplos:
• O valor a pagar por uma compra em uma loja: real, pois representa um valor monetário que pode
incluir centavos (uma compra pode até resultar num valor exato, como R$100,00, mas a natureza
do dado continua sendo real);
• Litros abastecidos em um posto de gasolina: é um tipo de dado real, pois é possível fazer um
abastecimento de uma quantidade fracionária de litros (Ex.: 23.7 litros)
• Altura de uma pessoa em metros: real, pois normalmente medimos a altura com duas casas
decimais (Ex.: 1,83).

Observação:
• Um dado real, é representado somente por dígitos, ponto decimal e sinal de mais ou de menos,
qualquer outra escrita do número será considerada um erro de sintaxe.
Exemplo: R$20,50  20.50 (retira-se o símbolo monetário e troca-se a vírgula por ponto).

  5  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
2.1.3  Tipo  caractere  
 

Representa um caractere a ser armazenado na memória. Um caractere pode ser uma letra, um dígito
ou um símbolo especial. Todo caractere é indicado entre aspas (“”). Exemplos:
• A opção escolhida por um aluno numa questão de múltipla escolha é um dado caractere, se
considerarmos que ele pode escolher entre A e E;
• O sinal de pontuação no final de uma frase é um dado do tipo caractere, pois pode ser o sinal “.” ou
ainda “?” ou “!”.

2.1.4  Cadeia  de  Caracteres  


 

Representa um conjunto de caracteres a ser armazenado na memória, que pode ser composto por
letras, dígitos ou outros símbolos. Como num caractere, uma cadeia de caracteres também é indicado entre
aspas (“”). Também é conhecido como dado Literal, Texto ou String. Exemplos:
• O nome de um vendedor em uma loja: é uma cadeia, pois é composto por letras e espaços (Ex.:
“Carla da Rosa”);
• Um telefone de um cliente de uma corretora, pois pode ser representado da seguinte forma: 5555-
1234 (uma cadeia composta por dígitos e o símbolo de traço). Mesmo que seja representado apenas
por dígitos (55551234), a sua natureza não é um valor numérico;
• Endereço de entrega de um produto (Ex.: “Rua das Flores, 23 – Grupo 8”).

2.1.5  Tipos  Lógicos  


 

Os tipos dados apresentados são utilizados para representar dados numéricos, e alfanuméricos, porém há
situações que há necessidade de representar um estado, uma situação que só pode ser verdadeira ou falsa (e
nenhuma outra a mais), neste caso usa-se então o dado lógico (ou booleano, por ter sido desenvolvido na
álgebra de Boole). Exemplos:
• Um cheque emitido pode ou não ter fundos: se quisermos armazenar a situação deste cheque (não o
valor, mas seu estado), já que ter fundos é uma situação que só pode ser verdadeira ou falsa;
• Estado de funcionamento de um automóvel: pois o automóvel só pode estar ligado ou desligado.

2.2  TIPOS  DE  DADOS:  ALGORITMOS  X  LINGUAGEM  C  


 

ALGORITMOS   LINGUAGEM  C  
inteiro   int  
real   float,  double  
caracter   char  
literal  ou  cadeia  d e  caracteres   string  
logico   boolean  

  6  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
2.3  OPERADORES  E  EXPRESSÕES  
 

2.3.1  Operadores  Aritméticos  


 

Os operadores são símbolos conectivos usados para efetuar algum cálculo numérico.
+ (adição) ** ou ^ (potenciação)
- (subtração) div ou # (divisão inteira)
* (multiplicação) mod ou % (resto da divisão)
/ (divisão)

Exemplos:
2+3 é igual a 5
7*4 é igual a 28
3.2*9 é igual a 28.8
5/2 é igual a 2.5
2-9 é igual a -7
11 # 3 é igual a 3 (o quociente de uma divisão inteira)
11 % 3 é igual a 2 (o resto da divisão inteira)
11 div 3 é igual a 3 (o quociente de uma divisão inteira)
11 mod 3 é igual a 2 (o resto da divisão inteira)

2.3.2  Operadores  Relacionais  


 

Como o próprio nome indica, um operador relacional existe para estabelecer uma relação entre dois
elementos, cujo resultado da comparação será sempre falso ou verdadeiro.
= (igual) <= (menor ou igual)
< (menor que) >= (maior ou igual)
> (maior que) <> (diferente)
Exemplos:
3 > 4 é igual a falso
10 >= 9 é igual a verdadeiro
-1 > -2 é igual a verdadeiro
7.3 <> 8.9 é igual a verdadeiro
4 < 3 é igual a falso

2.3.3  Operadores  lógicos  

  7  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Estes operadores permitem estender o uso dos operadores relacionais, estabelecendo composições
lógicas mais sofisticadas.
E (conjunção de operação)
Ou (disjunção de operação)
Não (negação de operação)

Tabela verdade do operador E

X Y XeY
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Falso
Falso Verdadeiro Falso
Falso Falso Falso

Tabela verdade do operador OU

X Y X ou Y
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Verdadeiro
Falso Verdadeiro Verdadeiro
Falso Falso Falso

Tabela verdade do operador NÃO

X NAO X
Verdadeiro Falso
Falso Verdadeiro

2.3.4  Operador  de  atribuição  


 

Um operador de atribuição serve para atribuir um valor ou um resultado de uma expressão a uma
variável, o mesmo que acontece na matemática quando temos a expressão X=5 quer dizer que o valor de X é 5,
em algoritmos usamos  ou := para representar o igual (=) da matemática.

Exemplos:

X:=5 ou X5

X:= 5+2 ou X5+2

2.3.5  Montagem  de  Expressões  

Assim como na matemática, pode ser necessário fazer combinações entre os operadores. Além dos
operadores, uma expressão pode conter também símbolos de parênteses, para mudar a prioridade do
cálculo.
A tabela a seguir apresenta a prioridade assumida para o cálculo de expressões:

  8  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
1º Lugar Parênteses mais internos
2º Lugar Funções
3º Lugar Operadores aritméticos 1º: Potenciação
2º: Multiplicativos (*, /, #, %)
3º: Aditivos (+, -)
4º Lugar Operadores Relacionais
5º Lugar Operadores Lógicos 1º: Nao
2º: e
3º: ou

2.4  OPERADORES:  ALGORITMO  X  LINGUAGEM  C  


 

OPERADORES ALGORITMOS LINGUAGEM C


Aritméticos +, -, *, /, div, mod +, -, *, /, np* , %
Relacionais >, <, >=, <=, =, <> >, <, >=, <=, = =, !=
Lógicos e, ou, nao &, | , ˜
Atribuição :=,  =
             *np=não  possui  

2.5  VARIÁVEIS  
 

Definição de variável é tudo aquilo que está sujeito a variações, que é incerto, instável ou inconstante.
São áreas na memória do computador utilizadas pelo programa para guardar valores que serão usados
por eles.
Cada variável pode ter associada a ela um valor de um determinado tipo de dado. Sendo assim, têm-se
variáveis do tipo numérico, caractere e lógico.
Uma analogia muito comum é imaginar uma variável como uma caixinha dentro da memória do
computador. Esta caixa tem a capacidade de guardar um dado de certo tipo, e o nome da variável é como uma
etiqueta colada na frente da caixa. Exemplo:

18   Maria  
idade   nome_aluno  

2500   0,423  
salario   Taxa_imposto  

MEMÓRIA  
As variáveis existem na memória durante a execução do algoritmo. Quando ele termina, é como se
todos os dados fossem apagados, e as caixas destruídas.

2.5.1 Nomenclatura  de  variávies  


 

  9  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Uma variável possui três atributos: um nome, um tipo de dado, e a informação por ela guardada.
Para nomear uma variável deve-se seguir algumas regras:
• Um nome de variável deve necessariamente começar com uma letra;
• Um nome de variável pode ter um ou mais caracteres;
• Um nome de variável não pode conter nenhum símbolo especial, exceto o anderline (_), nenhum acento
e espaço em branco;
• Um nome de variável não poderá ser uma palavra reservada a uma instrução da linguagem usada;
• Preferencialmente devem ter relação com o valor que a variável está guardando.
Exemplos de nomes de variáveis:

Válidos: Inválidos
nome 1lugar
x Endereço
endereco Salário
salario Nome empresa
nome_empresa _desconto
valor1

2.5.2  Declaração  das  variáveis    

Todas as variáveis utilizadas em algoritmos devem ser definidas antes de serem utilizadas. Isto se faz
necessário para permitir que o compilador reserve um espaço na memória para as mesmas.
Nos algoritmos, todas as variáveis serão definidas no início do mesmo, por meio de um comando de
uma das seguintes formas:
var
nome_variavel: tipo_de_dado_da_variavel
lista_de_nomes_das_variaveis: tipo_de_dado
Exemplos:
var
nome:literal
nome, endereço:literal
salario:real

2.6  VARIÁVEIS:  ALGORITMOS  X  LINGUAGEM  C  

ALGORITMOS LINGUAGEM C
Nome_variável:tipo_de_dado Tipo_de_dado nome_variável

  10  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Exemplos: Exemplos:
opcao: caracter char opcao;
Salario:real float salario;
Idade: inteiro int idade;

  2  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 

3  INSTRUÇÕES  PRIMITIVAS  

Como o próprio nome diz, instruções primitivas são os comandos básicos que efetuam tarefas essenciais
para a operação dos computadores, como entrada e saída de dados (comunicação com o usuário e com
dispositivos periféricos), e movimentação dos mesmos na memória. Estes tipos de instruções estão presentes na
absoluta maioria das linguagens de programação.

3.1  COMANDOS  DE  ATRIBUIÇÃO  

O comando de atribuição ou simplesmente atribuição, é a principal maneira de armazenar uma


informação numa variável. Sua sintaxe é:

<nome_de_variável>:=<expressão>
Exemplo:
Nome:= “Ingrid”
Preco:= 15.85
Quant:=5
Total:= preço*quant

3.2  COMANDO  DE  SAÍDA  DE  DADOS  

O comando de saída de dados é definido como escreva e é utilizado para exibir uma mensagem ou
informações contidas na memória dos computadores na tela do usuário.

Sintaxes para a instrução:

• Escreva (variável) Exemplo: escreva (nome)


• Escreva (lista_de_variáveis) Exemplo: escreva (nome, end)
• Escreva (literal) Exemplo: escreva (“Digite seu nome”)
• Escreva (literal, variável) Exemplo: escreva (“Seu nome é ”, nome)

3.3  COMANDO  DE  ENTRADA  DE  DADOS

O comando de entrada de dados é definido como leia e atribui um valor lido através do teclado para
uma variável especificada.
Sintaxes usadas:
• Leia (variável) Exemplo: leia (nome)
• Leia (lista_de_variáveis) Exemplo: leia (nome, end)

  2  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
3.4  INSTRUÇÕES  PRIMITIVAS:  ALGORITMOS  X  LINGUAGEM  C  

COMANDO ALGORITMOS LINGUAGEM C


Atribuição := ou  =
Entrada de dados Leia() scanf()
Saída de dados Escreva() printf()

4  ESTRUTURA  DE  CONTROLE  DE  FLUXO  DE  EXECUÇÃO  

Na prática, muitas vezes é necessário executar ações diversas em função dos dados fornecidos ao
algoritmo. Em outras palavras, dependendo do conjunto de dados de entrada do algoritmo, deve-se executar um
conjunto diferente de instruções. Além disso, pode ser necessário executar um mesmo conjunto de instruções
um número repetido de vezes. Em resumo é necessário controlar o fluxo de execução das instruções (a
seqüência em que as instruções são executadas num algoritmo) em função dos dados fornecidos como entrada
do mesmo.
De acordo com o modo como o controle do fluxo de instruções de um algoritmo é feito, as estruturas
básicas de controle são classificadas em:
• Estruturas seqüenciais
• Estruturas condicionais
• Estruturas de repetição

4.1    ESTRUTURA  SEQÜENCIAL  

Na estrutura seqüencial os comandos de um algoritmo são executados numa seqüência pré-estabelecida.


Cada comando é executado somente após o término do comando anterior.
Uma estrutura seqüencial é delimitada pelas palavras-reservadas Início e Fim e contém basicamente
comandos de atribuição, comandos de entrada e comandos de saída.
Exemplos:

1. Algoritmo para escrever a mensagem “Boa noite” na tela:


Algoritmo Exemplo1
Variaveis

Inicio
Escreva (“Boa noite!”)
Fim

2. Algoritmo para ler um número digitado pelo usuário e escrever o valor desse número multiplicado por 2.
Algoritmo Exemplo2
Variaveis
Numero: real
Inicio
  1  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Escreva (“Digite um número”)
Leia (Numero)
Numero:= Numero*2
Escreva (“O dobro do número digitado é ”, Numero)
Fim

4.1.1  Exemplos  em    Linguagem  C  

ALGORITMOS LINGUAGEM C
Algoritmo Exemplo1 #include <stdio.h>
Variaveis main()
{
Inicio printf(“Boa noite!”);
Escreva (“Boa noite!”) }
Fim

Algoritmo Exemplo2 #include <stdio.h>


Variaveis main()
Numero: real {
Inicio float numero;
Escreva (“Digite um número”) printf(“Digite um numero:”);
Leia (Numero) scanf(“%f”,&numero);
Numero:= Numero*2 numero=numero*2;
Escreva (“O dobro do número digitado printf(“O dobro do numero digitado é
é ”, Numero) %f”,numero);
Fim }

4.1.2  Exercícios  de  Fixação    

1. Construir um algoritmo que leia um número e escreva o valor deste número dividido por 2.

2. Construir um algoritmo que leia dois números e escreva a média aritmética entre eles.

3. Escreva um algoritmo que leia quatro números e escreva o valor da soma desses números.

4. Escrever um algoritmo que leia um valor que corresponde a um valor em hora e escreva quantos
segundos tem nessa hora.

5. Escreva um algoritmo que leia três números (A, B, C) e calcule a seguinte expressão:
R=A+B Q = (B+C)2
2
6. Faça um algoritmo que leia três notas de um aluno (n1, n2, n3) e a seguir calcule sua média final. A
fórmula para o cálculo da média é:
M = n1 + n2*2 + n3*3
6

  2  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 

4.2    ESTRUTURAS  DE  DECISÃO  

As estruturas condicionais são utilizadas para que seja possível executar, ou não executar, instruções do
algoritmo, de acordo com uma condição analisada.

4.2.1    Estrutura  de  Decisão  Simples  (se...entao...fimse)    

Nesta estrutura uma única condição é avaliada. Dependendo do resultado desta avaliação, um comando
ou conjunto de comandos serão executados (se avaliação for verdadeira) ou não serão executados (se avaliação
falsa).
Sintaxe usada:
Se (condição) entao
Instrução1
Instrução2
Fimse
Exemplo:

Algoritmo que informa se o número digitado pelo usuário é maior do que 10.
Algoritmo exemplo_se_simples
Variaveis
num: real
Inicio
Escreva (“Digite um número”)
Leia (num)
Se (num>10) entao
Escreva (“o número digitado é maior que 10”)
Fimse
Fim

4.2.2  Estrutura  Condicional  Composta  (se...então...senão...fimse)  

Nesta estrutura uma única condição é avaliada. Se o resultado desta avaliação for verdadeira, um
comando ou conjunto de comandos serão executados. Caso contrário (avaliação falsa), um outro comando ou
conjunto de comandos serão executados.
Sintaxe usada
Se (condição) entao
Comando1 comandos executados caso
Comando2 condição for verdadeira
Senao
Comando3 comandos executados caso
Comando4 condição for falsa
Fimse
  3  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Exemplo:

Algoritmo que informa se o número digitado pelo usuário é maior ou menor que 10.
Algoritmo Exemplo_se_composto
Variaveis
num:real
Inicio
Escreva (“Digite um número”)
Leia (num)
Se (num>10) entao
Escreva (“O número digitado é maior que 10”)
Senao
Escreva (“O número digitado é menor que 10”)
Fimse
Fim
 

4.2.3    Estrutura  de  Decisão    Aninhada  o u  Encadeada  

Existem casos em que é necessário estabelecer verificação de condições sucessivas, em que uma
determinada ação poderá ser executada se um conjunto anterior de instruções ou condições for satisfeito. Sendo
a ação executada, ela poderá ainda estabelecer novas condições. Isto significa utilizar uma condição dentro de
outra condição. Este tipo de estrutura poderá possuir diversos níveis de condição, sendo chamadas de
aninhamentos ou encadeamentos.
Sintaxe usada
Se (condição1) entao
Comandos1
Senao
Se (condição2) entao
Comandos2
Senao
Se (condição3) entao
Comandos3
Senao
Comandos4
Fimse
Fimse
Fimse

Exemplo:
Algoritmo que verifica qual dos dois valores digitados pelo usuário é o maior, ou se os mesmo são
iguais.
         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Algoritmo Exemplo_se_encadeado
Variáveis
a,b:real
Inicio
Escreva (“Digite dois valores”)
Leia (a, b)
Se (a>b) entao
Escreva (a, “é o maior”)
Senao
Se (b>a) entao
Escreva (b, “é o maior”)
Senao
Escreva (“os valores são iguais”)
Fimse
Fimse
Fim

4.2.4 Estruturas  de  Decisão:  Algoritmo  X  Linguagem  C  

Estruturas Algoritmo Linguagem C


Decisão Simples Algoritmo exemplo_se_simples #include<stdio.h>
_enão_eis main()
num: real {
Inicio float num;
Escreva (“Digite um número”) printf (“Digite um número”);
Leia (num) scanf (“%f”,&num);
Se (num>10) _enão if (num>10) {
Escreva (“o número digitado é printf (“o número digitado é maior
maior que 10”) que 10”);
Fimse }
Fim }

Decisão Composta Algoritmo Exemplo_se_composto #include<stdio.h>


_enão_eis main()
num:real {
Inicio float num;
Escreva (“Digite um número”) printf (“Digite um número”);
Leia (num) scanf (“%f”,&num);
Se (num>10) _enão if (num>10) {
Escreva (“O número digitado é printf (“O número digitado é maior
maior que 10”) que 10”);
_enão }else{
Escreva (“O número digitado é printf (“O número digitado é menor
menor que 10”) que 10”);
Fimse }
Fim Fim

         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Decisão Encadeada Algoritmo Exemplo_se_encadeado #include<stdio.h>
Variáveis main()
a,b:real {
Inicio float a,b;
Escreva (“Digite dois valores”) printf (“Digite dois valores”);
Leia (a, b) scanf (“%f,%f”,&a, &b);
Se (a>b) entao if (a>b){
Escreva (a, “é o maior”) printf (“%f é o maior”,a);
Senao }else{
Se (b>a) entao if (b>a) {
Escreva (b, “é o maior”) printf ( “%f é o maior”,b);
Senao }else{
Escreva (“os valores são printf (“os valores são iguais”);
iguais”) }
Fimse }
Fimse }
Fim

4.2.5 Exercícios  de  fixação    


 

1. Escreva um algoritmo para calcular o valor de desconto de um salário. Se o valor do salário lido for
menor que R$ 500,00, então o desconto é de 10 reais, caso contrário, o desconto é de 20 reais.

2. Construir um algoritmo que leia o nome e a idade de uma pessoa. Após as leituras, o algoritmo deverá
escrever uma mensagem informando se a pessoa pode, ou não, tentar obter a carteira de motorista.

3. Escrever um algoritmo que leia dois números (x e y), após as leituras, escrever qual dos dois é o maior.
OBS: os números digitados deverão ser diferentes

4. Escrever um algoritmo que leia 3 notas e calcule a média aritmética. A seguir, escrever a média obtida e
uma mensagem indicando se o aluno foi aprovado ou reprovado. Para ser aprovado a média deverá ser
maior ou igual a 5.

4.3    ESTRUTURAS  DE  REPETIÇÃO  

As estruturas de repetição, como o próprio nome já diz, são utilizadas para REPETIR determinados
comandos do algoritmo. O número de vezes que esses comandos serão repetidos, podem ser especificados pelo
programador ou analisados de acordo com uma condição.

4.3.1    Estrutura  De  Repetição  Com  Teste  Lógico  No  Início  (enquanto...faça...fimenquanto)  

A estrutura enquanto é utilizada para se repetir comandos nos casos em que o número de repetições não
é conhecido.

         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Os comandos vão sendo executados repetidamente até que uma condição específica seja satisfeita.
Essa condição que interrompe a repetição dos comandos é conhecida como teste ou flag.
Sintaxe usada
Enquanto (condição) faca
comando1
comando2
...
comando n
fimenquanto

Exemplo:
Algoritmo que fica lendo números e escrevendo o valor do dobro de cada número lido, até que seja
digitado um número menor ou igual a zero.
Algoritmo Exemplo_enquanto
Variáveis
num:inteiro
Inicio
Escreva (“Digite um número inteiro”)
Leia (num)
enquanto (num>0) faca
escreva (num*2)
escreva (“Digite outro número ou um valor negativo para sair”)
leia (num)
fimenquanto
fim

4.3.2  Estrutura  de  Repetição  com  Teste  Lógico  no  Fim  (repita...até  que)  

Caracteriza-se por uma estrutura que efetua um teste lógico no final de um laço, verificando se é
permitido ou não executar novamente o conjunto de comandos no interior do mesmo.
Sintaxe usada
Repita
comando1
comando2
...
comandon
Ate_que (condição)

Exemplo:
Algoritmo que fica lendo números e escreve o valor lido ao quadrado, até que seja digitado um valor
negativo.

         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Algoritmo exemplo_repita
Variaveis
num:real
inicio
Repita
Escreva (“Digite um número”)
Leia (num)
Escreva (“0 quadrado do nº é ”, num^2)
Ate_que (num<0)
fim

4.3.3    Estrutura  de  Repetição  com  variável  de  controle  (para...faca...fimpara)  

A estrutura para é utilizada para repetição nos casos em que o número de repetições é conhecido, ou
seja, quando se sabe o número de vezes que serão repetidas as instruções.
Sintaxe usada
Para <variável> de <início> ate <fim> faca
comando1
comando2
...
comandoN
fimpara

Exemplo:

Exemplo

Algoritmo que escreve na tela todos os números inteiros entre 1 e 10.


Algoritmo exemplo_para
Variaveis
i:inteiro
inicio
para i de 1 ate 10 faca
escreva (i)
fimpara
fim

Existe uma condição especial em que a contagem deve ser de forma decrescente, onde o valor a variável
é decrementado em uma unidade. A sintaxe deste laço é a seguinte:

para <variável> de <início> ate <fim> PASSO -1 faca


comando1
comando2
...
comandoN
fimpara

         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 

Exemplo:

Algoritmo que escreve na tela todos os números inteiros entre 10 e 1.


Algoritmo exemplo_para
Variaveis
i:inteiro
inicio

para i de 10 ate 1 passo -1 faca


escreva (i)
fimpara
fim

4.3.4    Estruturas  de  Repetição:  Algoritmos  X  Linguagem  C  

Estruturas de Repetição Algoritmos Linguagem C


Teste Lógico no Início enquanto (condição) faca while (condição){
comandos comandos;
fimenquanto }
Teste Lógico no Fim repita do{
comandos comandos;
ate_que (condição) }while (condição);
Com Variável de Controle para variável de inicio ate fim faca for (var=inicio; var<fim; var++){
Comandos comandos;
fimpara }

EXEMPLOS
Teste Lógico no Início Algoritmo exemploEnquanto #include<stdio.h>;
Var main()
idade: inteiro {
Inicio int idade;
Escreva (“Digite sua idade”) printf(“Digite sua idade”);
Leia (idade) scanf(“%d”,&idade);
enquanto (idade<0) faca while(idade<0){
escreva(“Idade inválida!”) printf(“Idade inválida!”);
Escreva (“Digite sua idade”) printf(“Digite sua idade”);
Leia (idade) scanf(“%d”,&idade);
Fimenquanto }
Escreva (“Você tem”, idade,”anos”) printf(“Você tem %d anos”,idade);
fim }

         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
Teste Lógico no Fim Algoritmo exemploRepita #include <stdio.h>
Var main()
Idade:inteiro {
Inicio int idade;
Repita do{
Escreva (“Digite sua idade”) printf(“Digite sua idade:”);
Leia (idade) scanf(“%d”,&idade);
Ate_que (idade>0) }while (idade<=0);
Escreva (“Você tem”,idade,”anos”) printf(“Você tem %d anos”,idade);
Fim }
Com variável de controle Algoritmos exemploPara #include <stdio.h>
Var main()
i:inteiro {
idades:inteiro int idade;
inicio for (int i=0; i<10; i++){
para i de 1 ate 10 faca printf(“Digite a %d ª idade”,i+1);
escreva(“Digite a “, i,”ª idade:”) scanf(“%d”,&idade);
leia (idade) printf(“você tem %d anos”,idade);
escreva(“Você tem”,idade,”anos”) }
fiimpara }
fim

         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 

Dúvidas  sobre  a  Linguagem  C:  

Bibliotecas  <stdio.h>  e  <stdlib.h>  

Com certeza a primeira coisa que você se perguntou quando viu um código C na sua frente, foi para que
servem #include<stdio.h> e #include<stdlib.h>? o que elas fazem?
Elas são bibliotecas que agrupam um conjunto de funções que facilitam a nossa vida na hora de
programar, isso mesmo as funções printf e scanf não são propriamente do C, elas fazem parte de uma biblioteca
que está inclusa no C, então podemos dizer que as funções printf e scanf são de uma biblioteca que pode ser
inclusa no C. Utilizando a palavra chave #include <nome da biblioteca>.
A biblioteca que contém o printf e scanf é a <stdio.h>, se repararmos o nome dessa biblioteca, veremos
que seu nome é bem sugestivo ao seu propósito: stdio.h (i/o input/output) entrada e saída. Já que printf faz a
saída do programa, ou seja, exibe algo para o usuário, e o scanf faz a leitura dos dados, ou seja, recebe a entrada
do teclado.
Então se a biblioteca <stdio.h> não for incluida no cabeçario do nosso programa não tem como usarmos
as funções que estão contidas dentro dela. Faça um teste, experimente apagar a linha: #include<stdio.h>, e
compile seu programa. Veja o que acontece.
Beleza, a biblioteca <stdio.h>, cuida da parte de entrada e saida de dados, mas e a<stdlib.h> para que
ela seve? A biblioteca <stdlib.h> funciona como um emulador da prompt do sistema operacional que você está
programando, caso seja Windows ele emula todos os comandos do DOS, se você estiver programando no Linux,
quem será emulado é o Terminal.
Aqui um exemplo de como é legal brincar com a biblioteca <stdlib.h>:
#include <stdlib.h>
int main() {
system("calc");
system("pause");
return 0;
}

O que aconteceu ... legal né? Isso é só o começo de um montão de coisa que você pode fazer utilizando
o system.
Ainda resta uma dúvida. Só existem essas bibliotecas em C ? É claro que não, existem muitas outras
bibliotecas que são especificas para cada situação. Existem bibliotecas para trabalhar com contas matemáticas,
bibliotecas para manipular textos, para manipular a formatação de exibição dos dados e uma infinidade de
outras coisas. A melhor coisa a ser feita é uma pesquisa rápida pelo Google. ;)

O  que  são  aqueles  símbolos  usados  no  scanf  e  no  printf?  

Função printf()

A função printf() já foi apresentada e explicada de forma simplificada no primeiro artigo. Agora teremos a
oportunidade de rever esses conceitos e aprofundar mais no assunto.
         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 

Essa função tem por finalidade imprimir dados na tela. Isto é feito através da sintaxe:

printf(“expressão de controle”, lista de argumentos);

Na “expressão de controle” são inseridos todos os caracteres a serem exibidos na tela e/ou códigos de
formatação, responsáveis por indicar o formato em que os argumentos devem ser impressos. Esses argumentos
devem estar incluídos na “lista de argumentos” e caso contenha mais de um devem ser separados por virgula. A
lista abaixo mostra os tipos de códigos de formatação permitido na linguagem C.

Código de formatação Descrição

%c Caracteres simples

%d Inteiros decimais com sinal

%I Inteiros decimais com sinal

%e Notação cientifica (e minúsculo)

%E Notacão cientifica (E maiúsculo)

%f Ponto flutuante decimal

%g Usa %e ou %f (qual for mais curto)

%G Isa %E ou %F (qual for mais curto)

%o Octal sem sinal

%s Cadeia de caracteres

%u Inteiros decimais sem sinal

%x Hexadecimal sem sinal (letras minúsculas)

%X Hexadecimal sem sinal (letras maiúsculas)

%% Escreve o símbolo de porcentagem (%)


Tabela 1: Tipos de códigos de formatação

Ao colocar em printf() os comandos %e ou %E estaremos imprimindo em notação cientifica. No caso


de usarmos “%g” ou “%G” o compilador decide se escreve em ponto flutuante ou notação cientifica, o qual for
mais curto. Veja o exemplo abaixo:

         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 

Os códigos especiais (barra invertida) são apresentados abaixo e também pode ser inseridos na
“expressão de controle”. Veja a descrição de cada um deles:

Código especial Descrição

\n Nova linha

\t Tab

\b Retrocesso

\” Aspas

\\ Barra

\f Salta formulário

\0 Nulo

Tabela 2: Tipos de códigos especiais

É possível também especificar o tamanho do campo, o número de casas decimais e justificar à esquerda
a saída.
         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 

Ao colocar um número entre o símbolo % e o código de formatação estamos especificando a largura


mínima do campo. Ou seja, caso o comprimento da saída seja menor ela é completada com espaços. Podemos
também completar com zeros para isto coloca-se antes do número especificador de largura um zero. Por
exemplo, colocaríamos %08d para que um inteiro decimal com um número de dígitos inferior a oito seja
completado com zeros.
Para indicar a precisão logo após o especificador de largura coloca-se um ponto seguido de um número
inteiro. Quando se aplica a precisão em ponto flutuante estamos indicando o número de casas decimais que será
mostrado. Por exemplo, %12.5f significa que o número ponto flutuante terá tamanho doze com cinco casas
decimais. Já no caso do %g ou %G indica a quantidade de dígitos significativos. E em string especifica o
numero Maximo de caracteres.
Por padrão a saída é justificada à direita, mas pode ser justificada à esquerda quando acrescentamos
logo atrás do “%” um sinal negativo. Por exemplo, %-12.5f.

Função scanf()

A função scanf() permite ler os dados de entrada do teclado. O seu uso é muito comum nos programas,
como podemos verificar em outros artigos. Veja agora a sua sintaxe que é muito parecida com a do printf().

scanf(“expressão de controle”, argumentos);

A “expressão de controle” é composta pelos códigos de formatação apresentados anteriormente que


indica o tipo do dado a ser lido. A quantidade de argumentos deve ser igual a dos códigos de formatação e
separadas por virgulas. A lista de argumentos deve ser constituída pelos endereços das variáveis. Para isto
usamos o operador de endereço “&” que deve preceder o nome da variável que se deseja atribuir o valor da
entrada. É necessário que o tipo de dado do argumento seja compatível com os códigos de formatação.
Exemplo:

As funções printf() e scanf() fazem parte da biblioteca padrão de entrada e saída de dados. Portanto
deve-se incluir a biblioteca “stdio.h” através da diretiva “include”. Isto é incluir a seguinte linha no começo dos
programas: “#include<stdio.h>”.

         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  
ESCOLA  ESTADUAL  DE  EDUCAÇÃO  PROFISSIONAL  DR.  SOLON  TAVARES    
Curso  Técnico  em  Eletroeletrônica  
 
REFERÊNCIAS BIBLIOGRÁFICAS

Apostila de Introdução a Linguagem C. Disponível em: http://www.ufjf.br/petcivil/files/2009/02/Apostila-de-


Introdu%C3%A7%C3%A3o-%C3%A0-Linguagem-C.pdf

BATISTTI, Júlio. Linguagem C. Entrada/Saída. Disponível em:


http://juliobattisti.com.br/tutoriais/katiaduarte/cbasico005.asp

Programando. Espaço aberto para alunos, curiosos e profissionais da área de programação. Disponível em:
http://programando-ads.blogspot.com.br/2012/02/para-que-servem-as-bibliotecas-e.html

         
Algoritmos  e  Linguagem  C  
Profª  Ingrid  Santos  

Você também pode gostar