• Nenhum resultado encontrado

Apostila de algoritmos e C

N/A
N/A
Protected

Academic year: 2021

Share "Apostila de algoritmos e C"

Copied!
27
0
0

Texto

(1)

 

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

 

 

 

 

 

 

 

 

Apostila  de  Algoritmos  e  Linguagem  C  

                      Programação  Estruturada   PROFª  INGRID  SANTOS  

(2)

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.

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. Problema   Algoritmo   __________ __________ __________ __________ __________ __________   Solução    

(3)

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  de  Algoritmo  em  forma  de  pseudocódigo   Algoritmo  <nome_do_algoritmo>  

Var

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

<corpo do algoritmo> fimalgoritmo

(4)

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   var  

               <declaração  de  variáveis>   inicio  

               <corpo  do  algoritmo>   fim  

 

<inclusão  das  bibliotecas>   main(  )  

{  

               <declaração  das  variáveis>                  <  corpo  do  programama>   }  

   

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.

(5)

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.

(6)

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  de  caracteres   string  

(7)

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  

(8)

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 X e Y

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.

(9)

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:

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  

  MEMÓRIA   idade   nome_aluno   salario   Taxa_imposto   18   Maria   2500   0,423  

(10)

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: nome x endereco salario nome_empresa valor1 Inválidos 1lugar Endereço Salário Nome empresa _desconto

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

(11)

Exemplos: opcao: caracter Salario:real Idade: inteiro Exemplos: char opcao; float salario; int idade;

(12)

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)

(13)

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

(14)

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 Variaveis

Inicio

Escreva (“Boa noite!”) Fim #include <stdio.h> main() { printf(“Boa noite!”); } Algoritmo Exemplo2 Variaveis Numero: real Inicio

Escreva (“Digite um número”) Leia (Numero)

Numero:= Numero*2

Escreva (“O dobro do número digitado é ”, Numero) Fim #include <stdio.h> main() { float numero; printf(“Digite um numero:”); scanf(“%f”,&numero); numero=numero*2;

printf(“O dobro do numero digitado é %f”,numero);

}

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

(15)

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

(16)

          Algoritmos  e  Linguagem  C   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  ou  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.

(17)

          Algoritmos  e  Linguagem  C   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 _enão_eis

num: real Inicio

Escreva (“Digite um número”) Leia (num)

Se (num>10) _enão

Escreva (“o número digitado é maior que 10”) Fimse Fim #include<stdio.h> main() { float num;

printf (“Digite um número”); scanf (“%f”,&num);

if (num>10) {

printf (“o número digitado é maior que 10”);

} } Decisão Composta Algoritmo Exemplo_se_composto

_enão_eis num:real Inicio

Escreva (“Digite um número”) Leia (num)

Se (num>10) _enão

Escreva (“O número digitado é maior que 10”)

_enão

Escreva (“O número digitado é menor que 10”) Fimse Fim #include<stdio.h> main() { float num;

printf (“Digite um número”); scanf (“%f”,&num);

if (num>10) {

printf (“O número digitado é maior que 10”);

}else{

printf (“O número digitado é menor que 10”);

} Fim

(18)

          Algoritmos  e  Linguagem  C   Decisão Encadeada 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 #include<stdio.h> main() { float a,b;

printf (“Digite dois valores”); scanf (“%f,%f”,&a, &b); if (a>b){ printf (“%f é o maior”,a); }else{ if (b>a) { printf ( “%f é o maior”,b); }else{

printf (“os valores são iguais”); }

} }

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.

(19)

          Algoritmos  e  Linguagem  C  

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.

(20)

          Algoritmos  e  Linguagem  C   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

(21)

          Algoritmos  e  Linguagem  C   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 comandos

fimenquanto

while (condição){ comandos; }

Teste Lógico no Fim repita

comandos ate_que (condição)

do{

comandos; }while (condição); Com Variável de Controle para variável de inicio ate fim faca

Comandos fimpara

for (var=inicio; var<fim; var++){ comandos;

} EXEMPLOS

Teste Lógico no Início Algoritmo exemploEnquanto Var

idade: inteiro Inicio

Escreva (“Digite sua idade”) Leia (idade)

enquanto (idade<0) faca escreva(“Idade inválida!”) Escreva (“Digite sua idade”) Leia (idade)

Fimenquanto

Escreva (“Você tem”, idade,”anos”) fim

#include<stdio.h>; main()

{

int idade;

printf(“Digite sua idade”); scanf(“%d”,&idade); while(idade<0){

printf(“Idade inválida!”); printf(“Digite sua idade”); scanf(“%d”,&idade); }

printf(“Você tem %d anos”,idade); }

(22)

          Algoritmos  e  Linguagem  C   Teste Lógico no Fim Algoritmo exemploRepita

Var

Idade:inteiro Inicio

Repita

Escreva (“Digite sua idade”) Leia (idade)

Ate_que (idade>0)

Escreva (“Você tem”,idade,”anos”) Fim #include <stdio.h> main() { int idade; do{

printf(“Digite sua idade:”); scanf(“%d”,&idade); }while (idade<=0);

printf(“Você tem %d anos”,idade); }

Com variável de controle Algoritmos exemploPara Var

i:inteiro idades:inteiro inicio

para i de 1 ate 10 faca

escreva(“Digite a “, i,”ª idade:”) leia (idade) escreva(“Você tem”,idade,”anos”) fiimpara fim #include <stdio.h> main() { int idade;

for (int i=0; i<10; i++){

printf(“Digite a %d ª idade”,i+1); scanf(“%d”,&idade);

printf(“você tem %d anos”,idade); }

(23)

          Algoritmos  e  Linguagem  C  

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.

(24)

          Algoritmos  e  Linguagem  C  

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:

(25)

          Algoritmos  e  Linguagem  C  

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.

(26)

          Algoritmos  e  Linguagem  C  

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>”.

(27)

          Algoritmos  e  Linguagem  C   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

Referências

Documentos relacionados

Portanto,parte pode abster-se de agir por causa da influência significativa de outra; por exemplo, a controlada de uma coligada e o investidor que exerce influência

Viajando pela linha de corrente (A lei da conservação da energia dos fluidos e o teorema de Bernoulli) ..72!. A unidade de

Regra da mão esquerda de fleming (para motores CC) 99 CAMPO MAGNÉTICO COrrENTE CAMPO MAGNÉTICO COrrENTE COrrENTE COrrENTE ANEL.?. FLEMING TAMBÉM TEM UMA REGRA

O objeto permanece em repouso porque recebe da mesa de trabalho uma força vertical para cima, o que produz a força resultante de zero.. Agora que entendemos as forças que agem

Assistentes de arte: Ana Maria Totaro, Camila Castro e Valdeí Prazeres Revisores: Antonio Carlos Marques, Diego Rezende e Ramiro Morais Torres. ©

Assistentes de arte: Ana Maria Totaro, Camila Castro e Valdeí Prazeres Revisores: Antonio Carlos Marques, Diego Rezende e Ramiro Morais Torres © Reprodução proibida.. Todos os

Assistentes de arte: Ana Maria Totaro, Camila Castro e Valdeí Prazeres Revisores: Antonio Carlos Marques, Diego Rezende e Ramiro Morais Torres. ©

exemplo, as ondas sonoras no ar e as ondas luminosas geradas por uma fonte puntiforme (ou pontual) são tridimensionais.. Características físicas gerais