SlideShare ist ein Scribd-Unternehmen logo
1 von 135
ESCOLA TÉCNICA ESTADUAL
MONTEIRO LOBATO
Linguagem C
Curso Técnico em Informática
1 Introdução a lógica de programação ............................................................................. 1
1.1 Conceitos básicos.............................................................................................. 1
1.1.1 Construção de algoritmos ................................................................... 1
1.1.2 Algoritmos com estruturas de decisão............................................... 2
1.1.3 Algoritmos com estruturas de repetição ............................................ 3
1.2 Conceitos básicos para a construção de algoritmos para computadores ... 4
1.2.1 Formalizando a escrita de algoritmos ................................................ 5
1.2.2 Variáveis ................................................................................................ 5
1.2.2.1 Por que declarar variáveis e como nomeá-las? ................... 6
1.2.2.2 O que são tipos de variáveis?................................................ 6
1.2.3 Constantes ............................................................................................ 8
1.2.4 Comandos de atribuição, entrada e saída de dados ......................... 9
1.2.4.1 Comando de atribuição .......................................................... 9
1.2.4.2 Comando de entrada de dados.............................................. 9
1.2.4.3 Comando de saída de dados................................................ 10
1.2.5 Operadores aritméticos e expressões aritméticas .......................... 12
1.3 Expressões lógicas e estruturas de decisão................................................. 15
1.3.1 Operadores relacionais, operadores lógicos e expressões lógicas 15
1.3.1.1 Operadores relacionais ........................................................ 15
1.3.1.2 Operadores lógicos............................................................... 15
1.3.1.3 Expressões lógicas............................................................... 17
1.3.2 Estrutura de decisão .......................................................................... 19
1.3.3 Estruturas de repetição...................................................................... 23
1.3.3.1 Estrutura de repetição para...faça........................................ 24
1.3.3.2 Estrutura de repetição enquanto...faça .............................. 27
2 Introdução à linguagem C............................................................................................. 31
2.1 Conceitos básicos............................................................................................ 31
2.2 A Linguagem C ................................................................................................. 31
2.2.1 Influência da Linguagem C ................................................................ 31
2.3 Ambiente de Programação .............................................................................. 32
2.4 Estrutura de um programa na linguagem C.................................................. 36
2.4.1 Endentação do Código....................................................................... 37
2.5 Comentários ..................................................................................................... 38
2.6 Bibliotecas e funções úteis ............................................................................. 39
2.6.1 Comando #include.............................................................................. 39
Sumário
2.6.2 Funções de entrada e saída : stdio.h................................................ 39
2.6.3 Funções de utilidade padrão: stdlib.h .............................................. 41
2.6.4 Outras funções: math.h, ctype.h, string.h, time.h ........................... 42
3 Manipulando dados, variáveis e expressões .............................................................. 42
3.1 Variáveis............................................................................................................ 42
3.1.1 Nomeando variável............................................................................. 43
3.1.2 Definindo o tipo de uma variável....................................................... 44
3.2 Lendo e escrevendo dados ............................................................................. 47
3.2.1 printf .................................................................................................... 47
3.2.2 putchar................................................................................................. 49
3.2.3 scanf .................................................................................................... 50
3.2.4 getchar................................................................................................. 52
3.3 Escopo: Tempo de vida da variável................................................................ 52
3.3.1 Escopo global ..................................................................................... 53
3.3.2 Escopo local........................................................................................ 53
3.3.3 Constantes .......................................................................................... 56
3.3.3.1 Comando #define .................................................................. 56
3.3.3.2 Comando constante............................................................. 56
3.3.3.3 Sequência de escape............................................................ 56
3.3.4 Operadores.......................................................................................... 57
3.3.4.1 Operador de atribuição: ”=”................................................. 57
3.3.4.2 Operadores aritméticos........................................................ 59
3.3.4.3 Operadores relacionais ........................................................ 60
3.3.4.4 Operadores Lógicos ............................................................. 61
3.3.4.5 Operadores Bit-a-Bit ............................................................. 62
3.3.4.6 Operadores de atribuição simplificada ............................... 63
3.3.4.7 Operadores de pré e pós-incremento.................................. 64
3.3.4.8 Modeladores de tipos (cast)................................................. 65
3.3.4.9 Operador virgula “,”.............................................................. 66
3.3.4.10 Precedência de operadores ............................................... 66
4 Comandos de Controle Condicional........................................................................... 69
4.1 Definindo uma condição.................................................................................. 69
4.2 Comando if........................................................................................................ 71
4.2.1 uso doas chaves {} ............................................................................. 72
4.3 Comando else................................................................................................... 73
4.4 Aninhamento de if ............................................................................................ 76
4.5 Operador ?........................................................................................................ 77
4.6 Comando switch............................................................................................... 79
5 Comandos de repetição ................................................................................................ 85
5.1 Repetição por condição................................................................................... 85
5.1.1 Laço infinito ........................................................................................ 86
5.2 Comando while................................................................................................. 87
5.3 Comando for..................................................................................................... 89
5.3.1 Omitindo uma cláusula do comando formadas ............................... 91
5.4 Comando do-while ........................................................................................... 93
5.5 Aninhamento de repetições ............................................................................ 96
5.6 Comando break ................................................................................................ 97
5.7 Comando continue........................................................................................... 98
6 Vetores e matrizes - arrays ......................................................................................... 101
6.1 Array com uma dimensão – vetor................................................................. 102
6.1.1 Declarando um vetor ........................................................................ 102
6.1.2 Acessando um elemento do vetor................................................... 103
6.2 Array bi dimensional - Matrizes .................................................................... 106
6.2.1 Declarando uma matriz .................................................................... 106
6.2.2 Acessando um elemento da matrizes............................................. 106
7 Funções.........................................................................................................................111
7.1 Definição e estrutura básica...........................................................................111
7.1.1 Declarando uma função ....................................................................111
7.1.1.1 Funcionamento de uma função ..........................................113
7.1.2 Parâmetros de uma função...............................................................113
7.1.2.1 Declarando os parâmetros de uma função........................113
7.1.2.2 Funções sem lista de parâmetros.......................................114
7.2 Retorno da função...........................................................................................114
7.3 Funções sem retorno de valor .......................................................................115
7.4 Funções com retorno de valor.......................................................................115
7.5 Tipo de passagem de parâmetros .................................................................118
7.5.1 Passagem por valor...........................................................................118
7.5.2 Passagem por referência ..................................................................119
7.5.3 Passagem de arrays como parâmetros ...........................................119
7.5.4 Passagem de estruturas por valor .................................................. 120
7.5.5 Passagem de estruturas por referência.......................................... 121
7.5.6 Operador seta ................................................................................... 121
7.6 Recursão......................................................................................................... 122
Anexos............................................................................................................................. 123
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 1 Linguagem C
Este capitulo tem o objetivo de fazer com que o aluno possa compreender os conceitos de
lógica de programação e de algoritmos, além de apresentar os primeiros exemplos de algoritmos e
entender os conceitos de estrutura sequencial, estrutura de decisão e estrutura de repetição no
contexto de algoritmos.
1.1 Conceitos básicos
É importante uma reflexão sobre o significado da palavra “Lógica”. Mas, o que é lógica?
Utilizamos a lógica de forma natural em nosso dia a dia.
Por exemplo:
a) Sei que o livro está no armário.
Sei que o armário está fechado.
Logo, concluo que tenho de abrir o armário para pegar o livro.
b) Sei que sou mais velho que João.
Sei que João é mais velho que José.
Então, concluo que eu sou mais velho que José.
Exercícios:
1) Sejam os seguintes fatos:
 Todos os filhos de João são mais altos do que Maria.
 Antônio é filho de João.
Então, o que podemos concluir logicamente?
2) Considere os fatos abaixo:
 Mateus é aluno do CIMOL.
 Para ser aprovado, um aluno do CIMOL precisa obter nota maior ou igual a 60 e comparecer
a mais de 75% das aulas.
 Mateus compareceu a todas as aulas e obteve nota igual a 80.
Então, o que podemos concluir?
1.1.1 Construção de algoritmos
A lógica de programação é essencial para pessoas que desejam trabalhar com
desenvolvimento de programas para computadores. Lógica de programação pode ser definida
como um conjunto de técnicas para encadear pensamentos a fim de atingir determinado objetivo.
O objetivo fundamental de toda programação é construir algoritmos. Mas, afinal, o que é um
algoritmo? Resumindo em uma única frase “Algoritmo é uma sequência lógica para execução de
tarefas”.
1Introdução a lógica de programação
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 2 Linguagem C
Pode-se pensar em algoritmo como uma receita, uma sequência de instruções que realizam
uma tarefa específica. Em outras palavras, quando criamos um algoritmo, apenas apontamos uma
sequência de atividades que levam à solução de um problema. Até mesmo as soluções para os
problemas cotidianos mais simples podem ser descritas por sequências lógicas de atividades.
Problema: Trocar uma lâmpada
Sequência de Passos para Solução:
1. Pegue uma escada;
2. Posicione a escada embaixo da lâmpada;
3. Pegue uma lâmpada nova;
4. Suba na escada;
5. Retire a lâmpada velha;
6. Coloque a lâmpada nova.
Esta solução é apenas uma das muitas possíveis para o problema apresentado. Assim, ao
criarmos um algoritmo, indicamos uma dentre várias possíveis sequências de passos para
solucionar o problema.
Por exemplo, o problema acima poderia ser resolvido mesmo se alterássemos a sequência
de passos para:
1. Pegue uma lâmpada nova;
2. Pegue uma escada;
3. Posicione a escada embaixo da lâmpada;
4. Suba na escada;
5. Retire a lâmpada velha;
6. Coloque a lâmpada nova.
Exercícios:
1) Escreva um algoritmo (sequência de passos) para trocar um pneu de um carro.
2) Descreva um algoritmo que defina como fazer um bolo.
3) Descreva um algoritmo que defina como preparar um ovo frito.
1.1.2 Algoritmos com estruturas de decisão
Os algoritmos que construímos até agora apresentam uma sequência de passos que devem
ser seguidos para atingir um objetivo bem definido. Note que todos os passos dos algoritmos devem
ser executados a fim de que o objetivo seja alcançado. Porém, há algoritmos nos quais a execução
de alguns passos pode depender de decisões a serem tomadas. Dessa forma, algum fato indicará
se um ou mais passos do algoritmo serão executados ou não.
Por exemplo, o nosso primeiro algoritmo define uma sequência de passos para trocar uma
lâmpada. Em momento algum perguntamos se a lâmpada está queimada. Simplesmente trocamos
a lâmpada sem fazer qualquer teste. Para resolver esse problema, podemos acrescentar ao nosso
algoritmo um teste que verifique se a lâmpada deve ser trocada:
1. Ligue o interruptor
2. Se a lâmpada não acender:
2.1. Pegue uma escada;
2.2. Posicione a escada embaixo da lâmpada;
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 3 Linguagem C
2.3. Pegue uma lâmpada nova;
2.4. Suba na escada;
2.5. Retire a lâmpada velha;
2.6. Coloque a lâmpada nova.
Agora, estamos ligando os passos de efetuar a troca da lâmpada a uma condição. Assim, só
executamos os passos definidos de 2.1 a 2.6 caso a condição definida do passo 2 seja verdadeira,
ou seja, caso a lâmpada não acenda.
1.1.3 Algoritmos com estruturas de repetição
Note que, apesar de nosso novo algoritmo estar verificando a necessidade de trocar a
lâmpada antes de fazê-lo, em momento algum verificamos se a lâmpada nova que foi instalada
funciona. Assim, vamos tentar alterar o nosso algoritmo a fim de garantir que ao fim de sua
execução tenhamos uma lâmpada funcionando.
Para isso, vamos incluir um novo teste em seu final:
1. Ligue o interruptor
2. Se a lâmpada não acender:
2.1. Pegue uma escada;
2.2. Posicione a escada embaixo da lâmpada;
2.3. Pegue uma lâmpada nova;
2.4. Suba na escada;
2.5. Retire a lâmpada velha;
2.6. Coloque a lâmpada nova;
2.7. Se a lâmpada não acender:
2.7.1. Retire a lâmpada;
2.7.2. Coloque uma outra lâmpada;
2.7.3. Se a lâmpada ainda não acender:
2.7.3.1. Retire a lâmpada;
2.7.3.2. Coloque uma outra lâmpada;
Pelo nosso novo algoritmo, caso a nova lâmpada não acenda, devemos trocá-la novamente
e repetir esse procedimento indefinidamente até que uma lâmpada funcione. Note que não
sabemos quantas vezes teremos de repetir o teste até acharmos uma lâmpada que funcione.
Em casos como esse, devemos utilizar estruturas de repetição. Essas estruturas definem
um fluxo de ações que se repete enquanto uma determinada situação acontece.
Dessa forma, substituímos nossa sequência indefinida de estruturas de decisão por uma
estrutura de repetição:
1. Ligue o interruptor;
2. Se a lâmpada não acender:
2.1. Pegue uma escada;
2.2. Posicione a escada embaixo da lâmpada;
2.3. Pegue uma lâmpada nova;
2.4. Suba na escada;
2.5. Retire a lâmpada velha;
2.6. Coloque a lâmpada nova.
2.7. Enquanto a lâmpada não acender:
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 4 Linguagem C
2.7.1. Retire a lâmpada;
2.7.2. Coloque uma outra lâmpada.
Assim, neste novo algoritmo, enquanto a condição definida na linha 2.7 for verdadeira (ou
seja, enquanto a lâmpada não acender), as ações definidas em 2.7.1 e 2.7.2 serão repetidas.
Abstraímos os fatos de ter de descer da escada para pegar uma lâmpada nova e subir novamente.
Neste capitulo você conheceu o conceito de algoritmo e começou a desenvolver sua lógica
de programação a partir de exemplos de algoritmos presentes em nosso cotidiano. Este é apenas
o início dessa grande viagem pelo mundo da programação!
Exercícios:
1) Elabore um algoritmo que indique como fazer uma prova. Faça o algoritmo pensando que o aluno
não deve deixar questões em branco; assim, deve continuar fazendo a prova enquanto existir
questão em branco e o tempo de prova não tiver acabado. Além disso, o aluno só deve resolver
uma questão se souber resolvê-la, senão pula para a próxima.
2) Suponha que você tenha uma caixa cheia de bolas. Nessa caixa existem bolas azuis e bolas
vermelhas. Além disso, você tem também duas caixas vazias. Vamos chamar a caixa que contém
as bolas de “caixa 1” e as duas caixas vazias de “caixa 2” e “caixa 3”. Neste contexto, escreva um
algoritmo que defina como tirar todas as bolas da “caixa 1”, colocando as bolas azuis na “caixa 2”
e as bolas vermelhas na “caixa 3”.
3) José trabalha no departamento de recursos humanos de uma empresa. A empresa de José
definiu que os salários dos empregados serão aumentados seguindo a seguinte regra: caso o
salário seja menor que R$ 1.000,00, o aumento será de 10%; caso contrário, será de 8%. José
recebeu uma lista contendo os nomes e salários de todos os funcionários da empresa e foi
solicitado que calculasse o novo salário desses funcionários. Assim, escreva um algoritmo para que
José calcule corretamente os novos salários.
4) Desafio de lógica: Três missionários e três canibais encontram-se na margem esquerda de um
rio. Nessa margem também existe um bote que pode transportar uma ou duas pessoas. As seis
pessoas pretendem todas passar para a margem direita (usando o bote). No entanto, os
missionários têm de arranjar um plano para consegui-lo de modo que, em nenhuma circunstância,
existam missionários numa margem em minoria relativamente aos canibais, pois têm receio do que
lhes possa acontecer. Quando o bote chega à margem, os elementos do bote são contados como
estando na margem. Assim, se houver apenas um canibal em uma margem, não podemos enviar
a essa margem o bote com um canibal e um missionário, pois, ao chegar à outra margem, serão
dois canibais contra um missionário. Lembre-se de que para o bote ir de uma margem a outra é
necessário que alguém esteja remando, ou seja, o bote nunca atravessa vazio. Faça um algoritmo
que exiba, passo a passo, como efetuar esta travessia de forma segura.
1.2 Conceitos básicos para a construção de algoritmos para computadores
Neste capitulo você deverá entender a necessidade de se utilizar uma linguagem formal para
construir algoritmos a serem interpretados por computadores. Compreender os conceitos de
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 5 Linguagem C
variáveis, constantes e tipos de dados. Conhecer os conceitos de comandos de atribuição, entrada
e saída de dados. Conhecer os operadores aritméticos e a ordem de precedência. Construir nossos
primeiros algoritmos em Portugol.
1.2.1 Formalizando a escrita de algoritmos
Para que os computadores sejam capazes de interpretar os algoritmos que desenvolvemos,
precisamos transformar a sequência de passos que escrevemos em linguagem natural para uma
linguagem que possa ser “entendida” pelo computador. Essas linguagens são chamadas de
linguagens de programação. Existem diversas linguagens de programação em uso atualmente. Em
nosso curso, utilizaremos a linguagem C.
Nesta aula, a fim de facilitar o aprendizado dos principais conceitos de programação,
utilizaremos o Portugol. O Portugol é uma linguagem que une o formalismo das linguagens de
programação à facilidade de compreensão da linguagem natural.
Para entender a construção de algoritmos nessas linguagens, vamos iniciar estudando
alguns conceitos básicos como variáveis e constantes.
1.2.2 Variáveis
O primeiro passo para que um programa seja executado em um computador é o
carregamento desse programa para a memória. A memória é utilizada para armazenar tanto as
instruções dos programas quanto os dados utilizados pelos mesmos. Qualquer programa, para ser
executado, tem de estar na memória1.
Ao desenvolvermos nossos algoritmos, frequentemente precisamos armazenar dados
referentes ao problema, como um nome, um número ou mesmo o resultado de uma operação. Mas,
para armazenar esses dados, precisamos solicitar ao computador que ele reserve uma área da
memória para nosso uso. A forma de solicitar ao computador que reserve memória é chamada de
declaração de variáveis. Mas, o que é variável? Variável é uma posição nomeada de memória, que
é usada para guardar um valor que pode ser modificado pelo programa.
A seguir exibe-se como declarar variáveis em Portugol:
Sintaxe:
var nome_da_variavel : tipo_da_variavel
A palavra var é utilizada para indicar o início do bloco de declaração de variáveis de um
algoritmo. Essa palavra é escrita apenas uma vez, independentemente do número de variáveis a
serem declaradas. Mas, não se preocupe com isso agora. Nesse momento o importante é entender
os conceitos de variável e de tipo de variável.
nome_da_variavel
Quando solicitamos que o computador reserve espaço de memória, temos de informar como
vamos nos referir a essa área de memória reservada, ou seja, qual nome daremos a esse espaço
1
Memória: Meio físico para armazenar dados temporariamente ou permanentemente.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 6 Linguagem C
de memória. Assim, toda variável tem um nome através do qual é referenciada. A seguir (item 2.2.1)
apresentaremos um conjunto de regras que devem ser seguidas para dar nomes às variáveis. Caso
queiramos declarar mais de uma variável de um mesmo tipo, basta escrever os nomes desejados
para as variáveis separados por vírgula.
tipo_da_variável
Precisamos informar o tipo de dados que armazenaremos na variável para que o computador
saiba o tamanho do espaço de memória que reservará. A seguir (item 2.2.2) serão apresentados
os tipos que podem ser utilizados.
1.2.2.1 Por que declarar variáveis e como nomeá-las?
Sempre que criamos uma variável, nós o fazemos com o objetivo de armazenar algum tipo
de valor específico. Por exemplo, se estivermos desenvolvendo um algoritmo que calcule o imposto
de renda a ser pago por um assalariado, precisamos de variáveis para armazenar o valor do salário
e para os resultados dos cálculos. Assim, o nome dado à variável deve deixar claro o objetivo da
mesma; devemos utilizar nomes sugestivos. Apesar de esta ser a principal diretriz quanto à
atribuição de nomes a variáveis, algumas outras regras são apresentadas na tabela a seguir.
REGRA EXEMPLO
Inicie sempre por um caractere alfabético,
nunca por um número.
Nome (correto) - 1nome (errado)
Não utilize caracteres especiais como “ , ( )
/ * ; + .
Nome(M); N*B
Não coloque espaços em branco ou hífen
entre nomes.
salario-bruto
Utilize, se necessário, underline. salario_bruto
Crie suas variáveis com nomes sugestivos. Se vai guardar salário de funcionários, dê à
variável o nome salario.
1.2.2.2 O que são tipos de variáveis?
Quando declaramos uma variável, devemos ter em mente quais valores serão armazenados
naquele espaço de memória. É essa observação que definirá o tipo da variável a ser declarado.
Uma variável pode ser de um dos seguintes tipos:
• Tipo inteiro: Declararemos variáveis do tipo numérico inteiro quando precisarmos armazenar
valores inteiros, positivos ou negativos (0, 1, 5, 7, -10, -5...). Por exemplo, se precisarmos de uma
variável para armazenar o número de filhos de um funcionário, o tipo ideal para essa variável seria
inteiro.
• Tipo real: Declararemos variáveis do tipo numérico real para armazenar valores reais; em outras
palavras, valores com ponto decimal (5.7, 3.2, -8.5). Esse seria o tipo ideal para armazenar, por
exemplo, o salário de funcionários.
• Tipo caractere: Declararemos variáveis do tipo literal caractere para armazenar um único
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 7 Linguagem C
caractere, que pode ser uma letra ou um símbolo. Por exemplo, para identificar o sexo do indivíduo,
armazenaremos apenas o caractere ‘F’ ou ‘M’.
• Tipo cadeia: Declararemos variáveis do tipo literal cadeia para armazenar uma sequência de
caracteres, ou seja, uma palavra, uma mensagem, um nome. Assim, se precisarmos de uma
variável para armazenar o nome de uma pessoa, esse seria o tipo ideal.
• Tipo lógico: Declararemos variáveis do tipo lógico para armazenar valores lógicos. O valor de
variáveis desse tipo será sempre VERDADEIRO ou FALSO.
Lembrando a sintaxe:
var
nome_variavel1, nome_variavel2 : tipo_variaveis1e2
nome_variavel3 : tipo_variavel3
Assim, suponha que precisemos declarar uma variável para armazenar a idade de uma
pessoa, uma para o peso e uma terceira para o nome. Para o peso e a idade utilizaremos variáveis
do tipo inteiro e para o nome o tipo será cadeia. Logo, essas declarações ficariam assim:
var
peso, idade : inteiros
nome : cadeia
Exercícios
1) Aprendemos algumas regras que devem ser seguidas para dar nomes a variáveis. Assinale os
nomes de variáveis que obedecem a essas regras:
a) ( ) nome
b) ( ) telefone-celular
c) ( ) nome+sobrenome
d) ( ) 2taxa
e) ( ) telefone_celular
f) ( ) conta1
2) Para cada valor dado abaixo foi definido um tipo de variável. Marque os pares “valor e tipo”
definidos corretamente:
a) ( ) valor = 2.5 tipo= real
b) ( )valor = ‘F’ tipo= inteiro
c) ( ) valor = -2 tipo= inteiro
d) ( ) valor = ‘M’ tipo= caractere
e) ( ) valor = 5 tipo= cadeia
f) ( ) valor = -10.35 tipo= real
g) ( ) valor = 38 tipo= real
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 8 Linguagem C
h) ( )valor = ‘Jose’ tipo= cadeia
i) ( ) valor = 135 tipo= inteiro
j) ( )valor = 7.5 tipo= inteiro
3) Você está fazendo um algoritmo para calcular a média dos alunos a partir das notas de duas
provas. Assim, precisará de três variáveis: uma para a nota da primeira prova, uma para a nota da
segunda prova e uma para a média. Segundo as normas da instituição, as notas das provas devem
ser números inteiros de 0 a 10. Já para a média podem ser atribuídos valores com casas decimais.
Utilizando a sintaxe de declaração de variáveis em Portugol e as regras para definição de tipos e
de nomes, indique como você declararia essas 3 variáveis.
Dica: lembre-se de escolher nomes sugestivos para as variáveis.
1.2.3 Constantes
Como aprendemos, o valor de uma variável pode ser alterado ao longo de seu algoritmo.
Mas, às vezes, precisamos armazenar valores que não se alteram. Para isso existem as
constantes.
As constantes são criadas obedecendo às mesmas regras de nomenclatura já vistas em
variáveis. Diferem apenas no fato de armazenar um valor constante, ou seja, que não se modifica
durante a execução de um programa.
Constante é uma variável com valor pré-definido que não pode ser modificado por nenhuma
função do programa.
A sintaxe para a declaração de constantes em Portugol é dada a seguir:
Sintaxe:
const nome_da_constante ← valor
const
A palavra const é utilizada para indicar o início do bloco de declaração de constantes de
um algoritmo. A exemplo da palavra var, const também é escrita apenas uma vez,
independentemente do número de constantes a serem declaradas.
nome_da_constante
É o nome pelo qual vamos nos referir à constante. Deve obedecer às mesmas regras que
os nomes de variáveis. Apenas para ficar fácil a diferenciação entre variáveis e constantes
em seus programas, aconselha-se que todas as letras dos nomes das constantes sejam
maiúsculas.
Como exemplo, considera-se um algoritmo que calcule o valor da contribuição de FGTS: 8%
sobre o salário, independentemente do valor do salário. Assim, a taxa de 8% será constante durante
a execução do programa. Logo, poderia declarar minha constante da seguinte forma:
const TAXA_FGTS ← 0.08
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 9 Linguagem C
1.2.4 Comandos de atribuição, entrada e saída de dados
1.2.4.1 Comando de atribuição
Na construção de algoritmos, depois que declaramos nossas variáveis e constantes,
geralmente precisamos indicar que elas armazenarão um determinado valor durante a execução
do programa. Para isso, utilizamos o comando de atribuição que, em Portugol, é representado por
uma seta (←), conforme sintaxe a seguir:
Sintaxe:
identificador <- expressão
identificador
Nome da variável ou constante a ser utilizada.
expressão
Valor ou expressão a ser armazenado (veremos ainda neste capítulo que podemos ter
expressões aritméticas e expressões lógicas).
Exemplos:
nota : inteiro /*Criamos a variável inteira nome */
sexo : caractere /*Criamos a variável caractere sexo */
nota ← 10 /* Atribuimos o valor 10 a variável nota*/
saxo ← F /*Atribuimos o caractere F a variavel sexo*/
Os símbolos /* e */ indicam o início e o fim de um comentário, que pode ocupar mais de uma
linha. Os símbolos // indicam um comentário que vai até o fim da linha.
Em programação utilizamos comentários para explicar a lógica utilizada em nossos
algoritmos.
1.2.4.2 Comando de entrada de dados
Frequentemente, na construção de algoritmos, precisamos solicitar que usuários informem,
por meio do teclado, alguns valores a serem utilizados durante a execução. Por exemplo: se
fizermos um algoritmo para calcular a média das notas de um aluno, precisaremos solicitar quais
foram as notas, para depois calcularmos a média. Esses valores informados devem ser
armazenados em variáveis para que sejam utilizados quando necessário.
O comando de entrada de dados será responsável pela leitura e armazenamento desses
dados na variável que indicarmos. A sintaxe do comando de entrada de dados em Portugol é exibida
abaixo:
Sintaxe: leia(variavel)
leia( ) Função responsável por ler o que o usuário digitou e armazenar o valor na variável
indicada.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 10 Linguagem C
variavel
Nome da variável utilizada para armazenar o valor digitado.
Exemplo:
nota : inteiro //Criamos a variável inteira nota
leia(nota) //Atribuímos à variável nota o valor digitado pelo usuário
1.2.4.3 Comando de saída de dados
Por meio da utilização do comando de saída de dados, conseguimos exibir mensagens ou
valores para o usuário de nossos programas. É através desse comando que nosso algoritmo
consegue se comunicar com o usuário para solicitar a entrada de dados ou para fornecer saídas
de dados.
O comando de saída de dados exibe no monitor valores de constantes, variáveis ou
expressões. A sintaxe do comando de saída de dados em Portugol é exibida a seguir:
Sintaxe: escreva(expressão)
escreva( )
Função responsável por escrever no monitor uma mensagem para o usuário.
expressao
Indica o que será escrito no monitor. É normalmente composta por um texto fixo seguido
por uma vírgula e um nome de variável.
Para exemplificar a utilização dos comandos de entrada e de saída de dados, vamos criar
nosso primeiro algoritmo completo em Portugol. Mas, antes disso, vamos ver a estrutura geral de
um algoritmo em Portugol:
Estrutura Geral de um algoritmo em Portugol:
algoritmo nome_do_algoritmo
const
/*Aqui devem ser declaradas todas as constantes do nosso algoritmo seguindo as regras
de sintaxe já estudadas. Caso nosso algoritmo não necessite de constantes, esta seção
não deve existir.*/
var
/*Aqui devem ser declaradas todas as variáveis do nosso algoritmo seguindo as regras de
sintaxe já estudadas. Caso nosso algoritmo não necessite de variáveis, esta seção não
deve existir.*/
inicio
/*Aqui ficará o corpo do algoritmo, ou seja, o conjunto de comandos que formará o
algoritmo em si.*/
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 11 Linguagem C
fim
A seguir, nosso primeiro exemplo de algoritmo completo em Portugol. Neste exemplo
solicitamos que o usuário digite seu nome e depois imprimimos na tela uma saudação ao mesmo.
Note que, como não utilizamos constantes neste algoritmo, ele não faz uso do bloco const.
Exemplo:
algoritmo exemplos
var
nome : cadeia /*criamos a variável nome do tipo cadeia*/
inicio
escreve(“Digite o seu nome”) /*Solicite que o usuário solicite o seu número*/
leia(nome) /*lemos para a variável nome o valor digitado pelo usuário*/
escreva(“Bom dia”, nome) /*imprimimos na tela e a mensagem Bom dia acompanhada
pelo nome digitado pelo usuário*/
fim
Assim, caso o usuário tenha digitado o nome Pedro, será exibida no monitor a seguinte
mensagem: Bom dia Pedro.
Exercícios
1) Assinale os comandos de atribuição realizados corretamente:
a) ( ) var cadeia SEXO ← ‘F’
b) ( ) var inteiro ALTURA ← 1.80
c) ( ) var real SALÁRIO ← 3000.00
d) ( ) var cadeia ← “NOME”
2) No programa abaixo, dois valores inteiros são lidos e somados e o resultado dessa soma é
mostrado no final da execução. Analise as linhas do programa e assinale as afirmações corretas:
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 12 Linguagem C
a) ( ) linha 6 → O primeiro valor digitado no teclado está sendo lido e armazenado em num1,
b) ( ) linha 7 → O segundo valor digitado no teclado está sendo lido e armazenado em num2,
c) ( ) linha 9 → O resultado da soma dos valores digitados está sendo atribuído à variável soma,
d) ( ) linha 10 → No monitor serão exibidas a mensagem que está entre aspas e a soma dos
números digitados.
3) Faça um algoritmo que solicite que o usuário digite seu nome e a seguir solicite que seja digitada
sua idade. Depois que o usuário digitar o nome e a idade, o programa deve exibir na tela duas
mensagens: uma com o nome e outra com a idade do usuário. Suponha que o usuário seja o Pedro
e tenha 32 anos. Assim, após a digitação dos dados, seu programa deve exibir as seguintes
mensagens: “Seu nome é Pedro” e “Você tem 32 anos”.
1.2.5 Operadores aritméticos e expressões aritméticas
Os operadores aritméticos são símbolos que representam operações aritméticas, ou seja,
as operações matemáticas básicas. O Quadro 2.2 apresenta os operadores aritméticos que
utilizaremos neste curso.
Operador Operação matemática
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Resto da divisão inteira
Os operadores aritméticos são utilizados para formar expressões aritméticas. As expressões
aritméticas são formadas por operadores aritméticos que agem sobre operandos. Os operandos
podem ser variáveis ou constantes do tipo numérico, ou seja, inteiros ou reais. Abaixo temos dois
exemplos de expressões aritméticas:
nota/2
x*2+y/2
Para resolver expressões aritméticas formadas por mais de um operador, deve-se utilizar uma
ordem de precedência entre os mesmos. O Quadro 2.3 exibe essa ordem de precedência.
Prioridade Operador Operação
1ª * / % multiplicação, divisão, resto
da divisão
2ª + - adição, subtração
Além da ordem de prioridades definida acima, podemos utilizar parênteses. Assim,
resolvemos primeiro as expressões contidas nos parênteses mais internos, seguindo a ordem de
precedência entre operadores, passando depois para os parênteses mais externos. Por exemplo,
na expressão:
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 13 Linguagem C
nota1 + (nota2 + nota3) / 2
Primeiro somamos nota2 a nota3. O resultado é divido por 2 e só depois somamos com nota 1. O
resultado da execução de expressões aritméticas é sempre um valor numérico (inteiro ou real) que
pode então ser atribuído a uma variável numérica por meio do uso do comando de atribuição
estudado anteriormente.
Sintetizando:
• expressões aritméticas: uma conta a ser feita;
• operadores aritméticos: os sinais + - * / %;
• operandos aritméticos: constantes ou variáveis (inteiras ou reais), ou outra expressão aritmética;
• precedência na ordem dos cálculos: a mesma da matemática, podendo haver vários níveis de
parênteses; não há colchetes [ ] ou chaves { }.
Como exemplo, vamos criar um algoritmo para ler e multiplicar dois números inteiros e exibir o
resultado. É importante observar cada linha desta sequência:
Vamos entender todas as linhas do nosso algoritmo:
linha 1 ... Nome do programa. e-Tec Brasil 34 Lógica de Programação
linha 2 ... Indica o início do bloco de declaração de variáveis.
linha 3 ... Declaração das três variáveis do tipo inteiro necessárias ao programa.
linha 4 ... Indica o início do bloco de instruções do algoritmo.
linha 5 ... O comando escreva exibirá na tela do computador uma mensagem que solicita a
digitação do primeiro número.
linha 6 ... O primeiro número digitado será lido e armazenado na variável num1.
linha 7 ... O comando escreva exibirá na tela do computador uma mensagem que solicita a
digitação do segundo número.
linha 8 ... O segundo número digitado será lido e armazenado na variável num2.
linha 9 ... A variável mult receberá o resultado da multiplicação do primeiro número pelo segundo
número.
linha 10 ... O comando escreva exibirá na tela do computador uma mensagem com o resultado da
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 14 Linguagem C
multiplicação.
linha 11 ... Indica o fim do algoritmo.
Exercícios
1) Resolva as seguintes expressões aritméticas considerando A=2, B=5 e C=10:
a) A+B*C/A
b) B+C%A*(B-A/2)
c) (B+C)%2+A*(B+(C*4))
2)O algoritmo abaixo deverá ler duas notas, calcular a média e mostrar o resultado. Para que o
algoritmo seja executado corretamente, complete-o com os comandos que faltam:
3) Faça o mesmo no algoritmo abaixo, cuja finalidade é calcular 8% de aumento sobre um salário:
4) Faça um algoritmo que leia um número inteiro e imprima seu antecessor e seu sucessor.
5) Faça um algoritmo que leia dois números reais e imprima a soma e a média aritmética desses
números.
6) Faça um algoritmo que receba como entrada as medidas dos dois catetos de um triângulo
retângulo e calcule e exiba a medida da hipotenusa e a área do triângulo.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 15 Linguagem C
1.3 Expressões lógicas e estruturas de decisão
Através de expressões lógicas é implementado a manipulação de variáveis e implementação
de tomada de decisões em programas na linguagem C.
1.3.1 Operadores relacionais, operadores lógicos e expressões lógicas
Para entender o conceito e o uso de expressões lógicas, primeiro precisamos conhecer os
operadores lógicos e os operadores relacionais, pois as expressões lógicas são formadas a partir
da utilização desses operadores.
1.3.1.1 Operadores relacionais
Os operadores relacionais são utilizados para realizar comparações entre dois valores de
um mesmo tipo. Esses valores podem ser representados por variáveis ou constantes. Os
operadores relacionais são apresentados na tabela a seguir.
Descrição Símbolo
igual a =
maior que >
menor que <
maior ou igual a >=
menor ou igual a <=
diferente de !=
A uma comparação realizada utilizando um operador relacional dá-se o nome de relação. O
resultado obtido de uma relação é sempre um valor lógico, ou seja, verdadeiro ou falso.
Na tabela a seguir são apresentados exemplos de relações e seus resultados. Para tais
exemplos, considera-se duas variáveis inteiras, A e B, onde A = 5 e B = 8.
Relação Resultado
A=B Falso
A>B Verdadeiro
A<=B Falso
A!=8 Verdadeiro
B>=7 verdadeiro
1.3.1.2 Operadores lógicos
Os operadores lógicos retornam verdadeiro (V) ou falso (F) de acordo com seus operandos.
Os operadores lógicos mais comuns são listados na tabela a seguir.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 16 Linguagem C
Operadores Lógicos
E
OU
NÃO
Os operadores lógicos também são conhecidos como conectivos, pois são utilizados para
formar novas proposições a partir da junção de duas outras. Para entender o funcionamento de
operadores lógicos, vamos recorrer ao nosso exemplo das variáveis inteiras, A e B onde A = 5 e B
= 8. A tabela seguinte exibe exemplos de expressões que usam operadores lógicos
Expressões utilizando operadores lógicos e seus resultados (para A = 5 e B = 8)
Relação Resultado
A<6 E B>7 Verdadeiro: o valor de A é menor que 6 E o valor de B é maior que 7.
A=5 E B<5 Falso: apesar de o valor de A ser igual a 5, o valor de B não é menor
que 5.
A=5 OU B<5 Verdadeiro: usando o operador OU, se ao menos uma das condições
for verdadeira (A = 5), o resultado da expressão é verdadeiro.
De acordo com os exemplos apresentados, observa-se que:
 quando utilizamos o operador lógico E, o resultado só será verdadeiro se as duas condições
relacionadas forem verdadeiras;
 para o operador OU, basta que uma das condições seja verdadeira para que o resultado
seja verdadeiro;
 em consequência: com o operador OU, para que o resultado seja falso as duas condições
devem ser falsas.
Para visualizar todas as opções possíveis ao combinar operadores lógicos, utiliza-se as Tabelas-
verdade.
A tabela a seguir apresenta a Tabela-verdade para o operador lógico OU; Seguido da tabela
para o operador lógico E e finalmente a tabela para o operador lógico NÃO. Os operadores OU e
E trabalham com duas expressões: nas tabelas essas expressões são representadas por P e Q. Já
o operador NÃO trabalha sobre apenas uma expressão, representada na última tabela por P.
Tabela-verdade do operador OU
P Q P ou Q
V V V
V F V
F V V
F F F
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 17 Linguagem C
Tabela-verdade do operador E
P Q P e Q
V V V
V F F
F V F
F F F
Tabela-verdade do operador NÃO
P Não P
V F
F V
1.3.1.3 Expressões lógicas
As expressões lógicas são expressões formadas a partir do uso de variáveis e constantes,
operadores relacionais e operadores lógicos. As expressões lógicas são avaliadas e retornam
sempre um valor lógico: verdadeiro ou falso. As relações utilizadas anteriormente para explicar a
utilização dos operadores lógicos e relacionais são bons exemplos de expressões lógicas.
Outros Exemplos:
(x < y) E (y < z)
(y + z < x) OU (x>10) E (y < 5)
Nos exemplos acima é possível observar, que podem ser combinados, em uma mesma
expressão, operadores relacionais, lógicos e aritméticos. Assim, é importante compreender a
ordem de precedência entre eles, pois isso irá definir a forma de solução da expressão, conforme
a seguir.
Ordem de precedência entre operadores em expressões lógicas
Prioridade Operador
1ª Operadores aritméticos seguindo a ordem de precedência indicada na
seção 2.5
2ª Operadores relacionais
3ª Operador lógico NÃO
4ª Operador lógico E
5ª Operador lógico OU
Exemplo: Dadas as variáveis e as seguintes atribuições:
var NUM1, NUM2, NUM3, NUM4: inteiro
inicio
NUM1 ← 10
NUM2 ← 5
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 18 Linguagem C
NUM3 ← 200
NUM4 ← 200
Verificar se a expressão (NUM1+ NUM2 > 10 E NUM1+ NUM3 > NUM4) é VERDADEIRA (V) ou
FALSA (F):
Analisa-se todas as etapas necessárias:
1) NUM1+ NUM2 > NUM1 é o mesmo que (10+5>10). Pela Tabela de precedências, vimos que
primeiro resolvemos os operadores aritméticos; assim, temos (15 >10). Logo, a resposta é V, já
que 15 é maior que 10.
2) NUM1+ NUM3 > NUM4 é o mesmo que (10+200>200). Assim, a resposta é V, já que 10+200 é
maior que 200.
3) Assim, nossa expressão se resumirá em V E V.
4) Na Tabela-verdade aprendemos que numa proposição V E V, o resultado será V.
5) Portanto, o resultado final é: V, ou seja, Verdadeiro.
Uma forma de evitar confusão é definir as precedências usando parênteses. As expressões dentro
dos parênteses mais internos são resolvidas primeiro, o uso de parênteses pode ser testado usando
uma planilha de cálculo como o Excel.
Exercícios:
Observe as seguintes declarações de variáveis e suas respectivas atribuições e responda
às questões a seguir:
var num1, num2, num3, num4 : inteiro
inicio
num1←10
num2←2
num3←200
num4←200
1) Coloque F ou V nas expressões abaixo:
Exemplo: ( F ) NUM4 > NUM3
a) ( ) NUM1 > NUM2
b) ( ) NUM1 < NUM3
c) ( ) NUM1 < NUM4
d) ( ) NUM3 = NUM4
2) Coloque F ou V nas expressões abaixo:
Exemplo: ( F ) NUM1-NUM2 < NUM2
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 19 Linguagem C
a) ( ) NUM1+ NUM2 > NUM3
b) ( ) NUM1* NUM2 < NUM4
c) ( ) NUM3 - NUM4 != NUM4
d) ( ) NUM3 / NUM1 < NUM4
3) Coloque F ou V nas expressões abaixo:
Exemplo: ( F ) NUM1+ NUM2 > 10 e NUM3 - NUM4 = NUM3
a) ( ) NUM1 / NUM2 > 0 e NUM1 + NUM3 > NUM4
b) ( ) NUM1 * NUM2 > 40 e NUM3 - NUM1 > NUM4
c) ( ) NUM1 - NUM2 = 10 e NUM2 + NUM3 > NUM4
d) ( ) NUM1 + NUM2 < 10 e NUM3 - NUM4 = NUM1
4) Coloque F ou V nas expressões abaixo:
Exemplo: (V) NUM3 / NUM2 >55 ou NUM1+ NUM3 > NUM4
a) ( ) NUM3 / NUM2 > 0 ou NUM1 + NUM3 > NUM4
b) ( ) NUM2 * NUM1 = 50 ou NUM3 - NUM1 > NUM4
c) ( ) NUM1 - NUM2 > 10 ou NUM2 + NUM3 > NUM4
d) ( ) NUM1 + NUM2 > 10 ou NUM3 / NUM1 > NUM4
5) Coloque F ou V nas expressões abaixo:
Exemplo: (V) NUM1 > NUM2 e NUM2 < NUM3 ou NUM3 < NUM4
a) ( ) NUM1 > NUM2 e NUM2 < NUM3 ou NUM3 < NUM4
b) ( ) NUM1 * NUM2 > 10 e NUM1 > NUM4 ou NUM3 - NUM1 > NUM4
c) ( ) NUM1 > 10 ou NUM1> NUM4 e NUM3 - NUM1 > NUM4
d) ( ) NUM1 + NUM2 > 10 ou NUM1 / NUM3 > NUM4 e NUM3 < NUM4
1.3.2 Estrutura de decisão
Os comandos de seleção ou de decisão são técnicas de programação que conduzem a
estruturas de programas que não são totalmente sequenciais. Uma estrutura de seleção permite a
escolha de um grupo de ações a ser executado quando determinadas condições, representadas
por expressões lógicas, são ou não satisfeitas.
Muitas vezes é necessário tomar decisões que podem interferir diretamente no andamento do
algoritmo. A representação dessas decisões em programas é feita através do uso de estruturas de
seleção, ou estruturas de decisão. A estrutura de seleção que se utiliza em Portugol será a estrutura
SE... ENTÃO... SENÃO.
A sintaxe dessa estrutura é exibida a seguir:
Sintaxe: SE <expressão lógica>
ENTÃO <bloco de instruções verdade>
SE NÃO <bloco de instrução falso>
FIM SE
Funcionamento:
A palavra reservada SE indica o início da estrutura de seleção. Após essa palavra, vem a
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 20 Linguagem C
condição que definirá o bloco a ser executado. Qualquer expressão lógica poderá ser
utilizada como condição, pois deverá retornar verdadeiro ou falso. Caso a expressão da
condição seja verdadeira, o bloco de instruções ENTÃO será executado. Caso contrário,
o bloco SENÃO o será. A palavra reservada FIM SE indica o final da estrutura de seleção.
Vale ressaltar que o bloco SENÃO não é obrigatório: caso só queiramos executar algumas
instruções se a expressão lógica for verdadeira, podemos omitir o bloco SENÃO.
Exemplo:
Como primeiro exemplo, é apresentado um programa que solicita que o usuário preencha
suas duas notas, tire a média das duas e, caso a média seja maior ou igual a 60, apresente uma
mensagem parabenizando-o pela aprovação:
Neste algoritmo não foi utilizado o bloco SENÃO da estrutura de seleção. Com isso, caso a média
seja menor que 60, nada acontecerá no programa.
Complementando, a seguir é apresentado uma estrutura de decisão acrescentando o bloco
SENÃO para que mostre uma mensagem de reprovação.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 21 Linguagem C
Nessa nova versão do algoritmo, caso a média seja maior ou igual a 60 continua sendo
exibida uma mensagem informando que o aluno foi aprovado. Mas, caso o aluno não atinja a nota
60, passa a ser exibida uma mensagem informando a reprovação.
Perceba que quando um algoritmo é escrito, algumas linhas têm um recuo maior em relação
à margem. Essa técnica é utilizada para melhorar a organização do código e é chamada de
endentação ou indentação. Note no algoritmo acima que a linha leia(nota1) está com uma distância
maior para a margem do que a linha início. Isso é feito para deixar claro que a linha leia(nota1) está
dentro do bloco de programa iniciado pela linha início. Note que na estrutura de decisão também
se faz uso da endentação para facilitar a visualização do código.
Exercícios:
1) O algoritmo abaixo deve ler o salário bruto e calcular o salário líquido. Neste exemplo, o salário
líquido será o salário bruto menos os descontos de INSS e IR, calculados segundo as seguintes
regras: caso o salário seja menor que R$ 1.500,00 não devemos descontar IR e descontaremos
8% de INSS; para salários a partir de R$ 1.500,00 descontaremos 5% de IR e 11% de INSS. Ao
final deve ser exibido o novo salário. Para que o algoritmo seja executado corretamente, complete-
o com os comandos que faltam.
Obs.: Essas faixas de cálculo são fictícias, apenas para exemplo, não condizendo com as leis em
vigor no país.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 22 Linguagem C
2) Sabendo que triângulo é uma Figura geométrica de três lados onde cada um dos lados é menor
que a soma dos outros dois, queremos fazer um algoritmo que receba três valores e verifique se
eles podem ser os comprimentos dos lados de um triângulo. Neste contexto, complete o algoritmo
abaixo para que funcione:
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 23 Linguagem C
3) Escreva um algoritmo que leia um número inteiro e diga:
 Se ele é par ou ímpar. Dica: utilize o operador % (resto da divisão inteira).
 Se ele é positivo, negativo ou nulo (zero).
4) Escreva um algoritmo que leia a idade de um atleta e escreva na tela em que categoria ele se
enquadra, seguindo o quadro abaixo:
1.3.3 Estruturas de repetição
As estruturas de repetição ou laços são técnicas de programação que permitem que um
bloco de instruções seja executado várias vezes até que uma determinada condição seja satisfeita.
Assim essas estruturas são compostas por uma condição e um conjunto de instruções a serem
executados enquanto a condição não for satisfeita.
Estruturas de repetição são comuns nas situações nas quais é necessário repetir
determinadas ações enquanto um objetivo não é atingido. Da mesma forma, ao desenvolver
algoritmos, depara-se com situações nas quais é necessário repetir um conjunto de instruções até
que uma determinada condição ocorra. Nessas situações é utilizado os comandos de repetição,
também conhecidos como laços ou loops.
No exemplo apresentado anteriormente um algoritmo que lê duas notas de um aluno, calcula
a média e indica se o mesmo foi aprovado ou reprovado. Caso seja necessário calcular a média de
dois alunos utilizando apenas as estruturas que já estudamos, seria necessário praticamente
duplicar todo o algoritmo. Exemplo:
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 24 Linguagem C
No exemplo acima, nota-se que, para executar as mesmas ações duas vezes, foi necessário
duplicar o código. Agora, imagine se o objetivo fosse calcular a média de uma turma de 20 alunos!
Seria necessário repetir por 20 vezes o bloco de instruções que calcula a média.
É em situações como esta, que as estruturas de repetição são úteis. Com elas, um bloco de
instruções do algoritmo pode ser repetido diversas vezes sem ter de duplicar o código. Será visto
a utilização de duas estruturas de repetição: para...faça e enquanto...faça.
1.3.3.1 Estrutura de repetição para...faça
A estrutura de repetição para...faça é utilizada quando um determinado bloco de instruções
deve ser repetido um número fixo conhecido de vezes.
Sintaxe:
para <variável de controle>de <valor inicial>até <valor final> passo <incremento>
faça
<bloco de instruções>
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 25 Linguagem C
fim para
Funcionamento:
A palavra reservada para indica o início da estrutura de repetição. Após essa palavra
vem o nome de uma variável que irá controlar a quantidade de repetições do laço. Essa
variável deve ser do tipo inteiro e deve ter sido declarada no bloco de declarações de
variáveis do seu algoritmo (bloco var). Depois de definida a variável de controle,
aparece a palavra reservada de, que define o valor inicial que será atribuído à variável
de controle. Em seguida aparece a palavra reservada ate definindo o valor que irá
encerrar o laço, ou seja, as instruções serão repetidas enquanto a variável de controle
tiver valor menor ou igual ao valor final. Por fim é definido o valor de incremento através
da palavra reservada passo. Esse valor é utilizado para incrementar a variável de
controle após cada ciclo de execução.
Como primeiro exemplo, supondo-se que seja necessário apenas imprimir na tela do
computador todos os números inteiros de 1 até 10.
Solução utilizando a estrutura para...faça.
Entendendo o algoritmo: Nas 4 primeiras linhas não há novidades: apenas nomeou-se o
algoritmo, foi definido uma variável e o programa foi iniciado.
Na linha 5 foi definido um laço utilizando a variável contador como controle. NO laço foi
iniciado atribuindo o valor 1 à variável contador e indicado que o laço irá até 10 com passo 1, ou
seja, a primeira vez que o laço for executado a variável contador será igual a 1. Então, o comando
escreva presente na linha 6 imprimirá 1 na tela.
Após a execução da escrita, chegou-se ao final do laço (linha 7 ... fim para). Nesse ponto,
a variável de controle é incrementada pelo valor de passo (no nosso exemplo o valor de passo é
1). Assim, a variável contador passa a ter o valor 2. Como 2 é menor ou igual a 10 (valor final do
laço), o laço é repetido. Assim, o comando escreva que aparece na linha 6 será executado
novamente e imprimirá 2 na tela.
Novamente a variável contador é incrementada em 1, passando a valer 3. Como 3 ainda é
menor ou igual a 10 (valor final do laço), o laço é repetido, imprimindo 3 na tela. E assim a execução
segue até que a variável de controle atinja um valor maior que 10.
Dessa maneira, ao executar esse algoritmo, seria impresso na tela o seguinte: 12345678910
Agora que esta compreendido como utilizar uma estrutura para...faça, retomando o exemplo
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 26 Linguagem C
do cálculo da média de alunos. Supondo-se que queira fazer um algoritmo para calcular as médias
de 20 alunos. Nesse exemplo, é sabido que o bloco responsável pelo cálculo das médias terá de
se repetir por 20 vezes. Assim, constrói-se um laço utilizando a estrutura para...faça tendo como
valor inicial 1, valor final 20 e incremento 1. Assim, a variável de controle começará com 1 e, a cada
vez que o laço for executado, ela será incrementada em 1, até chegar ao valor 20. Ou seja, o laço
será executado 20 vezes. Esse algoritmo está implementado no Exemplo a segui:
Na linha 6 deste exemplo, é iniciado um laço que termina na linha 18. O trecho que vai da
linha 7 até a linha 17 está dentro do laço, ou seja, se repetirá 20 vezes, pois, pela definição da linha
6, o laço vai de 1 a 20 com passo 1.
O trecho que está dentro do laço é idêntico ao algoritmo para cálculo de média visto na seção
anterior. Assim, por 20 vezes, o programa repetirá o procedimento de solicitar duas notas, calcular
a média e indicar se o aluno foi aprovado ou reprovado. Na primeira vez que o laço for executado
a variável contador terá o valor 1. Na segunda vez, 2, e assim sucessivamente, até exceder o valor
20.
Exercícios:
1) O que será exibido na tela ao executar o algoritmo a seguir.
Algoritmo contagem
var c : inteiro
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 27 Linguagem C
inicio
para c de 0 ate 10 passo 2 faca
escreva(c)
fim para
fim.
2) Faça um algoritmo que exiba na tela todos os números ímpares entre 100 e 200.
3) Faça um algoritmo que leia 15 números inteiros e, para cada um deles, exiba o antecessor, o
sucessor, o dobro e o triplo.
4) Faça um algoritmo que imprima na tela a tabuada de multiplicação por 6. O programa deve
imprimir na primeira linha a multiplicação de 6 por 1; na segunda, de 6 por 2; e assim
sucessivamente, até a décima (6 vezes 10):
5) Em 2010, uma pequena cidade brasileira tem 20.000 habitantes. A previsão do IBGE é que esta
cidade cresça a uma taxa de 5% ao ano. Sabendo disso, faça um algoritmo que imprima na tela o
ano e a população prevista para a cidade em tal ano, com o ano variando de 2011 até 2030.
6) Foi dado como exemplo um algoritmo que lê duas notas de vinte alunos e indica se cada um
deles foi aprovado ou reprovado. Altere aquele algoritmo de forma que leia as notas dos vinte
alunos e, ao final, apenas imprima as quantidades de aprovados e de reprovados.
1.3.3.2 Estrutura de repetição enquanto...faça
A estrutura de repetição enquanto...faça é utilizada quando um determinado bloco de
instruções deve ser repetido enquanto uma determinada condição for verdadeira.
Sintaxe:
enquanto <condição de repetição>
<bloco de instrução>
fim enquanto
Funcionamento:
A palavra reservada enquanto indica o início da estrutura de repetição. Após essa palavra,
vem a condição de repetição. Qualquer expressão lógica poderá ser utilizada como
condição de repetição, pois deverá retornar verdadeiro ou falso. Caso a condição seja
verdadeira, o bloco de instruções será executado. Ao final da execução do bloco de
instruções, a condição de repetição é testada novamente e, caso continue verdadeira,
todo o bloco será executado novamente e assim sucessivamente até que a condição de
repetição se torne falsa.
Como primeiro exemplo, é apresentado uma nova implementação do algoritmo que imprime
os números de 1 a 10; agora, porém, utilizando a estrutura enquanto...faça no lugar da estrutura
para...faça utilizada anteriormente.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 28 Linguagem C
Da linha 1 até a linha 4 apenas nomeou-se o algoritmo, foram declaradas as variáveis e
indicado o início do bloco de instruções.
Na linha 5 foi inicializado a variável contador com o valor 1. No exemplo, utilizando a
estrutura para...faça, essa linha não era necessária, pois a própria estrutura coloca na variável um
valor inicial.
Na linha 6 foi inicializado a estrutura do laço enquanto...faça com a condição de repetição
definindo que o laço será executado enquanto a variável contador for menor ou igual a 10.
Na linha 7 o valor da variável contador é impresso na tela e na linha 8 o valor dessa mesma variável
é incrementado em 1. Assim, na primeira vez que o laço for executado, será impresso na tela o
valor 1 e a variável terá seu valor incrementado para 2. Como 2 é menor que 10, a condição de
repetição continuará verdadeira, fazendo com que o laço seja executado novamente, e assim
sucessivamente, até que o valor da variável contador atinja 11 e a condição de repetição seja
quebrada, encerrando o laço.
Nesse caso, o algoritmo utilizando a estrutura para...faça ficou menor que o algoritmo
utilizando a estrutura enquanto..faça.
Voltando ao exemplo do cálculo de média de alunos. Quando se fala da estrutura para...faça
foi desenvolvido um algoritmo que calcula as médias de 20 alunos indicando se cada um foi
aprovado ou não. Agora supondo uma situação na qual não se saiba a quantidade de alunos da
turma e se queira calcular a média de todos os alunos. Nesse caso a saída seria calcular a média
de um aluno e depois perguntar ao usuário se ele deseja digitar as notas de mais um aluno. Caso
a resposta seja positiva, todo o processo de digitar notas, calcular a média e perguntar se deseja
digitar para mais um aluno será repetido. E assim esse processo ocorrerá até que o usuário informe
que não deseja calcular média de outro aluno. Nesse caso, deve ser utilizado a estrutura
enquanto...faça. Conforme o exemplo a seguir:
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 29 Linguagem C
Analisando o exemplo:
Na linha 4 é declarado uma variável do tipo caracter com o nome resposta que será utilizada
para informar se o usuário deseja ou não digitar as notas de mais um aluno.
Na linha 6 armazena-se um “S” nessa variável. Isso é feito para que a condição de repetição da
linha 7 seja verdadeira na primeira vez que for executada. A linha 7 define o início da estrutura de
repetição que termina na linha 21.
A condição de repetição é que o valor da variável resposta seja igual a “S”. Assim, o trecho
que vai da linha 8 à linha 20 se repetirá enquanto o valor da variável resposta for “S”.4
O trecho que vai da linha 8 à linha 18 já é conhecido, pois foi utilizado em vários outros
algoritmos. É nesse trecho que é solicitado a digitação das duas notas do aluno, calcula-se a média
e é impresso se ele foi aprovado ou não.
Na linha 19 é perguntado ao usuário se ele deseja digitar as notas de outro aluno ou não.
Espera-se que, caso deseje digitar as notas de outro aluno, o usuário digite um “S” e, caso contrário,
digite um “N”. Na linha 20 a resposta digitada pelo usuário é armazenada na variável resposta.
É esperado que o usuário digite “S” ou “N”. Porém, neste algoritmo, a resposta para continuar tem
que ser “S” – maiúsculo. Qualquer outro caractere encerrará o laço.
Na linha 21 é encerrado o bloco de repetição. Assim, o fluxo volta à linha 7 onde é testada a
resposta dada pelo usuário. Se a resposta for “S”, a condição de repetição será verdadeira e todo
o bloco de repetição é executado novamente. Caso contrário, o laço é finalizado e a execução
continua na linha 22, que determina o fim do programa.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 30 Linguagem C
Exercícios:
1) O algoritmo abaixo deve ficar lendo números inteiros até que o número zero seja informado.
Quando o número zero for informado, o algoritmo deve exibir na tela a quantidade de números
digitados (contando inclusive com o zero digitado) e a média dos valores digitados. Assim, complete
as lacunas de forma que o algoritmo funcione corretamente.
Algoritmo exercicio1
var numero, quantidade, soma : inteiro
media : real
inicio
numero ← 1
quantidade ← 0
soma ← 0
enquanto numero != ____ faca
escreva(“Digite um numero”)
leia(________)
quantidade ← ____________ + 1 soma ← soma + _____________
fim enquanto
media ← __________ / ____________
escreva (“Quantidade de numeros digitados:”, _____________)
escreva (“Media dos numeros digitados:”, _____________)
fim.
2) Faça um algoritmo que solicite a digitação da idade e do sexo de uma pessoa (o sexo deve ser
F ou M) e depois pergunte se o usuário deseja informar uma nova pessoa. Esse processo deve se
repetir até que o usuário informe que não deseja mais informar novas pessoas. Quando isso
acontecer, o algoritmo deve imprimir na tela a quantidade de pessoas do sexo masculino
informadas; a quantidade de pessoas do sexo feminino informadas; a média das idades informadas
para pessoas de sexo masculino; e a média das idades informadas para pessoas de sexo feminino.
3) Faça um programa que fique em laço solicitando a digitação do estado civil (S para solteiro, C
para Casado, V para viúvo ou D para Divorciado) e da idade de pessoas. O programa só deve parar
de solicitar a digitação de dados de novas pessoas quando for informado um estado civil inválido
(diferente de S, C, V e D) ou uma idade inválida (idade menor que 0). Quando isso acontecer,
devem ser exibidas as quantidades de pessoas de cada estado civil e a respectiva média de idade.
A condição de repetição deste laço é um pouco mais complexa: você deverá montar uma expressão
lógica usando OU ou E.
4) Foi dado como exemplo um algoritmo que solicita duas notas de alunos e indica se cada um
deles foi aprovado ou reprovado até que o usuário responda que não deseja mais informar notas
de alunos. Altere aquele algoritmo de forma que, ao final da execução, informe a quantidade total
de alunos analisados, a quantidade de alunos aprovados e a quantidade de alunos reprovados.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 31 Linguagem C
2.1 Conceitos básicos
No capítulo anterior, a construção dos algoritmos utilizou uma linguagem conhecida como
Portugol. Esta linguagem é muito utilizada para iniciar o ensino de programação por ter regras
formais e rígidas como uma linguagem de programação e, ao mesmo tempo, ser muito parecida
com a linguagem natural humana. Mas, quando queremos construir algoritmos que computadores
possam entender e executar, é necessário que utilizemos uma linguagem de programação2 que
disponha de um compilador3 que transforme o algoritmo em um programa a ser executado.
O arquivo contendo o algoritmo que desenvolvemos é chamado de “fonte”, pois é a partir
dele que o compilador vai criar o programa4 a ser executado.
2.2 A Linguagem C
A linguagem C, é uma das mais bem-sucedidas linguagens de alto nível já criadas e
considerada uma das linguagens de programação mais utilizada de todos os tempos. Define-se
como linguagem de alto nível aquela que possui um nível de abstração relativamente elevado, que
está mais próximo da linguagem humana do que do código de máquina.
Ela foi criada em 1972 nos laboratórios da Bell por Dennis Ritchie, sendo revisada e
padronizada pela ANSI (Instituto Nacional Americano de Padrões, do inglês American National
Standards Institute) em 1989.
Trata-se de uma linguagem estruturalmente simples e de grande portabilidade. Poucas são
as arquiteturas de computadores para que um compilador C não exista. Além disso, o compilador
da linguagem gera códigos mais enxutos e velozes do que muitas outras linguagens.
A linguagem C é uma linguagem procedural, ou seja, ela permite que um problema complexo
seja facilmente decomposto em módulos, onde cada módulo representa um problema mais simples.
Além disso, ela fornece acesso de baixo nível à memória, o que permite o acesso e a programação
direta do microprocessador. Ela também permite a implementação de programas utilizando
instruções em Assembly, o que permite programar problemas onde a dependência do tempo é
crítica.
Por fim, a linguagem C foi criada para incentivar a programação multi plataforma, ou seja,
programas escritos em C podem ser compilados para uma grande variedade de plataformas e
sistemas operacionais com apenas pequenas alterações no seu código fonte.
2.2.1 Influência da Linguagem C
A linguagem C tem influenciado, direta ou indiretamente, muitas linguagens desenvolvidas
posteriormente, tais como C++, Java, C# e PHP. Na figura a seguir, é possível ver uma breve
história da evolução da linguagem C e de sua influência no desenvolvimento de outras linguagens
de programação:
2
Linguagem de programação : É um método padronizado para expressar instruções para um computador (LAUREANO, 2005,
p. 4).
3
Compilador : É um programa que traduz algoritmos construídos em uma determinada linguagem de programação para arquivos
em linguagem de máquina, ou seja, possíveis de serem executados em computadores.
4
Programa : É uma coleção de instruções que descrevem uma tarefa a ser realizada por um computador (LAUREANO, 2005, p.
4)
Introdução à linguagem C 2
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 32 Linguagem C
Provavelmente, a influência mais marcante da linguagem foi a sua sintática: todas as
linguagens mencionadas combinam a sintaxe de declaração e a sintaxe da expressão da linguagem
C com sistemas de tipo, modelos de dados, etc. A figura abaixo mostra como um comando de
impressão números variando de 1 até 10 pode ser implementado em diferentes linguagens:
C Java
for (i=1; i<=10; i++)
{
printf(“%dn”, i);
}
for (int i=1; i<=10; i++ )
{
System.out.println(i);
}
PHP Perl
for ($i=1; $i<=10; $i++)
{
echo $i;
}
for ($i=1; $i<=10; $i++)
{
print $i;
}
2.3 Ambiente de Programação
Neste curso foi escolhida a linguagem C. Para compilar e executar os programas será
utilizado o ambiente de programação Dev-C++, disponível gratuitamente no link http://dev-
c.softonic.com.br/download, ou no ambiente de suporte ao curso.
Assim que o ambiente Dev-C++, for carregado a tela a seguir será a primeira a que se tem
acesso. Clicar no botão <Fechar> da janela “Dica do dia”. Deve surgir então, a tela inicial do Dev
C++.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 33 Linguagem C
Para criar um arquivo a fim de escrever um programa deve ser acessado o menu
Arquivo->Novo->Arquivo Fonte, como apresentado na figura.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 34 Linguagem C
Ou pode ser acessado o ícone da barra de ferramentas
O resultado é o espaço para digitação do código do programa.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 35 Linguagem C
A seguir o código de um programa que exibe a mensagem “Hello world”.
Para executar o programa escrito, deve -se acessar o menu <Executar> → <Compilar & Executar>.
Ou a tecla de atalho f9.
A seguir é apresentado o resultado da execução do programa.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 36 Linguagem C
A medida em que for utilizando-se da ferramenta novas funcionalidades serão descobertas.
2.4 Estrutura de um programa na linguagem C
Todo programa escrito em linguagem C que vier a ser escrito deve possuir a seguinte
estrutura:
Este programa parece ser inútil, já que sua única finalidade é mostrar na tela uma mensagem
dizendo Hello World, fazer uma pausa, e terminar o programa. Porém, com ele é possível
compreender alguns dos conceitos básicos da linguagem C, como apresentado na figura a seguir:
Primeiro programa na linguagem C
No início do programa, tem-se a região onde são feitas as declarações globais, ou seja,
aquelas que são válidas para todo o programa. No exemplo, o comando #include
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 37 Linguagem C
<nome_da_biblioteca> é utilizado para declarar as bibliotecas5 que serão utilizadas pelo
programa. Uma biblioteca é um conjunto de funções (pedaços de código) já implementados e que
podem ser utilizados pelo programador. No exemplo anterior, duas bibliotecas foram adicionadas
ao programa: stdio.h (que contém as funções de leitura do teclado e escrita em tela) e stdlib.h;
Todo o programa em linguagem C deve conter a função main(). Esta função é responsável
pelo início da execução do programa, e é dentro dela que se coloca os comandos para que o
programa execute.
As chaves definem o início “{“ e o fim “}” de um bloco de comandos/Instruções. No exemplo,
as chaves definem o início e o fim do programa.
A função “main()” foi definida como uma função int (inteira), e por isso precisa desenvolver
um valor inteiro. Temos então a necessidade do comando return 0, apenas para informar que o
programa chegou a seu final e que está tudo OK;
A função “printf()” está definida na biblioteca stdio.h. Ela serve para imprimir uma
mensagem de texto na tela do computador (ou melhor, uma janela MSDOS ou shell no linux). O
texto a ser escrito deve estar entre “aspas duplas”, e dentro dele podemos também colocar
caracteres especiais, como o “n”, que indica que é para mudar de linha a antes de continuar a
escrever na tela;
O comando system(“pause”), definido na biblioteca stdlib.h, serve para interromper a
execução do programa (fazer uma pausa) para que você possa analisar a tela de saída, após o
término da execução do programa.
A declaração de um comando quase sempre termina com um ponto e vírgula “;”. Nas
próximas seções, será visto quais comandos que não terminam com um ponto e vírgula “;”.
Os parênteses definem o início “(“ e o fim “)” da lista de argumentos de uma função. Um
argumento é a informação que será passada para a função agir. No exemplo, observa-se que os
comandos main, printf e system, são funções;
2.4.1 Endentação do Código
Endentação de código, trata-se de uma convenção de escrita de códigos fonte que visa
modificar a estética do programa para auxiliar a leitura pelo programador e tornar a interpretação
muito mais fácil, facilitando a sua modificação.
A endentação é o espaçamento (ou tabulação) colocado antes de começar a escrever o
código na linha. O objetivo é indicar a hierarquia dos elementos. No exemplo apresentado
anteriormente, os comandos printf, system e return possuem a mesma hierarquia (portanto o
mesmo espaçamento) e estão todos contidos dentro do comando main() (daí o porquê do
espaçamento). O ideal é sempre criar um novo nível de endentação para um novo bloco de
comandos.
A endentação é importante, pois o exemplo anterior poderia ser escrito em apenas três
linhas, sem afetar o seu desempenho, mas com um alto grau de dificuldade de leitura para o
programador:
5
Biblioteca : arquivo contendo um conjunto de funções (pedaços de código) já ́ implementados e que podem ser utilizados pelo
programador em um novo programa.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 38 Linguagem C
Programa sem endentação
2.5 Comentários
Um comentário, como seu próprio nome diz, é um trecho de texto incluído dentro do
programa para descrever alguma coisa, por exemplo, o que aquela parte do programa faz. Os
comentários não modificam o funcionamento do programa, pois são ignorados pelo compilador e
servem, portanto, apenas para ajudar o programador a organizar o seu código.
Um comentário pode ser adicionado em qualquer parte do código. Para tanto, a linguagem
C permite fazer comentários de duas maneiras diferentes: por linha ou por bloco.
Se o programador quiser comentar uma única linha do código, basta adicionar “//” na frente
da linha. Tudo o que vier na linha depois do “//” será considerado como comentário e será ignorado
pelo compilador.
Porém, se o programador quiser comentar mais de uma linha do código, isto é, um bloco de
linhas, basta adicionar /* no começo da primeira linha e */ no final da última linha de comentário.
Tudo o que vier depois do símbolo de /* e antes do */ será considerado como comentário e será
ignorado pelo compilador.
A seguir, tem-se alguns exemplos de comentários em um programa:
Exemplo: Comentários em um programa
Outro aspecto importante do uso dos comentários é que eles permitem fazer a
documentação interna de um programa, ou seja, permitem descrever o que cada bloco de
comandos daquele programa faz. A documentação é uma tarefa extremamente importante no
desenvolvimento e manutenção de um programa, mas muitas vezes ignoradas.
Os comentários dentro de um código permitem que um programador entenda muito mais
rapidamente um código que nunca tenha visto ou que ele relembre o que faz um trecho de código
a muito tempo implementado por ele. Além disso, saber o que um determinado trecho de código
realmente faz aumenta as possibilidades de reutilizá-lo em outras aplicações.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 39 Linguagem C
2.6 Bibliotecas e funções úteis
2.6.1 Comando #include
O comando #include é utilizado para declarar as bibliotecas que serão utilizadas pelo
programa. Esse comando diz ao pré processador para tratar o conteúdo de um arquivo
especificando como se seu conteúdo houvesse sido digitado no programa no ponto em que o
comando #include aparece;
O comando #include permite duas sintaxes:
#include <nome_da_biblioteca>: O pré processador procurará pela biblioteca nos
caminhos de procura pré-estabelecidos do compilador. Usa-se essa sintaxe quando estamos
incluindo uma biblioteca que é própria do sistema, como as bibliotecas stdio.h e stdlib.h;
#include “nome_da_biblioteca”: O pré processador procurará pela biblioteca no mesmo
diretório onde se encontra o programa. Podendo ainda optar por informar o nome do arquivo com
o caminho completo, ou seja, em qual diretório ele se encontra e como chegar até lá. De modo
geral, os arquivos de bibliotecas na linguagem C são terminados com a extenção .h.
A seguir é apresentado dois exemplos do uso do comando #include:
#include <stdio.h>
#include “c:programasccalculo.h”
Na primeira linha, o comando #include é utilizado para adicionar uma biblioteca do sistema:
stdio.h (que contém as funções de leitura do teclado e escrita em tela). Já na segunda linha, o
comando é utilizado para adicionar uma biblioteca de nome calculo.h, localizada no diretório
“c:programasc”.
2.6.2 Funções de entrada e saída : stdio.h
Operações em arquivos
remove: apaga o arquivo
rename: renomeia o arquivo
Acesso a arquivos
fclose: fecha o arquivo
fflush: limpa o buffer. Quaisquer os dados não escritos no buffer de saída são gravados no
arquivo.
fopen: abre o arquivos
setbuf: controla o fluxo de armazenamento em buffer.
Entrada/Saída formatadas
fprintf: grava uma saída formatada em arquivo
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 40 Linguagem C
fscanf: lê dados formatados a partir de arquivo padrão
printf: imprime dados formatados na saída padrão (monitor)
scanf: lê dados formatados da entrada padrão (teclado)
sprintf: grava dados formatados em uma string6
sscanf: lê dados formatados a partir de uma string
Entrada/saída de caracteres
fgetc: lê um caractere do arquivos
fgets: lê uma string do arquivo
fputc: escreve um caractere no arquivo
fputs: escreve uma string em arquivo
getc: lê um caractere do arquivos
getchar: lê um caractere de entrada padrão (teclado)
gets: lê uma string da entrada padrão (teclado)
putc: escreve um caractere na saída padrão (monitor)
putchar: escreve um caractere na saída padrão (monitor)
puts: escreve uma string na saída padrão (monitor)
ungetc: retorna um caractere lido para o arquivo dele
Entrada/Saída direta
fread: lê um bloco de dados do arquivo
fwrite: escreve um bloco de dados no arquivo
Posicionamento nos arquivos
fgetpos: retorna a posição do arquivo
fseek: reposiciona o indicador de posição do arquivo
fsetpos: configura o indicador de posição atual no arquivo
ftell: retorna a posição do arquivo para o início
rewind: reposiciona o indicador de posição do arquivo
Tratamento de erros
clearerr: limpa os indicadores de erro
feof: indicador de fim de arquivo
ferror: indicador de checagem de erro
perror: impressão de mensagem de erro
Tipos e macros
FILE: tipo que contém as informações para controlar um arquivo.
6
String : Sequencia de caractéres
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 41 Linguagem C
EOF: constante que indica o fim-de-arquivo
NULL: ponteiro nulo
2.6.3 Funções de utilidade padrão: stdlib.h
Conversão de strings
atof: converte string para double
atoi: converte string para inteiros
atol: converte string para inteiro long
strtod: converte string para double e devolve um ponteiro para o próximo double contido na
string
strtol: converte string para inteiro longo e devolve um ponteiro para o próximo inteiro longo
contido na string
strtoul: converte string para inteiro longo sem sinal e devolve um ponteiro para o próximo
inteiro longo sem sinal contido na string
Geração de sequências pseudoaleatórias
rand: gera número aleatório
srand: inicializa o gerador de números aleatório
Gerenciamento de memória dinâmica
malloc: aloca espaço para um array na memória
calloc: aloca espaço para um array na memória e inicializa com zeros
free: libera o espaço alocado na memória
realloc: modifica o tamanho do espaço alocado na memória
Ambiente do programa
abort: abortar o processo atual
atexit: define uma função a ser executada no termino normal do programa
exit: finaliza o programa
getenv: retorna uma variável de ambiente
system: executa um comando do sistema
Pesquisa e ordenação
bsearch: pesquisa binária em um array
qsort: ordena os elementos do array
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 42 Linguagem C
Aritmética de inteiro
abs: valor absoluto
div: divisão interna
labs: valor absoluto de um inteiro longo
ldiv: divisão inteira de um inteiro longo
2.6.4 Outras funções: math.h, ctype.h, string.h, time.h
math.h : Funções matemáticas
ctype.h: Funções para manipulação de caracteres
string.h: Funções para manipulação de strings
time.h: Funções de data e hora
3.1 Variáveis
Na matemática, uma variável é uma entidade capaz de representar um valor ou expressão.
Ela pode representar um número ou um conjunto de números, como na equação x2+3x+4=0 ou na
função f(x)=x2.
Na computação, uma variável é uma posição de memória onde podemos guardar um
determinado dado ou valor e modificá-lo ao longo da execução do programa. Na linguagem C, a
declaração de uma variável pelo programador segue a seguinte forma geral:
tipo_da_variavel nome_da_variavel
O tipo_da_variável determina o conjunto de valores e de operações que uma variável
aceita, ou seja, que ela pode executar. Já o nome_da_variavel é como o programador identifica
essa variável dentro do programa. Ao nome que a variável o computador associa o endereço do
espaço que ele reservou na memória para guardar essa variável. Depois da declaração de uma
variável é necessário colocar um ponto e vírgula (;).
Uma variável do tipo inteiro pode ser declarada como apresentado a seguir:
int x;
Além disso, mais de uma variável pode ser declarada para um mesmo tipo. Para tanto, basta
separar cada nome de variável por uma vírgula (,):
int x,y,z;
Uma variável deve ser declarada obrigatoriamente antes de ser usada no programa.
Somente no momento em que a variável é declarada é que o computador reserva um espaço de
memória para guardarmos nossos dados.
Manipulando dados, variáveis e expressões 3
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 43 Linguagem C
Antes de usar o conteúdo de uma variável, deve se ter certeza que o mesmo já foi atribuído
a esta variável. Caso contrário esta variável poderá conter um valor qualquer que não faça nenhum
sentido para o programa.
Exemplo:
Saída: x = qualquer valor
x = 5
Quando se fala em memória do computador não existe o conceito de posição de memória
“vazia”. A posição pode apenas não estar sendo utilizada. Cada posição de memória do computador
está preenchida com um conjunto de 0's e 1's. Portanto, quando uma variável é criada, ela
automaticamente estará preenchida com um valor chamado de “lixo”.
3.1.1 Nomeando variável
Quando uma variável é criada, o computador reserva um espaço de memória onde é possível
guardar o valor associado a essa variável ao nome que é dado a ela e então o computador associa
o endereço do espaço que ele reservou na memória para guardar essa variável. De um modo geral,
interessa ao programador saber o nome das variáveis. Porém, existem algumas regras para a
escolha dos nomes das variáveis na linguagem C.
 O nome de uma variável é um conjunto de caracteres que podem ser letras, números ou
underscores “_”;
 O nome de uma variável deve sempre iniciar com uma letra ou o underscore “_”;
Na linguagem C, letras maiúsculas e minúsculas são consideradas diferentes. Isto significa que
a linguagem é case sensitive, ou seja, uma palavra escrita utilizando caracteres maiúsculos é
diferente da mesma palavra escrita com caracteres minúsculos. Sendo assim, as palavras Soma,
soma e SOMA são consideradas totalmente diferentes para a linguagem C e representam TRÊS
variáveis distintas.
Palavras chaves ou reservadas, não podem ser usadas como nomes de variáveis. As palavras
chaves são um conjunto de 38 palavras reservadas dentro da linguagem C. São elas que formam
a sintaxe da linguagem de programação C. Essas palavras já possuem funções especificas dentro
da linguagem de programação e, por esse motivo, elas não podem ser utilizadas para outro fim
como, por exemplo, nomes de variáveis. A seguir, é apresentado uma lista com as 32 palavras
reservadas da linguagem C.
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 44 Linguagem C
Lista de palavras chaves da linguagem C
O exemplo a seguir apresenta alguns nomes possíveis de variáveis e outros que fogem as regras
estabelecidas:
Exemplo: nomeando variáveis
3.1.2 Definindo o tipo de uma variável
Anteriormente foi visto que o tipo de uma variável determina o conjunto de valores e de
operações que uma variável aceita, ou seja, que ela pode executar. A linguagem C possui um total
de cinco tipos de dados básicos. São eles:
Tipo Bits Intervalo de Valores
char 8 -128 a 127
int 32 -2.147.483.648 a 2.147.483.647
float 32 1,17549E-038 a 3,402823E+038
double 64 2,225074E-308 a 1,797693E+308
void 8 Sem valor
Tipo char
Esse tipo de dados permite armazenar em um único byte (8 bits) um número inteiro muito
pequeno ou o código de um caractere do conjunto de caracteres da tabela ASCII (em anexo).
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 45 Linguagem C
Exemplo:
char c = 'a';
char n = 10;
Caracteres sempre ficam entre 'aspas simples'. Uma única letra pode ser o nome de uma
variável. As 'aspas simples' permitem que o compilador saiba que a variável esta sendo inicializada
com uma letra e não com o conteúdo de outra variável.
Tipo int
O tipo de dados inteiro (int) permite armazenar um único inteiro (sem parte fracionária). Seu
tamanho depende do processador em que o programa está rodando, e é tipicamente 16 ou 32 bits:
Exemplo:
int n=1459;
Os tipos char e int podem ser especificados nas bases decimal (padrão), octal ou
hexadecimal. A base decimal é a base padrão. Porém, se o valor inteiro for precedido por:
 “0”, ele será interpretado como octal. Nesse caso, o valor deve ser definido utilizando os
dígitos de 0, 1, 2, 3, 4, 5, 6 e 7. Ex: int x = 044; Nesse caso, 044 equivale a 36 (4 ∗ 81 + 4 ∗
80);
 “0x” ou “0X”, ele será interpretado como hexadecimal. Nesse caso, o valor deve ser definido
utilizando os dígitos de 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, e as letras A (10), B (11), C (12), D (13), E
(14) e F (15). Ex: int y = 0x44; Nesse caso, 0x44 equivale a 68 (4 ∗ 161 + 4 ∗ 160);
Tipo float e double
Estes tipos de dados permitem armazenar um valor real (com parte fracionária), também
conhecido como ponto flutuante. A diferença entre eles é de precisão:
 tipo float: precisão simples;
 tipo double: dupla precisão. São úteis quando queremos trabalhar com intervalos de
números reais realmente grandes.
Em números reais, a parte decimal usa ponto e não ponto e vírgula. Isso porque, a linguagem
C, usa o padrão numérico americano, ou seja, a parte decimal fica depois de um ponto.
Exemplos:
float f = 5.25;
double d = 15.673;
Pode-se escrever número dos tipos float e double usando notação científica. A notação
científica é uma forma de escrever números extremamente grandes ou extremamente pequenos.
Nesse caso, o valor real é seguido por uma letra “e” ou “E” e um número inteiro (positivo ou
negativo) que indica o expoente da base 10 (representado pela letra “e” ou “E” que multiplica o
número):
Exemplo:
double x – 5.0e10;
equivale a
double x = 50000000000;
Tipo void
Este tipo de dados permite declarar uma função que não retorna valor ou um ponteiro
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 46 Linguagem C
genérico. A linguagem C não permite que se declare uma variável do tipo void. Esse tipo de dados
só deve ser usado para declarar funções que não retornam valor ou ponteiros genéricos.
Modificadores de tipos
Além dos cinco tipos básicos, a linguagem C possui quatro modificadores de tipos. Eles são
aplicados precedendo os tipos básicos (com a exceção do tipo void), e eles permitem alterar o
significado do tipo, de modo a adequá-los às necessidades do programa. Estes tipos são os
seguintes:
sidned: determina que a variável declarada dos tipos char ou int terá valores positivos ou
negativos. Esse é o padrão da linguagem.
Exemplo:
signed char x;
signed int y;
unsigned: determina que a variável declarada dos tipos char ou int só terá valores positivos.
Nesse caso, a variável perde o seu bit de sinal, o que aumenta a sua capacidade de
armazenamento.
Exemplo:
unsigned char x;
unsigned int y;
short: determina que a variável do tipo int terá 16 bits (inteiro pequeno), independente do
processador.
Exemplo:
short int i;
long: determina que a variável do tipo int terá 32 bits (inteiro grande), independente do
processador. Também determina que o tipo double tenha maior precisão.
Exemplo:
long int n;
long double d;
A linguagem de programação C permite que se utilize mais de um modificador de tipo sobre
o mesmo tipo.
Desta forma, é possível declarar um inteiro grande (long) e sem sinal (unsigned) o que
aumenta em muito o seu intervalo de valores possíveis.
Exemplo:
unsigned long int m;
A tabela a seguir demonstra as combinações permitidas dos tipos básicos e dos
modificadores de tipo, o seu tamanho em bits e seu intervalo de valores:
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 47 Linguagem C
3.2 Lendo e escrevendo dados
3.2.1 printf
A função printf() é uma das funções de saída/escrita de dados da linguagem C. Seu nome
vem da expressão em inglês print formatted, ou seja, escrita formatada. Basicamente, a função
printf() escreve na saída de vídeo (tela) um conjunto de valores, caracteres e/ou sequência de
caracteres de acordo com o formato especificado. A forma geral da função printf() é:
printf(“tipo de saída”, lista de variáveis)
A função printf() recebe dois parâmetros de entrada:
 “tipos de saída”: conjunto de caracteres que especifica o formato dos dados a serem
escritos e/ou o texto a ser escrito;
 “lista de variáveis”: conjunto de nomes de variáveis, separados por vírgula, que serão
escritos.
Escrevendo uma mensagem de texto
A forma geral da função printf() especifica que ela sempre receberá uma lista de variáveis
para formatar e escrever na tela. Isso nem sempre é verdade. A função printf() pode ser usada
quando queremos escrever apenas um texto simples na tela:
printf(“texto”);
Escrevendo valores formatados
Para escrever dados formatados na tela usa-se a forma geral da função, a qual possui os
tipos de saída. Estes tipos especificam o formato de saída dos dados que serão escritos pela
função printf(). Cada tipo de saída é precedido por um sinal de % e um tipo de saída deve ser
especificado para cada variável a ser escrita. Assim, para escrever uma única expressão com o
comando printf(), ficaria:
Curso Técnico em Informática Linguagem C
______________________________________________________________________________________________
Curso Técnico em Informática 48 Linguagem C
Se fossem duas as expressões a serem escritas, ficaria:
Os formatos e as expressões a serem escritas com determinado formato, devem ser
especificados na mesma ordem, conforme ilustram as setas.
Diferentemente do comando scanf(), o comando printf() não exige o símbolo “&” na frente
do nome de uma variável que está escrita na tela. Se usado, ele possui outro significado e não
exibe o conteúdo da variável.
A função printf(), pode ser usada para escrever virtualmente qualquer tipo de dado. A tabela
a seguir mostra alguns dos tipos de saída suportados pela linguagem.
A seguir é apresentado alguns exemplos de escrita de dados utilizando o comando printf().
Nesse momento não se preocupe com o 'n' que aparece dentro do comando printf(), pois ele serve
apenas para mover o cursor para uma nova linha ao final do comando:
Exemplo: escrita de dados na linguagem C.
Saída: 10
105.000000
10 5.000000
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C
Curso Técnico Linguagem C

Weitere ähnliche Inhalte

Was ist angesagt?

Aula 01 - Introdução ao curso - Projeto de Redes de Computadores
Aula 01 - Introdução ao curso - Projeto de Redes de ComputadoresAula 01 - Introdução ao curso - Projeto de Redes de Computadores
Aula 01 - Introdução ao curso - Projeto de Redes de ComputadoresDalton Martins
 
Evolução dos sistemas operativos da windows
Evolução dos sistemas operativos da windowsEvolução dos sistemas operativos da windows
Evolução dos sistemas operativos da windowsFrogFAT
 
Farmacologia 11 antipsicóticos - med resumos (dez-2011)
Farmacologia 11   antipsicóticos - med resumos (dez-2011)Farmacologia 11   antipsicóticos - med resumos (dez-2011)
Farmacologia 11 antipsicóticos - med resumos (dez-2011)Jucie Vasconcelos
 
Apostila de portugol
Apostila de portugolApostila de portugol
Apostila de portugolSandra Rocha
 
Historia de itiuba
Historia de itiubaHistoria de itiuba
Historia de itiubaEuSouEu21
 
Visibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UMLVisibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UMLufpb
 
Project model canvas estudo de caso - TCC Edécio Santos - nov.2014 - UNICAP
Project model canvas estudo de caso - TCC Edécio Santos  - nov.2014 - UNICAPProject model canvas estudo de caso - TCC Edécio Santos  - nov.2014 - UNICAP
Project model canvas estudo de caso - TCC Edécio Santos - nov.2014 - UNICAPEdécio Alves
 
Periféricos
PeriféricosPeriféricos
PeriféricosTiago
 
Tic-excel-01
Tic-excel-01 Tic-excel-01
Tic-excel-01 diogoa21
 
Apostila Microsoft Office Power Point 2016
Apostila Microsoft Office Power Point 2016Apostila Microsoft Office Power Point 2016
Apostila Microsoft Office Power Point 2016Cibele Kanegae
 
A evolução do windows
A evolução do windowsA evolução do windows
A evolução do windowsAndre Amaral
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidorSandu Postolachi
 
Curso de Básico de Excel 2013 - Parte I
Curso de Básico de Excel  2013 - Parte ICurso de Básico de Excel  2013 - Parte I
Curso de Básico de Excel 2013 - Parte IABCursos OnLine
 

Was ist angesagt? (20)

Aula 01 - Introdução ao curso - Projeto de Redes de Computadores
Aula 01 - Introdução ao curso - Projeto de Redes de ComputadoresAula 01 - Introdução ao curso - Projeto de Redes de Computadores
Aula 01 - Introdução ao curso - Projeto de Redes de Computadores
 
Caso De Uso
Caso De UsoCaso De Uso
Caso De Uso
 
Evolução dos sistemas operativos da windows
Evolução dos sistemas operativos da windowsEvolução dos sistemas operativos da windows
Evolução dos sistemas operativos da windows
 
Farmacologia 11 antipsicóticos - med resumos (dez-2011)
Farmacologia 11   antipsicóticos - med resumos (dez-2011)Farmacologia 11   antipsicóticos - med resumos (dez-2011)
Farmacologia 11 antipsicóticos - med resumos (dez-2011)
 
Apostila de portugol
Apostila de portugolApostila de portugol
Apostila de portugol
 
Historia de itiuba
Historia de itiubaHistoria de itiuba
Historia de itiuba
 
teste-excel-pratico
teste-excel-praticoteste-excel-pratico
teste-excel-pratico
 
Visibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UMLVisibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UML
 
1 - Introdução ao linux
1 - Introdução ao linux1 - Introdução ao linux
1 - Introdução ao linux
 
Project model canvas estudo de caso - TCC Edécio Santos - nov.2014 - UNICAP
Project model canvas estudo de caso - TCC Edécio Santos  - nov.2014 - UNICAPProject model canvas estudo de caso - TCC Edécio Santos  - nov.2014 - UNICAP
Project model canvas estudo de caso - TCC Edécio Santos - nov.2014 - UNICAP
 
Periféricos
PeriféricosPeriféricos
Periféricos
 
Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2
 
Tic-excel-01
Tic-excel-01 Tic-excel-01
Tic-excel-01
 
Introducao ao linux
Introducao ao linuxIntroducao ao linux
Introducao ao linux
 
Apostila Microsoft Office Power Point 2016
Apostila Microsoft Office Power Point 2016Apostila Microsoft Office Power Point 2016
Apostila Microsoft Office Power Point 2016
 
A evolução do windows
A evolução do windowsA evolução do windows
A evolução do windows
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidor
 
Curso de Básico de Excel 2013 - Parte I
Curso de Básico de Excel  2013 - Parte ICurso de Básico de Excel  2013 - Parte I
Curso de Básico de Excel 2013 - Parte I
 
AOO - Diagrama de Caso de Uso
AOO - Diagrama de Caso de UsoAOO - Diagrama de Caso de Uso
AOO - Diagrama de Caso de Uso
 
Pin 2020
Pin 2020Pin 2020
Pin 2020
 

Andere mochten auch

Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UMLinfo_cimol
 
Fundamentos da programação de computadores 2ª edição
Fundamentos da programação de computadores   2ª ediçãoFundamentos da programação de computadores   2ª edição
Fundamentos da programação de computadores 2ª ediçãoLeandro Rocha de Oliveira
 
NerdCamp Michigan 2016
NerdCamp Michigan 2016NerdCamp Michigan 2016
NerdCamp Michigan 2016katsok
 
Iniciando na Programação com Python - FLISOL Paracatu 2016
Iniciando na Programação com Python - FLISOL Paracatu 2016Iniciando na Programação com Python - FLISOL Paracatu 2016
Iniciando na Programação com Python - FLISOL Paracatu 2016George Mendonça
 
Artes gráficas e tipográficas
Artes gráficas e tipográficasArtes gráficas e tipográficas
Artes gráficas e tipográficasPavel Mocan
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Ebook curso linux ubuntu v-1.0
Ebook curso linux ubuntu v-1.0Ebook curso linux ubuntu v-1.0
Ebook curso linux ubuntu v-1.0info_cimol
 
Introducción a la tipografía
Introducción a la tipografíaIntroducción a la tipografía
Introducción a la tipografíaOmar Sosa-Tzec
 
Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantesCaique Moretto
 
Como criar um artigo em 1 HORA
Como criar um artigo em 1 HORAComo criar um artigo em 1 HORA
Como criar um artigo em 1 HORAinfo_cimol
 
Ebook 6-passos
Ebook 6-passosEbook 6-passos
Ebook 6-passosinfo_cimol
 
Aprendendo a programar em arduino
Aprendendo a programar em arduinoAprendendo a programar em arduino
Aprendendo a programar em arduinoinfo_cimol
 

Andere mochten auch (20)

Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UML
 
Fundamentos da programação de computadores 2ª edição
Fundamentos da programação de computadores   2ª ediçãoFundamentos da programação de computadores   2ª edição
Fundamentos da programação de computadores 2ª edição
 
NerdCamp Michigan 2016
NerdCamp Michigan 2016NerdCamp Michigan 2016
NerdCamp Michigan 2016
 
Iniciando na Programação com Python - FLISOL Paracatu 2016
Iniciando na Programação com Python - FLISOL Paracatu 2016Iniciando na Programação com Python - FLISOL Paracatu 2016
Iniciando na Programação com Python - FLISOL Paracatu 2016
 
Plano de ensino algoritmos 1
Plano de ensino   algoritmos 1Plano de ensino   algoritmos 1
Plano de ensino algoritmos 1
 
TWP05 Variáveis e Entrada de Dados
TWP05 Variáveis e Entrada de DadosTWP05 Variáveis e Entrada de Dados
TWP05 Variáveis e Entrada de Dados
 
Artes gráficas e tipográficas
Artes gráficas e tipográficasArtes gráficas e tipográficas
Artes gráficas e tipográficas
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
POO Plano de Curso
POO Plano de CursoPOO Plano de Curso
POO Plano de Curso
 
Lista Exercicios 03
Lista Exercicios 03Lista Exercicios 03
Lista Exercicios 03
 
Ebook curso linux ubuntu v-1.0
Ebook curso linux ubuntu v-1.0Ebook curso linux ubuntu v-1.0
Ebook curso linux ubuntu v-1.0
 
Introducción a la tipografía
Introducción a la tipografíaIntroducción a la tipografía
Introducción a la tipografía
 
Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantes
 
Curso de Linguagem C
Curso de Linguagem CCurso de Linguagem C
Curso de Linguagem C
 
Como criar um artigo em 1 HORA
Como criar um artigo em 1 HORAComo criar um artigo em 1 HORA
Como criar um artigo em 1 HORA
 
Lista Exercicios C
Lista Exercicios CLista Exercicios C
Lista Exercicios C
 
Ebook 6-passos
Ebook 6-passosEbook 6-passos
Ebook 6-passos
 
Merci 10 Completo
Merci 10 CompletoMerci 10 Completo
Merci 10 Completo
 
Gerenciamento de Documentos com Software Alfresco
Gerenciamento de Documentos com Software AlfrescoGerenciamento de Documentos com Software Alfresco
Gerenciamento de Documentos com Software Alfresco
 
Aprendendo a programar em arduino
Aprendendo a programar em arduinoAprendendo a programar em arduino
Aprendendo a programar em arduino
 

Ähnlich wie Curso Técnico Linguagem C

Ähnlich wie Curso Técnico Linguagem C (20)

Ncl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digitalNcl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digital
 
Apontamentos de Html
Apontamentos de HtmlApontamentos de Html
Apontamentos de Html
 
Php
PhpPhp
Php
 
Dissertação Mestrado
Dissertação MestradoDissertação Mestrado
Dissertação Mestrado
 
Arquitetura computadores
Arquitetura computadoresArquitetura computadores
Arquitetura computadores
 
Python
PythonPython
Python
 
Tutorial java
Tutorial javaTutorial java
Tutorial java
 
Apostila Java
Apostila JavaApostila Java
Apostila Java
 
Fortran_95_curso_basico_Editora_XXX.pdf
Fortran_95_curso_basico_Editora_XXX.pdfFortran_95_curso_basico_Editora_XXX.pdf
Fortran_95_curso_basico_Editora_XXX.pdf
 
Apostila latex
Apostila latexApostila latex
Apostila latex
 
Algoritmos jabour
Algoritmos jabourAlgoritmos jabour
Algoritmos jabour
 
Hibernate reference pt-br
Hibernate reference pt-brHibernate reference pt-br
Hibernate reference pt-br
 
Apostila pascal
Apostila pascalApostila pascal
Apostila pascal
 
Apostila pascal
Apostila pascalApostila pascal
Apostila pascal
 
Apostila pascal
Apostila pascal Apostila pascal
Apostila pascal
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Apostila informatica basica pronatec
Apostila informatica basica   pronatecApostila informatica basica   pronatec
Apostila informatica basica pronatec
 
Apostila ata informatica_julio_alves
Apostila ata informatica_julio_alvesApostila ata informatica_julio_alves
Apostila ata informatica_julio_alves
 
Manual do Kile
Manual do KileManual do Kile
Manual do Kile
 
História da criptografia
História da criptografiaHistória da criptografia
História da criptografia
 

Mehr von info_cimol

Apostila Criação de Sites I
Apostila Criação de Sites IApostila Criação de Sites I
Apostila Criação de Sites Iinfo_cimol
 
Modelagem de Dados - Introdução à UML
Modelagem de Dados - Introdução à UMLModelagem de Dados - Introdução à UML
Modelagem de Dados - Introdução à UMLinfo_cimol
 
Aula III HTML - Criação de Sites I
Aula III HTML - Criação de Sites IAula III HTML - Criação de Sites I
Aula III HTML - Criação de Sites Iinfo_cimol
 
Apostila de Banco de Dados
Apostila de Banco de Dados Apostila de Banco de Dados
Apostila de Banco de Dados info_cimol
 
Aula II - Criação de sites I
Aula II - Criação de sites IAula II - Criação de sites I
Aula II - Criação de sites Iinfo_cimol
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIinfo_cimol
 
aula 6 PHP - Criação de sites II
aula 6 PHP - Criação de sites IIaula 6 PHP - Criação de sites II
aula 6 PHP - Criação de sites IIinfo_cimol
 
Funções PHP - Criação de sites II
Funções PHP - Criação de sites II Funções PHP - Criação de sites II
Funções PHP - Criação de sites II info_cimol
 
Arrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIArrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIinfo_cimol
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIinfo_cimol
 
Mapeamento do modelo conceitual para o lógico - Banco de Dados
Mapeamento do modelo conceitual  para o lógico - Banco de DadosMapeamento do modelo conceitual  para o lógico - Banco de Dados
Mapeamento do modelo conceitual para o lógico - Banco de Dadosinfo_cimol
 
Introdução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de DadosIntrodução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de Dadosinfo_cimol
 
Modelo Conceitual - Banco de Dados
Modelo Conceitual - Banco de DadosModelo Conceitual - Banco de Dados
Modelo Conceitual - Banco de Dadosinfo_cimol
 
Introdução a modelagem de dados parte II - Banco de Dados
Introdução a modelagem de dados parte II - Banco de DadosIntrodução a modelagem de dados parte II - Banco de Dados
Introdução a modelagem de dados parte II - Banco de Dadosinfo_cimol
 
Apostila Criação de Sites
Apostila Criação de SitesApostila Criação de Sites
Apostila Criação de Sitesinfo_cimol
 
Introdução JQuery
Introdução JQueryIntrodução JQuery
Introdução JQueryinfo_cimol
 
E-Book de estudos
E-Book de estudosE-Book de estudos
E-Book de estudosinfo_cimol
 
Apostila Programação Java
Apostila Programação JavaApostila Programação Java
Apostila Programação Javainfo_cimol
 

Mehr von info_cimol (20)

Apostila Criação de Sites I
Apostila Criação de Sites IApostila Criação de Sites I
Apostila Criação de Sites I
 
Modelagem de Dados - Introdução à UML
Modelagem de Dados - Introdução à UMLModelagem de Dados - Introdução à UML
Modelagem de Dados - Introdução à UML
 
Aula III HTML - Criação de Sites I
Aula III HTML - Criação de Sites IAula III HTML - Criação de Sites I
Aula III HTML - Criação de Sites I
 
Apostila de Banco de Dados
Apostila de Banco de Dados Apostila de Banco de Dados
Apostila de Banco de Dados
 
Aula II - Criação de sites I
Aula II - Criação de sites IAula II - Criação de sites I
Aula II - Criação de sites I
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites II
 
aula 6 PHP - Criação de sites II
aula 6 PHP - Criação de sites IIaula 6 PHP - Criação de sites II
aula 6 PHP - Criação de sites II
 
Funções PHP - Criação de sites II
Funções PHP - Criação de sites II Funções PHP - Criação de sites II
Funções PHP - Criação de sites II
 
Arrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIArrays PHP - Criação de sites II
Arrays PHP - Criação de sites II
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
 
Mapeamento do modelo conceitual para o lógico - Banco de Dados
Mapeamento do modelo conceitual  para o lógico - Banco de DadosMapeamento do modelo conceitual  para o lógico - Banco de Dados
Mapeamento do modelo conceitual para o lógico - Banco de Dados
 
Introdução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de DadosIntrodução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de Dados
 
Modelo Conceitual - Banco de Dados
Modelo Conceitual - Banco de DadosModelo Conceitual - Banco de Dados
Modelo Conceitual - Banco de Dados
 
Introdução a modelagem de dados parte II - Banco de Dados
Introdução a modelagem de dados parte II - Banco de DadosIntrodução a modelagem de dados parte II - Banco de Dados
Introdução a modelagem de dados parte II - Banco de Dados
 
Apostila Criação de Sites
Apostila Criação de SitesApostila Criação de Sites
Apostila Criação de Sites
 
JavaScript
JavaScriptJavaScript
JavaScript
 
JQUERY
JQUERY JQUERY
JQUERY
 
Introdução JQuery
Introdução JQueryIntrodução JQuery
Introdução JQuery
 
E-Book de estudos
E-Book de estudosE-Book de estudos
E-Book de estudos
 
Apostila Programação Java
Apostila Programação JavaApostila Programação Java
Apostila Programação Java
 

Curso Técnico Linguagem C

  • 1. ESCOLA TÉCNICA ESTADUAL MONTEIRO LOBATO Linguagem C Curso Técnico em Informática
  • 2. 1 Introdução a lógica de programação ............................................................................. 1 1.1 Conceitos básicos.............................................................................................. 1 1.1.1 Construção de algoritmos ................................................................... 1 1.1.2 Algoritmos com estruturas de decisão............................................... 2 1.1.3 Algoritmos com estruturas de repetição ............................................ 3 1.2 Conceitos básicos para a construção de algoritmos para computadores ... 4 1.2.1 Formalizando a escrita de algoritmos ................................................ 5 1.2.2 Variáveis ................................................................................................ 5 1.2.2.1 Por que declarar variáveis e como nomeá-las? ................... 6 1.2.2.2 O que são tipos de variáveis?................................................ 6 1.2.3 Constantes ............................................................................................ 8 1.2.4 Comandos de atribuição, entrada e saída de dados ......................... 9 1.2.4.1 Comando de atribuição .......................................................... 9 1.2.4.2 Comando de entrada de dados.............................................. 9 1.2.4.3 Comando de saída de dados................................................ 10 1.2.5 Operadores aritméticos e expressões aritméticas .......................... 12 1.3 Expressões lógicas e estruturas de decisão................................................. 15 1.3.1 Operadores relacionais, operadores lógicos e expressões lógicas 15 1.3.1.1 Operadores relacionais ........................................................ 15 1.3.1.2 Operadores lógicos............................................................... 15 1.3.1.3 Expressões lógicas............................................................... 17 1.3.2 Estrutura de decisão .......................................................................... 19 1.3.3 Estruturas de repetição...................................................................... 23 1.3.3.1 Estrutura de repetição para...faça........................................ 24 1.3.3.2 Estrutura de repetição enquanto...faça .............................. 27 2 Introdução à linguagem C............................................................................................. 31 2.1 Conceitos básicos............................................................................................ 31 2.2 A Linguagem C ................................................................................................. 31 2.2.1 Influência da Linguagem C ................................................................ 31 2.3 Ambiente de Programação .............................................................................. 32 2.4 Estrutura de um programa na linguagem C.................................................. 36 2.4.1 Endentação do Código....................................................................... 37 2.5 Comentários ..................................................................................................... 38 2.6 Bibliotecas e funções úteis ............................................................................. 39 2.6.1 Comando #include.............................................................................. 39 Sumário
  • 3. 2.6.2 Funções de entrada e saída : stdio.h................................................ 39 2.6.3 Funções de utilidade padrão: stdlib.h .............................................. 41 2.6.4 Outras funções: math.h, ctype.h, string.h, time.h ........................... 42 3 Manipulando dados, variáveis e expressões .............................................................. 42 3.1 Variáveis............................................................................................................ 42 3.1.1 Nomeando variável............................................................................. 43 3.1.2 Definindo o tipo de uma variável....................................................... 44 3.2 Lendo e escrevendo dados ............................................................................. 47 3.2.1 printf .................................................................................................... 47 3.2.2 putchar................................................................................................. 49 3.2.3 scanf .................................................................................................... 50 3.2.4 getchar................................................................................................. 52 3.3 Escopo: Tempo de vida da variável................................................................ 52 3.3.1 Escopo global ..................................................................................... 53 3.3.2 Escopo local........................................................................................ 53 3.3.3 Constantes .......................................................................................... 56 3.3.3.1 Comando #define .................................................................. 56 3.3.3.2 Comando constante............................................................. 56 3.3.3.3 Sequência de escape............................................................ 56 3.3.4 Operadores.......................................................................................... 57 3.3.4.1 Operador de atribuição: ”=”................................................. 57 3.3.4.2 Operadores aritméticos........................................................ 59 3.3.4.3 Operadores relacionais ........................................................ 60 3.3.4.4 Operadores Lógicos ............................................................. 61 3.3.4.5 Operadores Bit-a-Bit ............................................................. 62 3.3.4.6 Operadores de atribuição simplificada ............................... 63 3.3.4.7 Operadores de pré e pós-incremento.................................. 64 3.3.4.8 Modeladores de tipos (cast)................................................. 65 3.3.4.9 Operador virgula “,”.............................................................. 66 3.3.4.10 Precedência de operadores ............................................... 66 4 Comandos de Controle Condicional........................................................................... 69 4.1 Definindo uma condição.................................................................................. 69 4.2 Comando if........................................................................................................ 71 4.2.1 uso doas chaves {} ............................................................................. 72 4.3 Comando else................................................................................................... 73 4.4 Aninhamento de if ............................................................................................ 76 4.5 Operador ?........................................................................................................ 77 4.6 Comando switch............................................................................................... 79 5 Comandos de repetição ................................................................................................ 85
  • 4. 5.1 Repetição por condição................................................................................... 85 5.1.1 Laço infinito ........................................................................................ 86 5.2 Comando while................................................................................................. 87 5.3 Comando for..................................................................................................... 89 5.3.1 Omitindo uma cláusula do comando formadas ............................... 91 5.4 Comando do-while ........................................................................................... 93 5.5 Aninhamento de repetições ............................................................................ 96 5.6 Comando break ................................................................................................ 97 5.7 Comando continue........................................................................................... 98 6 Vetores e matrizes - arrays ......................................................................................... 101 6.1 Array com uma dimensão – vetor................................................................. 102 6.1.1 Declarando um vetor ........................................................................ 102 6.1.2 Acessando um elemento do vetor................................................... 103 6.2 Array bi dimensional - Matrizes .................................................................... 106 6.2.1 Declarando uma matriz .................................................................... 106 6.2.2 Acessando um elemento da matrizes............................................. 106 7 Funções.........................................................................................................................111 7.1 Definição e estrutura básica...........................................................................111 7.1.1 Declarando uma função ....................................................................111 7.1.1.1 Funcionamento de uma função ..........................................113 7.1.2 Parâmetros de uma função...............................................................113 7.1.2.1 Declarando os parâmetros de uma função........................113 7.1.2.2 Funções sem lista de parâmetros.......................................114 7.2 Retorno da função...........................................................................................114 7.3 Funções sem retorno de valor .......................................................................115 7.4 Funções com retorno de valor.......................................................................115 7.5 Tipo de passagem de parâmetros .................................................................118 7.5.1 Passagem por valor...........................................................................118 7.5.2 Passagem por referência ..................................................................119 7.5.3 Passagem de arrays como parâmetros ...........................................119 7.5.4 Passagem de estruturas por valor .................................................. 120 7.5.5 Passagem de estruturas por referência.......................................... 121 7.5.6 Operador seta ................................................................................... 121 7.6 Recursão......................................................................................................... 122 Anexos............................................................................................................................. 123
  • 5. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 1 Linguagem C Este capitulo tem o objetivo de fazer com que o aluno possa compreender os conceitos de lógica de programação e de algoritmos, além de apresentar os primeiros exemplos de algoritmos e entender os conceitos de estrutura sequencial, estrutura de decisão e estrutura de repetição no contexto de algoritmos. 1.1 Conceitos básicos É importante uma reflexão sobre o significado da palavra “Lógica”. Mas, o que é lógica? Utilizamos a lógica de forma natural em nosso dia a dia. Por exemplo: a) Sei que o livro está no armário. Sei que o armário está fechado. Logo, concluo que tenho de abrir o armário para pegar o livro. b) Sei que sou mais velho que João. Sei que João é mais velho que José. Então, concluo que eu sou mais velho que José. Exercícios: 1) Sejam os seguintes fatos:  Todos os filhos de João são mais altos do que Maria.  Antônio é filho de João. Então, o que podemos concluir logicamente? 2) Considere os fatos abaixo:  Mateus é aluno do CIMOL.  Para ser aprovado, um aluno do CIMOL precisa obter nota maior ou igual a 60 e comparecer a mais de 75% das aulas.  Mateus compareceu a todas as aulas e obteve nota igual a 80. Então, o que podemos concluir? 1.1.1 Construção de algoritmos A lógica de programação é essencial para pessoas que desejam trabalhar com desenvolvimento de programas para computadores. Lógica de programação pode ser definida como um conjunto de técnicas para encadear pensamentos a fim de atingir determinado objetivo. O objetivo fundamental de toda programação é construir algoritmos. Mas, afinal, o que é um algoritmo? Resumindo em uma única frase “Algoritmo é uma sequência lógica para execução de tarefas”. 1Introdução a lógica de programação
  • 6. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 2 Linguagem C Pode-se pensar em algoritmo como uma receita, uma sequência de instruções que realizam uma tarefa específica. Em outras palavras, quando criamos um algoritmo, apenas apontamos uma sequência de atividades que levam à solução de um problema. Até mesmo as soluções para os problemas cotidianos mais simples podem ser descritas por sequências lógicas de atividades. Problema: Trocar uma lâmpada Sequência de Passos para Solução: 1. Pegue uma escada; 2. Posicione a escada embaixo da lâmpada; 3. Pegue uma lâmpada nova; 4. Suba na escada; 5. Retire a lâmpada velha; 6. Coloque a lâmpada nova. Esta solução é apenas uma das muitas possíveis para o problema apresentado. Assim, ao criarmos um algoritmo, indicamos uma dentre várias possíveis sequências de passos para solucionar o problema. Por exemplo, o problema acima poderia ser resolvido mesmo se alterássemos a sequência de passos para: 1. Pegue uma lâmpada nova; 2. Pegue uma escada; 3. Posicione a escada embaixo da lâmpada; 4. Suba na escada; 5. Retire a lâmpada velha; 6. Coloque a lâmpada nova. Exercícios: 1) Escreva um algoritmo (sequência de passos) para trocar um pneu de um carro. 2) Descreva um algoritmo que defina como fazer um bolo. 3) Descreva um algoritmo que defina como preparar um ovo frito. 1.1.2 Algoritmos com estruturas de decisão Os algoritmos que construímos até agora apresentam uma sequência de passos que devem ser seguidos para atingir um objetivo bem definido. Note que todos os passos dos algoritmos devem ser executados a fim de que o objetivo seja alcançado. Porém, há algoritmos nos quais a execução de alguns passos pode depender de decisões a serem tomadas. Dessa forma, algum fato indicará se um ou mais passos do algoritmo serão executados ou não. Por exemplo, o nosso primeiro algoritmo define uma sequência de passos para trocar uma lâmpada. Em momento algum perguntamos se a lâmpada está queimada. Simplesmente trocamos a lâmpada sem fazer qualquer teste. Para resolver esse problema, podemos acrescentar ao nosso algoritmo um teste que verifique se a lâmpada deve ser trocada: 1. Ligue o interruptor 2. Se a lâmpada não acender: 2.1. Pegue uma escada; 2.2. Posicione a escada embaixo da lâmpada;
  • 7. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 3 Linguagem C 2.3. Pegue uma lâmpada nova; 2.4. Suba na escada; 2.5. Retire a lâmpada velha; 2.6. Coloque a lâmpada nova. Agora, estamos ligando os passos de efetuar a troca da lâmpada a uma condição. Assim, só executamos os passos definidos de 2.1 a 2.6 caso a condição definida do passo 2 seja verdadeira, ou seja, caso a lâmpada não acenda. 1.1.3 Algoritmos com estruturas de repetição Note que, apesar de nosso novo algoritmo estar verificando a necessidade de trocar a lâmpada antes de fazê-lo, em momento algum verificamos se a lâmpada nova que foi instalada funciona. Assim, vamos tentar alterar o nosso algoritmo a fim de garantir que ao fim de sua execução tenhamos uma lâmpada funcionando. Para isso, vamos incluir um novo teste em seu final: 1. Ligue o interruptor 2. Se a lâmpada não acender: 2.1. Pegue uma escada; 2.2. Posicione a escada embaixo da lâmpada; 2.3. Pegue uma lâmpada nova; 2.4. Suba na escada; 2.5. Retire a lâmpada velha; 2.6. Coloque a lâmpada nova; 2.7. Se a lâmpada não acender: 2.7.1. Retire a lâmpada; 2.7.2. Coloque uma outra lâmpada; 2.7.3. Se a lâmpada ainda não acender: 2.7.3.1. Retire a lâmpada; 2.7.3.2. Coloque uma outra lâmpada; Pelo nosso novo algoritmo, caso a nova lâmpada não acenda, devemos trocá-la novamente e repetir esse procedimento indefinidamente até que uma lâmpada funcione. Note que não sabemos quantas vezes teremos de repetir o teste até acharmos uma lâmpada que funcione. Em casos como esse, devemos utilizar estruturas de repetição. Essas estruturas definem um fluxo de ações que se repete enquanto uma determinada situação acontece. Dessa forma, substituímos nossa sequência indefinida de estruturas de decisão por uma estrutura de repetição: 1. Ligue o interruptor; 2. Se a lâmpada não acender: 2.1. Pegue uma escada; 2.2. Posicione a escada embaixo da lâmpada; 2.3. Pegue uma lâmpada nova; 2.4. Suba na escada; 2.5. Retire a lâmpada velha; 2.6. Coloque a lâmpada nova. 2.7. Enquanto a lâmpada não acender:
  • 8. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 4 Linguagem C 2.7.1. Retire a lâmpada; 2.7.2. Coloque uma outra lâmpada. Assim, neste novo algoritmo, enquanto a condição definida na linha 2.7 for verdadeira (ou seja, enquanto a lâmpada não acender), as ações definidas em 2.7.1 e 2.7.2 serão repetidas. Abstraímos os fatos de ter de descer da escada para pegar uma lâmpada nova e subir novamente. Neste capitulo você conheceu o conceito de algoritmo e começou a desenvolver sua lógica de programação a partir de exemplos de algoritmos presentes em nosso cotidiano. Este é apenas o início dessa grande viagem pelo mundo da programação! Exercícios: 1) Elabore um algoritmo que indique como fazer uma prova. Faça o algoritmo pensando que o aluno não deve deixar questões em branco; assim, deve continuar fazendo a prova enquanto existir questão em branco e o tempo de prova não tiver acabado. Além disso, o aluno só deve resolver uma questão se souber resolvê-la, senão pula para a próxima. 2) Suponha que você tenha uma caixa cheia de bolas. Nessa caixa existem bolas azuis e bolas vermelhas. Além disso, você tem também duas caixas vazias. Vamos chamar a caixa que contém as bolas de “caixa 1” e as duas caixas vazias de “caixa 2” e “caixa 3”. Neste contexto, escreva um algoritmo que defina como tirar todas as bolas da “caixa 1”, colocando as bolas azuis na “caixa 2” e as bolas vermelhas na “caixa 3”. 3) José trabalha no departamento de recursos humanos de uma empresa. A empresa de José definiu que os salários dos empregados serão aumentados seguindo a seguinte regra: caso o salário seja menor que R$ 1.000,00, o aumento será de 10%; caso contrário, será de 8%. José recebeu uma lista contendo os nomes e salários de todos os funcionários da empresa e foi solicitado que calculasse o novo salário desses funcionários. Assim, escreva um algoritmo para que José calcule corretamente os novos salários. 4) Desafio de lógica: Três missionários e três canibais encontram-se na margem esquerda de um rio. Nessa margem também existe um bote que pode transportar uma ou duas pessoas. As seis pessoas pretendem todas passar para a margem direita (usando o bote). No entanto, os missionários têm de arranjar um plano para consegui-lo de modo que, em nenhuma circunstância, existam missionários numa margem em minoria relativamente aos canibais, pois têm receio do que lhes possa acontecer. Quando o bote chega à margem, os elementos do bote são contados como estando na margem. Assim, se houver apenas um canibal em uma margem, não podemos enviar a essa margem o bote com um canibal e um missionário, pois, ao chegar à outra margem, serão dois canibais contra um missionário. Lembre-se de que para o bote ir de uma margem a outra é necessário que alguém esteja remando, ou seja, o bote nunca atravessa vazio. Faça um algoritmo que exiba, passo a passo, como efetuar esta travessia de forma segura. 1.2 Conceitos básicos para a construção de algoritmos para computadores Neste capitulo você deverá entender a necessidade de se utilizar uma linguagem formal para construir algoritmos a serem interpretados por computadores. Compreender os conceitos de
  • 9. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 5 Linguagem C variáveis, constantes e tipos de dados. Conhecer os conceitos de comandos de atribuição, entrada e saída de dados. Conhecer os operadores aritméticos e a ordem de precedência. Construir nossos primeiros algoritmos em Portugol. 1.2.1 Formalizando a escrita de algoritmos Para que os computadores sejam capazes de interpretar os algoritmos que desenvolvemos, precisamos transformar a sequência de passos que escrevemos em linguagem natural para uma linguagem que possa ser “entendida” pelo computador. Essas linguagens são chamadas de linguagens de programação. Existem diversas linguagens de programação em uso atualmente. Em nosso curso, utilizaremos a linguagem C. Nesta aula, a fim de facilitar o aprendizado dos principais conceitos de programação, utilizaremos o Portugol. O Portugol é uma linguagem que une o formalismo das linguagens de programação à facilidade de compreensão da linguagem natural. Para entender a construção de algoritmos nessas linguagens, vamos iniciar estudando alguns conceitos básicos como variáveis e constantes. 1.2.2 Variáveis O primeiro passo para que um programa seja executado em um computador é o carregamento desse programa para a memória. A memória é utilizada para armazenar tanto as instruções dos programas quanto os dados utilizados pelos mesmos. Qualquer programa, para ser executado, tem de estar na memória1. Ao desenvolvermos nossos algoritmos, frequentemente precisamos armazenar dados referentes ao problema, como um nome, um número ou mesmo o resultado de uma operação. Mas, para armazenar esses dados, precisamos solicitar ao computador que ele reserve uma área da memória para nosso uso. A forma de solicitar ao computador que reserve memória é chamada de declaração de variáveis. Mas, o que é variável? Variável é uma posição nomeada de memória, que é usada para guardar um valor que pode ser modificado pelo programa. A seguir exibe-se como declarar variáveis em Portugol: Sintaxe: var nome_da_variavel : tipo_da_variavel A palavra var é utilizada para indicar o início do bloco de declaração de variáveis de um algoritmo. Essa palavra é escrita apenas uma vez, independentemente do número de variáveis a serem declaradas. Mas, não se preocupe com isso agora. Nesse momento o importante é entender os conceitos de variável e de tipo de variável. nome_da_variavel Quando solicitamos que o computador reserve espaço de memória, temos de informar como vamos nos referir a essa área de memória reservada, ou seja, qual nome daremos a esse espaço 1 Memória: Meio físico para armazenar dados temporariamente ou permanentemente.
  • 10. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 6 Linguagem C de memória. Assim, toda variável tem um nome através do qual é referenciada. A seguir (item 2.2.1) apresentaremos um conjunto de regras que devem ser seguidas para dar nomes às variáveis. Caso queiramos declarar mais de uma variável de um mesmo tipo, basta escrever os nomes desejados para as variáveis separados por vírgula. tipo_da_variável Precisamos informar o tipo de dados que armazenaremos na variável para que o computador saiba o tamanho do espaço de memória que reservará. A seguir (item 2.2.2) serão apresentados os tipos que podem ser utilizados. 1.2.2.1 Por que declarar variáveis e como nomeá-las? Sempre que criamos uma variável, nós o fazemos com o objetivo de armazenar algum tipo de valor específico. Por exemplo, se estivermos desenvolvendo um algoritmo que calcule o imposto de renda a ser pago por um assalariado, precisamos de variáveis para armazenar o valor do salário e para os resultados dos cálculos. Assim, o nome dado à variável deve deixar claro o objetivo da mesma; devemos utilizar nomes sugestivos. Apesar de esta ser a principal diretriz quanto à atribuição de nomes a variáveis, algumas outras regras são apresentadas na tabela a seguir. REGRA EXEMPLO Inicie sempre por um caractere alfabético, nunca por um número. Nome (correto) - 1nome (errado) Não utilize caracteres especiais como “ , ( ) / * ; + . Nome(M); N*B Não coloque espaços em branco ou hífen entre nomes. salario-bruto Utilize, se necessário, underline. salario_bruto Crie suas variáveis com nomes sugestivos. Se vai guardar salário de funcionários, dê à variável o nome salario. 1.2.2.2 O que são tipos de variáveis? Quando declaramos uma variável, devemos ter em mente quais valores serão armazenados naquele espaço de memória. É essa observação que definirá o tipo da variável a ser declarado. Uma variável pode ser de um dos seguintes tipos: • Tipo inteiro: Declararemos variáveis do tipo numérico inteiro quando precisarmos armazenar valores inteiros, positivos ou negativos (0, 1, 5, 7, -10, -5...). Por exemplo, se precisarmos de uma variável para armazenar o número de filhos de um funcionário, o tipo ideal para essa variável seria inteiro. • Tipo real: Declararemos variáveis do tipo numérico real para armazenar valores reais; em outras palavras, valores com ponto decimal (5.7, 3.2, -8.5). Esse seria o tipo ideal para armazenar, por exemplo, o salário de funcionários. • Tipo caractere: Declararemos variáveis do tipo literal caractere para armazenar um único
  • 11. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 7 Linguagem C caractere, que pode ser uma letra ou um símbolo. Por exemplo, para identificar o sexo do indivíduo, armazenaremos apenas o caractere ‘F’ ou ‘M’. • Tipo cadeia: Declararemos variáveis do tipo literal cadeia para armazenar uma sequência de caracteres, ou seja, uma palavra, uma mensagem, um nome. Assim, se precisarmos de uma variável para armazenar o nome de uma pessoa, esse seria o tipo ideal. • Tipo lógico: Declararemos variáveis do tipo lógico para armazenar valores lógicos. O valor de variáveis desse tipo será sempre VERDADEIRO ou FALSO. Lembrando a sintaxe: var nome_variavel1, nome_variavel2 : tipo_variaveis1e2 nome_variavel3 : tipo_variavel3 Assim, suponha que precisemos declarar uma variável para armazenar a idade de uma pessoa, uma para o peso e uma terceira para o nome. Para o peso e a idade utilizaremos variáveis do tipo inteiro e para o nome o tipo será cadeia. Logo, essas declarações ficariam assim: var peso, idade : inteiros nome : cadeia Exercícios 1) Aprendemos algumas regras que devem ser seguidas para dar nomes a variáveis. Assinale os nomes de variáveis que obedecem a essas regras: a) ( ) nome b) ( ) telefone-celular c) ( ) nome+sobrenome d) ( ) 2taxa e) ( ) telefone_celular f) ( ) conta1 2) Para cada valor dado abaixo foi definido um tipo de variável. Marque os pares “valor e tipo” definidos corretamente: a) ( ) valor = 2.5 tipo= real b) ( )valor = ‘F’ tipo= inteiro c) ( ) valor = -2 tipo= inteiro d) ( ) valor = ‘M’ tipo= caractere e) ( ) valor = 5 tipo= cadeia f) ( ) valor = -10.35 tipo= real g) ( ) valor = 38 tipo= real
  • 12. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 8 Linguagem C h) ( )valor = ‘Jose’ tipo= cadeia i) ( ) valor = 135 tipo= inteiro j) ( )valor = 7.5 tipo= inteiro 3) Você está fazendo um algoritmo para calcular a média dos alunos a partir das notas de duas provas. Assim, precisará de três variáveis: uma para a nota da primeira prova, uma para a nota da segunda prova e uma para a média. Segundo as normas da instituição, as notas das provas devem ser números inteiros de 0 a 10. Já para a média podem ser atribuídos valores com casas decimais. Utilizando a sintaxe de declaração de variáveis em Portugol e as regras para definição de tipos e de nomes, indique como você declararia essas 3 variáveis. Dica: lembre-se de escolher nomes sugestivos para as variáveis. 1.2.3 Constantes Como aprendemos, o valor de uma variável pode ser alterado ao longo de seu algoritmo. Mas, às vezes, precisamos armazenar valores que não se alteram. Para isso existem as constantes. As constantes são criadas obedecendo às mesmas regras de nomenclatura já vistas em variáveis. Diferem apenas no fato de armazenar um valor constante, ou seja, que não se modifica durante a execução de um programa. Constante é uma variável com valor pré-definido que não pode ser modificado por nenhuma função do programa. A sintaxe para a declaração de constantes em Portugol é dada a seguir: Sintaxe: const nome_da_constante ← valor const A palavra const é utilizada para indicar o início do bloco de declaração de constantes de um algoritmo. A exemplo da palavra var, const também é escrita apenas uma vez, independentemente do número de constantes a serem declaradas. nome_da_constante É o nome pelo qual vamos nos referir à constante. Deve obedecer às mesmas regras que os nomes de variáveis. Apenas para ficar fácil a diferenciação entre variáveis e constantes em seus programas, aconselha-se que todas as letras dos nomes das constantes sejam maiúsculas. Como exemplo, considera-se um algoritmo que calcule o valor da contribuição de FGTS: 8% sobre o salário, independentemente do valor do salário. Assim, a taxa de 8% será constante durante a execução do programa. Logo, poderia declarar minha constante da seguinte forma: const TAXA_FGTS ← 0.08
  • 13. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 9 Linguagem C 1.2.4 Comandos de atribuição, entrada e saída de dados 1.2.4.1 Comando de atribuição Na construção de algoritmos, depois que declaramos nossas variáveis e constantes, geralmente precisamos indicar que elas armazenarão um determinado valor durante a execução do programa. Para isso, utilizamos o comando de atribuição que, em Portugol, é representado por uma seta (←), conforme sintaxe a seguir: Sintaxe: identificador <- expressão identificador Nome da variável ou constante a ser utilizada. expressão Valor ou expressão a ser armazenado (veremos ainda neste capítulo que podemos ter expressões aritméticas e expressões lógicas). Exemplos: nota : inteiro /*Criamos a variável inteira nome */ sexo : caractere /*Criamos a variável caractere sexo */ nota ← 10 /* Atribuimos o valor 10 a variável nota*/ saxo ← F /*Atribuimos o caractere F a variavel sexo*/ Os símbolos /* e */ indicam o início e o fim de um comentário, que pode ocupar mais de uma linha. Os símbolos // indicam um comentário que vai até o fim da linha. Em programação utilizamos comentários para explicar a lógica utilizada em nossos algoritmos. 1.2.4.2 Comando de entrada de dados Frequentemente, na construção de algoritmos, precisamos solicitar que usuários informem, por meio do teclado, alguns valores a serem utilizados durante a execução. Por exemplo: se fizermos um algoritmo para calcular a média das notas de um aluno, precisaremos solicitar quais foram as notas, para depois calcularmos a média. Esses valores informados devem ser armazenados em variáveis para que sejam utilizados quando necessário. O comando de entrada de dados será responsável pela leitura e armazenamento desses dados na variável que indicarmos. A sintaxe do comando de entrada de dados em Portugol é exibida abaixo: Sintaxe: leia(variavel) leia( ) Função responsável por ler o que o usuário digitou e armazenar o valor na variável indicada.
  • 14. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 10 Linguagem C variavel Nome da variável utilizada para armazenar o valor digitado. Exemplo: nota : inteiro //Criamos a variável inteira nota leia(nota) //Atribuímos à variável nota o valor digitado pelo usuário 1.2.4.3 Comando de saída de dados Por meio da utilização do comando de saída de dados, conseguimos exibir mensagens ou valores para o usuário de nossos programas. É através desse comando que nosso algoritmo consegue se comunicar com o usuário para solicitar a entrada de dados ou para fornecer saídas de dados. O comando de saída de dados exibe no monitor valores de constantes, variáveis ou expressões. A sintaxe do comando de saída de dados em Portugol é exibida a seguir: Sintaxe: escreva(expressão) escreva( ) Função responsável por escrever no monitor uma mensagem para o usuário. expressao Indica o que será escrito no monitor. É normalmente composta por um texto fixo seguido por uma vírgula e um nome de variável. Para exemplificar a utilização dos comandos de entrada e de saída de dados, vamos criar nosso primeiro algoritmo completo em Portugol. Mas, antes disso, vamos ver a estrutura geral de um algoritmo em Portugol: Estrutura Geral de um algoritmo em Portugol: algoritmo nome_do_algoritmo const /*Aqui devem ser declaradas todas as constantes do nosso algoritmo seguindo as regras de sintaxe já estudadas. Caso nosso algoritmo não necessite de constantes, esta seção não deve existir.*/ var /*Aqui devem ser declaradas todas as variáveis do nosso algoritmo seguindo as regras de sintaxe já estudadas. Caso nosso algoritmo não necessite de variáveis, esta seção não deve existir.*/ inicio /*Aqui ficará o corpo do algoritmo, ou seja, o conjunto de comandos que formará o algoritmo em si.*/
  • 15. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 11 Linguagem C fim A seguir, nosso primeiro exemplo de algoritmo completo em Portugol. Neste exemplo solicitamos que o usuário digite seu nome e depois imprimimos na tela uma saudação ao mesmo. Note que, como não utilizamos constantes neste algoritmo, ele não faz uso do bloco const. Exemplo: algoritmo exemplos var nome : cadeia /*criamos a variável nome do tipo cadeia*/ inicio escreve(“Digite o seu nome”) /*Solicite que o usuário solicite o seu número*/ leia(nome) /*lemos para a variável nome o valor digitado pelo usuário*/ escreva(“Bom dia”, nome) /*imprimimos na tela e a mensagem Bom dia acompanhada pelo nome digitado pelo usuário*/ fim Assim, caso o usuário tenha digitado o nome Pedro, será exibida no monitor a seguinte mensagem: Bom dia Pedro. Exercícios 1) Assinale os comandos de atribuição realizados corretamente: a) ( ) var cadeia SEXO ← ‘F’ b) ( ) var inteiro ALTURA ← 1.80 c) ( ) var real SALÁRIO ← 3000.00 d) ( ) var cadeia ← “NOME” 2) No programa abaixo, dois valores inteiros são lidos e somados e o resultado dessa soma é mostrado no final da execução. Analise as linhas do programa e assinale as afirmações corretas:
  • 16. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 12 Linguagem C a) ( ) linha 6 → O primeiro valor digitado no teclado está sendo lido e armazenado em num1, b) ( ) linha 7 → O segundo valor digitado no teclado está sendo lido e armazenado em num2, c) ( ) linha 9 → O resultado da soma dos valores digitados está sendo atribuído à variável soma, d) ( ) linha 10 → No monitor serão exibidas a mensagem que está entre aspas e a soma dos números digitados. 3) Faça um algoritmo que solicite que o usuário digite seu nome e a seguir solicite que seja digitada sua idade. Depois que o usuário digitar o nome e a idade, o programa deve exibir na tela duas mensagens: uma com o nome e outra com a idade do usuário. Suponha que o usuário seja o Pedro e tenha 32 anos. Assim, após a digitação dos dados, seu programa deve exibir as seguintes mensagens: “Seu nome é Pedro” e “Você tem 32 anos”. 1.2.5 Operadores aritméticos e expressões aritméticas Os operadores aritméticos são símbolos que representam operações aritméticas, ou seja, as operações matemáticas básicas. O Quadro 2.2 apresenta os operadores aritméticos que utilizaremos neste curso. Operador Operação matemática + Adição - Subtração * Multiplicação / Divisão % Resto da divisão inteira Os operadores aritméticos são utilizados para formar expressões aritméticas. As expressões aritméticas são formadas por operadores aritméticos que agem sobre operandos. Os operandos podem ser variáveis ou constantes do tipo numérico, ou seja, inteiros ou reais. Abaixo temos dois exemplos de expressões aritméticas: nota/2 x*2+y/2 Para resolver expressões aritméticas formadas por mais de um operador, deve-se utilizar uma ordem de precedência entre os mesmos. O Quadro 2.3 exibe essa ordem de precedência. Prioridade Operador Operação 1ª * / % multiplicação, divisão, resto da divisão 2ª + - adição, subtração Além da ordem de prioridades definida acima, podemos utilizar parênteses. Assim, resolvemos primeiro as expressões contidas nos parênteses mais internos, seguindo a ordem de precedência entre operadores, passando depois para os parênteses mais externos. Por exemplo, na expressão:
  • 17. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 13 Linguagem C nota1 + (nota2 + nota3) / 2 Primeiro somamos nota2 a nota3. O resultado é divido por 2 e só depois somamos com nota 1. O resultado da execução de expressões aritméticas é sempre um valor numérico (inteiro ou real) que pode então ser atribuído a uma variável numérica por meio do uso do comando de atribuição estudado anteriormente. Sintetizando: • expressões aritméticas: uma conta a ser feita; • operadores aritméticos: os sinais + - * / %; • operandos aritméticos: constantes ou variáveis (inteiras ou reais), ou outra expressão aritmética; • precedência na ordem dos cálculos: a mesma da matemática, podendo haver vários níveis de parênteses; não há colchetes [ ] ou chaves { }. Como exemplo, vamos criar um algoritmo para ler e multiplicar dois números inteiros e exibir o resultado. É importante observar cada linha desta sequência: Vamos entender todas as linhas do nosso algoritmo: linha 1 ... Nome do programa. e-Tec Brasil 34 Lógica de Programação linha 2 ... Indica o início do bloco de declaração de variáveis. linha 3 ... Declaração das três variáveis do tipo inteiro necessárias ao programa. linha 4 ... Indica o início do bloco de instruções do algoritmo. linha 5 ... O comando escreva exibirá na tela do computador uma mensagem que solicita a digitação do primeiro número. linha 6 ... O primeiro número digitado será lido e armazenado na variável num1. linha 7 ... O comando escreva exibirá na tela do computador uma mensagem que solicita a digitação do segundo número. linha 8 ... O segundo número digitado será lido e armazenado na variável num2. linha 9 ... A variável mult receberá o resultado da multiplicação do primeiro número pelo segundo número. linha 10 ... O comando escreva exibirá na tela do computador uma mensagem com o resultado da
  • 18. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 14 Linguagem C multiplicação. linha 11 ... Indica o fim do algoritmo. Exercícios 1) Resolva as seguintes expressões aritméticas considerando A=2, B=5 e C=10: a) A+B*C/A b) B+C%A*(B-A/2) c) (B+C)%2+A*(B+(C*4)) 2)O algoritmo abaixo deverá ler duas notas, calcular a média e mostrar o resultado. Para que o algoritmo seja executado corretamente, complete-o com os comandos que faltam: 3) Faça o mesmo no algoritmo abaixo, cuja finalidade é calcular 8% de aumento sobre um salário: 4) Faça um algoritmo que leia um número inteiro e imprima seu antecessor e seu sucessor. 5) Faça um algoritmo que leia dois números reais e imprima a soma e a média aritmética desses números. 6) Faça um algoritmo que receba como entrada as medidas dos dois catetos de um triângulo retângulo e calcule e exiba a medida da hipotenusa e a área do triângulo.
  • 19. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 15 Linguagem C 1.3 Expressões lógicas e estruturas de decisão Através de expressões lógicas é implementado a manipulação de variáveis e implementação de tomada de decisões em programas na linguagem C. 1.3.1 Operadores relacionais, operadores lógicos e expressões lógicas Para entender o conceito e o uso de expressões lógicas, primeiro precisamos conhecer os operadores lógicos e os operadores relacionais, pois as expressões lógicas são formadas a partir da utilização desses operadores. 1.3.1.1 Operadores relacionais Os operadores relacionais são utilizados para realizar comparações entre dois valores de um mesmo tipo. Esses valores podem ser representados por variáveis ou constantes. Os operadores relacionais são apresentados na tabela a seguir. Descrição Símbolo igual a = maior que > menor que < maior ou igual a >= menor ou igual a <= diferente de != A uma comparação realizada utilizando um operador relacional dá-se o nome de relação. O resultado obtido de uma relação é sempre um valor lógico, ou seja, verdadeiro ou falso. Na tabela a seguir são apresentados exemplos de relações e seus resultados. Para tais exemplos, considera-se duas variáveis inteiras, A e B, onde A = 5 e B = 8. Relação Resultado A=B Falso A>B Verdadeiro A<=B Falso A!=8 Verdadeiro B>=7 verdadeiro 1.3.1.2 Operadores lógicos Os operadores lógicos retornam verdadeiro (V) ou falso (F) de acordo com seus operandos. Os operadores lógicos mais comuns são listados na tabela a seguir.
  • 20. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 16 Linguagem C Operadores Lógicos E OU NÃO Os operadores lógicos também são conhecidos como conectivos, pois são utilizados para formar novas proposições a partir da junção de duas outras. Para entender o funcionamento de operadores lógicos, vamos recorrer ao nosso exemplo das variáveis inteiras, A e B onde A = 5 e B = 8. A tabela seguinte exibe exemplos de expressões que usam operadores lógicos Expressões utilizando operadores lógicos e seus resultados (para A = 5 e B = 8) Relação Resultado A<6 E B>7 Verdadeiro: o valor de A é menor que 6 E o valor de B é maior que 7. A=5 E B<5 Falso: apesar de o valor de A ser igual a 5, o valor de B não é menor que 5. A=5 OU B<5 Verdadeiro: usando o operador OU, se ao menos uma das condições for verdadeira (A = 5), o resultado da expressão é verdadeiro. De acordo com os exemplos apresentados, observa-se que:  quando utilizamos o operador lógico E, o resultado só será verdadeiro se as duas condições relacionadas forem verdadeiras;  para o operador OU, basta que uma das condições seja verdadeira para que o resultado seja verdadeiro;  em consequência: com o operador OU, para que o resultado seja falso as duas condições devem ser falsas. Para visualizar todas as opções possíveis ao combinar operadores lógicos, utiliza-se as Tabelas- verdade. A tabela a seguir apresenta a Tabela-verdade para o operador lógico OU; Seguido da tabela para o operador lógico E e finalmente a tabela para o operador lógico NÃO. Os operadores OU e E trabalham com duas expressões: nas tabelas essas expressões são representadas por P e Q. Já o operador NÃO trabalha sobre apenas uma expressão, representada na última tabela por P. Tabela-verdade do operador OU P Q P ou Q V V V V F V F V V F F F
  • 21. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 17 Linguagem C Tabela-verdade do operador E P Q P e Q V V V V F F F V F F F F Tabela-verdade do operador NÃO P Não P V F F V 1.3.1.3 Expressões lógicas As expressões lógicas são expressões formadas a partir do uso de variáveis e constantes, operadores relacionais e operadores lógicos. As expressões lógicas são avaliadas e retornam sempre um valor lógico: verdadeiro ou falso. As relações utilizadas anteriormente para explicar a utilização dos operadores lógicos e relacionais são bons exemplos de expressões lógicas. Outros Exemplos: (x < y) E (y < z) (y + z < x) OU (x>10) E (y < 5) Nos exemplos acima é possível observar, que podem ser combinados, em uma mesma expressão, operadores relacionais, lógicos e aritméticos. Assim, é importante compreender a ordem de precedência entre eles, pois isso irá definir a forma de solução da expressão, conforme a seguir. Ordem de precedência entre operadores em expressões lógicas Prioridade Operador 1ª Operadores aritméticos seguindo a ordem de precedência indicada na seção 2.5 2ª Operadores relacionais 3ª Operador lógico NÃO 4ª Operador lógico E 5ª Operador lógico OU Exemplo: Dadas as variáveis e as seguintes atribuições: var NUM1, NUM2, NUM3, NUM4: inteiro inicio NUM1 ← 10 NUM2 ← 5
  • 22. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 18 Linguagem C NUM3 ← 200 NUM4 ← 200 Verificar se a expressão (NUM1+ NUM2 > 10 E NUM1+ NUM3 > NUM4) é VERDADEIRA (V) ou FALSA (F): Analisa-se todas as etapas necessárias: 1) NUM1+ NUM2 > NUM1 é o mesmo que (10+5>10). Pela Tabela de precedências, vimos que primeiro resolvemos os operadores aritméticos; assim, temos (15 >10). Logo, a resposta é V, já que 15 é maior que 10. 2) NUM1+ NUM3 > NUM4 é o mesmo que (10+200>200). Assim, a resposta é V, já que 10+200 é maior que 200. 3) Assim, nossa expressão se resumirá em V E V. 4) Na Tabela-verdade aprendemos que numa proposição V E V, o resultado será V. 5) Portanto, o resultado final é: V, ou seja, Verdadeiro. Uma forma de evitar confusão é definir as precedências usando parênteses. As expressões dentro dos parênteses mais internos são resolvidas primeiro, o uso de parênteses pode ser testado usando uma planilha de cálculo como o Excel. Exercícios: Observe as seguintes declarações de variáveis e suas respectivas atribuições e responda às questões a seguir: var num1, num2, num3, num4 : inteiro inicio num1←10 num2←2 num3←200 num4←200 1) Coloque F ou V nas expressões abaixo: Exemplo: ( F ) NUM4 > NUM3 a) ( ) NUM1 > NUM2 b) ( ) NUM1 < NUM3 c) ( ) NUM1 < NUM4 d) ( ) NUM3 = NUM4 2) Coloque F ou V nas expressões abaixo: Exemplo: ( F ) NUM1-NUM2 < NUM2
  • 23. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 19 Linguagem C a) ( ) NUM1+ NUM2 > NUM3 b) ( ) NUM1* NUM2 < NUM4 c) ( ) NUM3 - NUM4 != NUM4 d) ( ) NUM3 / NUM1 < NUM4 3) Coloque F ou V nas expressões abaixo: Exemplo: ( F ) NUM1+ NUM2 > 10 e NUM3 - NUM4 = NUM3 a) ( ) NUM1 / NUM2 > 0 e NUM1 + NUM3 > NUM4 b) ( ) NUM1 * NUM2 > 40 e NUM3 - NUM1 > NUM4 c) ( ) NUM1 - NUM2 = 10 e NUM2 + NUM3 > NUM4 d) ( ) NUM1 + NUM2 < 10 e NUM3 - NUM4 = NUM1 4) Coloque F ou V nas expressões abaixo: Exemplo: (V) NUM3 / NUM2 >55 ou NUM1+ NUM3 > NUM4 a) ( ) NUM3 / NUM2 > 0 ou NUM1 + NUM3 > NUM4 b) ( ) NUM2 * NUM1 = 50 ou NUM3 - NUM1 > NUM4 c) ( ) NUM1 - NUM2 > 10 ou NUM2 + NUM3 > NUM4 d) ( ) NUM1 + NUM2 > 10 ou NUM3 / NUM1 > NUM4 5) Coloque F ou V nas expressões abaixo: Exemplo: (V) NUM1 > NUM2 e NUM2 < NUM3 ou NUM3 < NUM4 a) ( ) NUM1 > NUM2 e NUM2 < NUM3 ou NUM3 < NUM4 b) ( ) NUM1 * NUM2 > 10 e NUM1 > NUM4 ou NUM3 - NUM1 > NUM4 c) ( ) NUM1 > 10 ou NUM1> NUM4 e NUM3 - NUM1 > NUM4 d) ( ) NUM1 + NUM2 > 10 ou NUM1 / NUM3 > NUM4 e NUM3 < NUM4 1.3.2 Estrutura de decisão Os comandos de seleção ou de decisão são técnicas de programação que conduzem a estruturas de programas que não são totalmente sequenciais. Uma estrutura de seleção permite a escolha de um grupo de ações a ser executado quando determinadas condições, representadas por expressões lógicas, são ou não satisfeitas. Muitas vezes é necessário tomar decisões que podem interferir diretamente no andamento do algoritmo. A representação dessas decisões em programas é feita através do uso de estruturas de seleção, ou estruturas de decisão. A estrutura de seleção que se utiliza em Portugol será a estrutura SE... ENTÃO... SENÃO. A sintaxe dessa estrutura é exibida a seguir: Sintaxe: SE <expressão lógica> ENTÃO <bloco de instruções verdade> SE NÃO <bloco de instrução falso> FIM SE Funcionamento: A palavra reservada SE indica o início da estrutura de seleção. Após essa palavra, vem a
  • 24. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 20 Linguagem C condição que definirá o bloco a ser executado. Qualquer expressão lógica poderá ser utilizada como condição, pois deverá retornar verdadeiro ou falso. Caso a expressão da condição seja verdadeira, o bloco de instruções ENTÃO será executado. Caso contrário, o bloco SENÃO o será. A palavra reservada FIM SE indica o final da estrutura de seleção. Vale ressaltar que o bloco SENÃO não é obrigatório: caso só queiramos executar algumas instruções se a expressão lógica for verdadeira, podemos omitir o bloco SENÃO. Exemplo: Como primeiro exemplo, é apresentado um programa que solicita que o usuário preencha suas duas notas, tire a média das duas e, caso a média seja maior ou igual a 60, apresente uma mensagem parabenizando-o pela aprovação: Neste algoritmo não foi utilizado o bloco SENÃO da estrutura de seleção. Com isso, caso a média seja menor que 60, nada acontecerá no programa. Complementando, a seguir é apresentado uma estrutura de decisão acrescentando o bloco SENÃO para que mostre uma mensagem de reprovação.
  • 25. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 21 Linguagem C Nessa nova versão do algoritmo, caso a média seja maior ou igual a 60 continua sendo exibida uma mensagem informando que o aluno foi aprovado. Mas, caso o aluno não atinja a nota 60, passa a ser exibida uma mensagem informando a reprovação. Perceba que quando um algoritmo é escrito, algumas linhas têm um recuo maior em relação à margem. Essa técnica é utilizada para melhorar a organização do código e é chamada de endentação ou indentação. Note no algoritmo acima que a linha leia(nota1) está com uma distância maior para a margem do que a linha início. Isso é feito para deixar claro que a linha leia(nota1) está dentro do bloco de programa iniciado pela linha início. Note que na estrutura de decisão também se faz uso da endentação para facilitar a visualização do código. Exercícios: 1) O algoritmo abaixo deve ler o salário bruto e calcular o salário líquido. Neste exemplo, o salário líquido será o salário bruto menos os descontos de INSS e IR, calculados segundo as seguintes regras: caso o salário seja menor que R$ 1.500,00 não devemos descontar IR e descontaremos 8% de INSS; para salários a partir de R$ 1.500,00 descontaremos 5% de IR e 11% de INSS. Ao final deve ser exibido o novo salário. Para que o algoritmo seja executado corretamente, complete- o com os comandos que faltam. Obs.: Essas faixas de cálculo são fictícias, apenas para exemplo, não condizendo com as leis em vigor no país.
  • 26. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 22 Linguagem C 2) Sabendo que triângulo é uma Figura geométrica de três lados onde cada um dos lados é menor que a soma dos outros dois, queremos fazer um algoritmo que receba três valores e verifique se eles podem ser os comprimentos dos lados de um triângulo. Neste contexto, complete o algoritmo abaixo para que funcione:
  • 27. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 23 Linguagem C 3) Escreva um algoritmo que leia um número inteiro e diga:  Se ele é par ou ímpar. Dica: utilize o operador % (resto da divisão inteira).  Se ele é positivo, negativo ou nulo (zero). 4) Escreva um algoritmo que leia a idade de um atleta e escreva na tela em que categoria ele se enquadra, seguindo o quadro abaixo: 1.3.3 Estruturas de repetição As estruturas de repetição ou laços são técnicas de programação que permitem que um bloco de instruções seja executado várias vezes até que uma determinada condição seja satisfeita. Assim essas estruturas são compostas por uma condição e um conjunto de instruções a serem executados enquanto a condição não for satisfeita. Estruturas de repetição são comuns nas situações nas quais é necessário repetir determinadas ações enquanto um objetivo não é atingido. Da mesma forma, ao desenvolver algoritmos, depara-se com situações nas quais é necessário repetir um conjunto de instruções até que uma determinada condição ocorra. Nessas situações é utilizado os comandos de repetição, também conhecidos como laços ou loops. No exemplo apresentado anteriormente um algoritmo que lê duas notas de um aluno, calcula a média e indica se o mesmo foi aprovado ou reprovado. Caso seja necessário calcular a média de dois alunos utilizando apenas as estruturas que já estudamos, seria necessário praticamente duplicar todo o algoritmo. Exemplo:
  • 28. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 24 Linguagem C No exemplo acima, nota-se que, para executar as mesmas ações duas vezes, foi necessário duplicar o código. Agora, imagine se o objetivo fosse calcular a média de uma turma de 20 alunos! Seria necessário repetir por 20 vezes o bloco de instruções que calcula a média. É em situações como esta, que as estruturas de repetição são úteis. Com elas, um bloco de instruções do algoritmo pode ser repetido diversas vezes sem ter de duplicar o código. Será visto a utilização de duas estruturas de repetição: para...faça e enquanto...faça. 1.3.3.1 Estrutura de repetição para...faça A estrutura de repetição para...faça é utilizada quando um determinado bloco de instruções deve ser repetido um número fixo conhecido de vezes. Sintaxe: para <variável de controle>de <valor inicial>até <valor final> passo <incremento> faça <bloco de instruções>
  • 29. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 25 Linguagem C fim para Funcionamento: A palavra reservada para indica o início da estrutura de repetição. Após essa palavra vem o nome de uma variável que irá controlar a quantidade de repetições do laço. Essa variável deve ser do tipo inteiro e deve ter sido declarada no bloco de declarações de variáveis do seu algoritmo (bloco var). Depois de definida a variável de controle, aparece a palavra reservada de, que define o valor inicial que será atribuído à variável de controle. Em seguida aparece a palavra reservada ate definindo o valor que irá encerrar o laço, ou seja, as instruções serão repetidas enquanto a variável de controle tiver valor menor ou igual ao valor final. Por fim é definido o valor de incremento através da palavra reservada passo. Esse valor é utilizado para incrementar a variável de controle após cada ciclo de execução. Como primeiro exemplo, supondo-se que seja necessário apenas imprimir na tela do computador todos os números inteiros de 1 até 10. Solução utilizando a estrutura para...faça. Entendendo o algoritmo: Nas 4 primeiras linhas não há novidades: apenas nomeou-se o algoritmo, foi definido uma variável e o programa foi iniciado. Na linha 5 foi definido um laço utilizando a variável contador como controle. NO laço foi iniciado atribuindo o valor 1 à variável contador e indicado que o laço irá até 10 com passo 1, ou seja, a primeira vez que o laço for executado a variável contador será igual a 1. Então, o comando escreva presente na linha 6 imprimirá 1 na tela. Após a execução da escrita, chegou-se ao final do laço (linha 7 ... fim para). Nesse ponto, a variável de controle é incrementada pelo valor de passo (no nosso exemplo o valor de passo é 1). Assim, a variável contador passa a ter o valor 2. Como 2 é menor ou igual a 10 (valor final do laço), o laço é repetido. Assim, o comando escreva que aparece na linha 6 será executado novamente e imprimirá 2 na tela. Novamente a variável contador é incrementada em 1, passando a valer 3. Como 3 ainda é menor ou igual a 10 (valor final do laço), o laço é repetido, imprimindo 3 na tela. E assim a execução segue até que a variável de controle atinja um valor maior que 10. Dessa maneira, ao executar esse algoritmo, seria impresso na tela o seguinte: 12345678910 Agora que esta compreendido como utilizar uma estrutura para...faça, retomando o exemplo
  • 30. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 26 Linguagem C do cálculo da média de alunos. Supondo-se que queira fazer um algoritmo para calcular as médias de 20 alunos. Nesse exemplo, é sabido que o bloco responsável pelo cálculo das médias terá de se repetir por 20 vezes. Assim, constrói-se um laço utilizando a estrutura para...faça tendo como valor inicial 1, valor final 20 e incremento 1. Assim, a variável de controle começará com 1 e, a cada vez que o laço for executado, ela será incrementada em 1, até chegar ao valor 20. Ou seja, o laço será executado 20 vezes. Esse algoritmo está implementado no Exemplo a segui: Na linha 6 deste exemplo, é iniciado um laço que termina na linha 18. O trecho que vai da linha 7 até a linha 17 está dentro do laço, ou seja, se repetirá 20 vezes, pois, pela definição da linha 6, o laço vai de 1 a 20 com passo 1. O trecho que está dentro do laço é idêntico ao algoritmo para cálculo de média visto na seção anterior. Assim, por 20 vezes, o programa repetirá o procedimento de solicitar duas notas, calcular a média e indicar se o aluno foi aprovado ou reprovado. Na primeira vez que o laço for executado a variável contador terá o valor 1. Na segunda vez, 2, e assim sucessivamente, até exceder o valor 20. Exercícios: 1) O que será exibido na tela ao executar o algoritmo a seguir. Algoritmo contagem var c : inteiro
  • 31. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 27 Linguagem C inicio para c de 0 ate 10 passo 2 faca escreva(c) fim para fim. 2) Faça um algoritmo que exiba na tela todos os números ímpares entre 100 e 200. 3) Faça um algoritmo que leia 15 números inteiros e, para cada um deles, exiba o antecessor, o sucessor, o dobro e o triplo. 4) Faça um algoritmo que imprima na tela a tabuada de multiplicação por 6. O programa deve imprimir na primeira linha a multiplicação de 6 por 1; na segunda, de 6 por 2; e assim sucessivamente, até a décima (6 vezes 10): 5) Em 2010, uma pequena cidade brasileira tem 20.000 habitantes. A previsão do IBGE é que esta cidade cresça a uma taxa de 5% ao ano. Sabendo disso, faça um algoritmo que imprima na tela o ano e a população prevista para a cidade em tal ano, com o ano variando de 2011 até 2030. 6) Foi dado como exemplo um algoritmo que lê duas notas de vinte alunos e indica se cada um deles foi aprovado ou reprovado. Altere aquele algoritmo de forma que leia as notas dos vinte alunos e, ao final, apenas imprima as quantidades de aprovados e de reprovados. 1.3.3.2 Estrutura de repetição enquanto...faça A estrutura de repetição enquanto...faça é utilizada quando um determinado bloco de instruções deve ser repetido enquanto uma determinada condição for verdadeira. Sintaxe: enquanto <condição de repetição> <bloco de instrução> fim enquanto Funcionamento: A palavra reservada enquanto indica o início da estrutura de repetição. Após essa palavra, vem a condição de repetição. Qualquer expressão lógica poderá ser utilizada como condição de repetição, pois deverá retornar verdadeiro ou falso. Caso a condição seja verdadeira, o bloco de instruções será executado. Ao final da execução do bloco de instruções, a condição de repetição é testada novamente e, caso continue verdadeira, todo o bloco será executado novamente e assim sucessivamente até que a condição de repetição se torne falsa. Como primeiro exemplo, é apresentado uma nova implementação do algoritmo que imprime os números de 1 a 10; agora, porém, utilizando a estrutura enquanto...faça no lugar da estrutura para...faça utilizada anteriormente.
  • 32. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 28 Linguagem C Da linha 1 até a linha 4 apenas nomeou-se o algoritmo, foram declaradas as variáveis e indicado o início do bloco de instruções. Na linha 5 foi inicializado a variável contador com o valor 1. No exemplo, utilizando a estrutura para...faça, essa linha não era necessária, pois a própria estrutura coloca na variável um valor inicial. Na linha 6 foi inicializado a estrutura do laço enquanto...faça com a condição de repetição definindo que o laço será executado enquanto a variável contador for menor ou igual a 10. Na linha 7 o valor da variável contador é impresso na tela e na linha 8 o valor dessa mesma variável é incrementado em 1. Assim, na primeira vez que o laço for executado, será impresso na tela o valor 1 e a variável terá seu valor incrementado para 2. Como 2 é menor que 10, a condição de repetição continuará verdadeira, fazendo com que o laço seja executado novamente, e assim sucessivamente, até que o valor da variável contador atinja 11 e a condição de repetição seja quebrada, encerrando o laço. Nesse caso, o algoritmo utilizando a estrutura para...faça ficou menor que o algoritmo utilizando a estrutura enquanto..faça. Voltando ao exemplo do cálculo de média de alunos. Quando se fala da estrutura para...faça foi desenvolvido um algoritmo que calcula as médias de 20 alunos indicando se cada um foi aprovado ou não. Agora supondo uma situação na qual não se saiba a quantidade de alunos da turma e se queira calcular a média de todos os alunos. Nesse caso a saída seria calcular a média de um aluno e depois perguntar ao usuário se ele deseja digitar as notas de mais um aluno. Caso a resposta seja positiva, todo o processo de digitar notas, calcular a média e perguntar se deseja digitar para mais um aluno será repetido. E assim esse processo ocorrerá até que o usuário informe que não deseja calcular média de outro aluno. Nesse caso, deve ser utilizado a estrutura enquanto...faça. Conforme o exemplo a seguir:
  • 33. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 29 Linguagem C Analisando o exemplo: Na linha 4 é declarado uma variável do tipo caracter com o nome resposta que será utilizada para informar se o usuário deseja ou não digitar as notas de mais um aluno. Na linha 6 armazena-se um “S” nessa variável. Isso é feito para que a condição de repetição da linha 7 seja verdadeira na primeira vez que for executada. A linha 7 define o início da estrutura de repetição que termina na linha 21. A condição de repetição é que o valor da variável resposta seja igual a “S”. Assim, o trecho que vai da linha 8 à linha 20 se repetirá enquanto o valor da variável resposta for “S”.4 O trecho que vai da linha 8 à linha 18 já é conhecido, pois foi utilizado em vários outros algoritmos. É nesse trecho que é solicitado a digitação das duas notas do aluno, calcula-se a média e é impresso se ele foi aprovado ou não. Na linha 19 é perguntado ao usuário se ele deseja digitar as notas de outro aluno ou não. Espera-se que, caso deseje digitar as notas de outro aluno, o usuário digite um “S” e, caso contrário, digite um “N”. Na linha 20 a resposta digitada pelo usuário é armazenada na variável resposta. É esperado que o usuário digite “S” ou “N”. Porém, neste algoritmo, a resposta para continuar tem que ser “S” – maiúsculo. Qualquer outro caractere encerrará o laço. Na linha 21 é encerrado o bloco de repetição. Assim, o fluxo volta à linha 7 onde é testada a resposta dada pelo usuário. Se a resposta for “S”, a condição de repetição será verdadeira e todo o bloco de repetição é executado novamente. Caso contrário, o laço é finalizado e a execução continua na linha 22, que determina o fim do programa.
  • 34. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 30 Linguagem C Exercícios: 1) O algoritmo abaixo deve ficar lendo números inteiros até que o número zero seja informado. Quando o número zero for informado, o algoritmo deve exibir na tela a quantidade de números digitados (contando inclusive com o zero digitado) e a média dos valores digitados. Assim, complete as lacunas de forma que o algoritmo funcione corretamente. Algoritmo exercicio1 var numero, quantidade, soma : inteiro media : real inicio numero ← 1 quantidade ← 0 soma ← 0 enquanto numero != ____ faca escreva(“Digite um numero”) leia(________) quantidade ← ____________ + 1 soma ← soma + _____________ fim enquanto media ← __________ / ____________ escreva (“Quantidade de numeros digitados:”, _____________) escreva (“Media dos numeros digitados:”, _____________) fim. 2) Faça um algoritmo que solicite a digitação da idade e do sexo de uma pessoa (o sexo deve ser F ou M) e depois pergunte se o usuário deseja informar uma nova pessoa. Esse processo deve se repetir até que o usuário informe que não deseja mais informar novas pessoas. Quando isso acontecer, o algoritmo deve imprimir na tela a quantidade de pessoas do sexo masculino informadas; a quantidade de pessoas do sexo feminino informadas; a média das idades informadas para pessoas de sexo masculino; e a média das idades informadas para pessoas de sexo feminino. 3) Faça um programa que fique em laço solicitando a digitação do estado civil (S para solteiro, C para Casado, V para viúvo ou D para Divorciado) e da idade de pessoas. O programa só deve parar de solicitar a digitação de dados de novas pessoas quando for informado um estado civil inválido (diferente de S, C, V e D) ou uma idade inválida (idade menor que 0). Quando isso acontecer, devem ser exibidas as quantidades de pessoas de cada estado civil e a respectiva média de idade. A condição de repetição deste laço é um pouco mais complexa: você deverá montar uma expressão lógica usando OU ou E. 4) Foi dado como exemplo um algoritmo que solicita duas notas de alunos e indica se cada um deles foi aprovado ou reprovado até que o usuário responda que não deseja mais informar notas de alunos. Altere aquele algoritmo de forma que, ao final da execução, informe a quantidade total de alunos analisados, a quantidade de alunos aprovados e a quantidade de alunos reprovados.
  • 35. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 31 Linguagem C 2.1 Conceitos básicos No capítulo anterior, a construção dos algoritmos utilizou uma linguagem conhecida como Portugol. Esta linguagem é muito utilizada para iniciar o ensino de programação por ter regras formais e rígidas como uma linguagem de programação e, ao mesmo tempo, ser muito parecida com a linguagem natural humana. Mas, quando queremos construir algoritmos que computadores possam entender e executar, é necessário que utilizemos uma linguagem de programação2 que disponha de um compilador3 que transforme o algoritmo em um programa a ser executado. O arquivo contendo o algoritmo que desenvolvemos é chamado de “fonte”, pois é a partir dele que o compilador vai criar o programa4 a ser executado. 2.2 A Linguagem C A linguagem C, é uma das mais bem-sucedidas linguagens de alto nível já criadas e considerada uma das linguagens de programação mais utilizada de todos os tempos. Define-se como linguagem de alto nível aquela que possui um nível de abstração relativamente elevado, que está mais próximo da linguagem humana do que do código de máquina. Ela foi criada em 1972 nos laboratórios da Bell por Dennis Ritchie, sendo revisada e padronizada pela ANSI (Instituto Nacional Americano de Padrões, do inglês American National Standards Institute) em 1989. Trata-se de uma linguagem estruturalmente simples e de grande portabilidade. Poucas são as arquiteturas de computadores para que um compilador C não exista. Além disso, o compilador da linguagem gera códigos mais enxutos e velozes do que muitas outras linguagens. A linguagem C é uma linguagem procedural, ou seja, ela permite que um problema complexo seja facilmente decomposto em módulos, onde cada módulo representa um problema mais simples. Além disso, ela fornece acesso de baixo nível à memória, o que permite o acesso e a programação direta do microprocessador. Ela também permite a implementação de programas utilizando instruções em Assembly, o que permite programar problemas onde a dependência do tempo é crítica. Por fim, a linguagem C foi criada para incentivar a programação multi plataforma, ou seja, programas escritos em C podem ser compilados para uma grande variedade de plataformas e sistemas operacionais com apenas pequenas alterações no seu código fonte. 2.2.1 Influência da Linguagem C A linguagem C tem influenciado, direta ou indiretamente, muitas linguagens desenvolvidas posteriormente, tais como C++, Java, C# e PHP. Na figura a seguir, é possível ver uma breve história da evolução da linguagem C e de sua influência no desenvolvimento de outras linguagens de programação: 2 Linguagem de programação : É um método padronizado para expressar instruções para um computador (LAUREANO, 2005, p. 4). 3 Compilador : É um programa que traduz algoritmos construídos em uma determinada linguagem de programação para arquivos em linguagem de máquina, ou seja, possíveis de serem executados em computadores. 4 Programa : É uma coleção de instruções que descrevem uma tarefa a ser realizada por um computador (LAUREANO, 2005, p. 4) Introdução à linguagem C 2
  • 36. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 32 Linguagem C Provavelmente, a influência mais marcante da linguagem foi a sua sintática: todas as linguagens mencionadas combinam a sintaxe de declaração e a sintaxe da expressão da linguagem C com sistemas de tipo, modelos de dados, etc. A figura abaixo mostra como um comando de impressão números variando de 1 até 10 pode ser implementado em diferentes linguagens: C Java for (i=1; i<=10; i++) { printf(“%dn”, i); } for (int i=1; i<=10; i++ ) { System.out.println(i); } PHP Perl for ($i=1; $i<=10; $i++) { echo $i; } for ($i=1; $i<=10; $i++) { print $i; } 2.3 Ambiente de Programação Neste curso foi escolhida a linguagem C. Para compilar e executar os programas será utilizado o ambiente de programação Dev-C++, disponível gratuitamente no link http://dev- c.softonic.com.br/download, ou no ambiente de suporte ao curso. Assim que o ambiente Dev-C++, for carregado a tela a seguir será a primeira a que se tem acesso. Clicar no botão <Fechar> da janela “Dica do dia”. Deve surgir então, a tela inicial do Dev C++.
  • 37. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 33 Linguagem C Para criar um arquivo a fim de escrever um programa deve ser acessado o menu Arquivo->Novo->Arquivo Fonte, como apresentado na figura.
  • 38. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 34 Linguagem C Ou pode ser acessado o ícone da barra de ferramentas O resultado é o espaço para digitação do código do programa.
  • 39. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 35 Linguagem C A seguir o código de um programa que exibe a mensagem “Hello world”. Para executar o programa escrito, deve -se acessar o menu <Executar> → <Compilar & Executar>. Ou a tecla de atalho f9. A seguir é apresentado o resultado da execução do programa.
  • 40. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 36 Linguagem C A medida em que for utilizando-se da ferramenta novas funcionalidades serão descobertas. 2.4 Estrutura de um programa na linguagem C Todo programa escrito em linguagem C que vier a ser escrito deve possuir a seguinte estrutura: Este programa parece ser inútil, já que sua única finalidade é mostrar na tela uma mensagem dizendo Hello World, fazer uma pausa, e terminar o programa. Porém, com ele é possível compreender alguns dos conceitos básicos da linguagem C, como apresentado na figura a seguir: Primeiro programa na linguagem C No início do programa, tem-se a região onde são feitas as declarações globais, ou seja, aquelas que são válidas para todo o programa. No exemplo, o comando #include
  • 41. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 37 Linguagem C <nome_da_biblioteca> é utilizado para declarar as bibliotecas5 que serão utilizadas pelo programa. Uma biblioteca é um conjunto de funções (pedaços de código) já implementados e que podem ser utilizados pelo programador. No exemplo anterior, duas bibliotecas foram adicionadas ao programa: stdio.h (que contém as funções de leitura do teclado e escrita em tela) e stdlib.h; Todo o programa em linguagem C deve conter a função main(). Esta função é responsável pelo início da execução do programa, e é dentro dela que se coloca os comandos para que o programa execute. As chaves definem o início “{“ e o fim “}” de um bloco de comandos/Instruções. No exemplo, as chaves definem o início e o fim do programa. A função “main()” foi definida como uma função int (inteira), e por isso precisa desenvolver um valor inteiro. Temos então a necessidade do comando return 0, apenas para informar que o programa chegou a seu final e que está tudo OK; A função “printf()” está definida na biblioteca stdio.h. Ela serve para imprimir uma mensagem de texto na tela do computador (ou melhor, uma janela MSDOS ou shell no linux). O texto a ser escrito deve estar entre “aspas duplas”, e dentro dele podemos também colocar caracteres especiais, como o “n”, que indica que é para mudar de linha a antes de continuar a escrever na tela; O comando system(“pause”), definido na biblioteca stdlib.h, serve para interromper a execução do programa (fazer uma pausa) para que você possa analisar a tela de saída, após o término da execução do programa. A declaração de um comando quase sempre termina com um ponto e vírgula “;”. Nas próximas seções, será visto quais comandos que não terminam com um ponto e vírgula “;”. Os parênteses definem o início “(“ e o fim “)” da lista de argumentos de uma função. Um argumento é a informação que será passada para a função agir. No exemplo, observa-se que os comandos main, printf e system, são funções; 2.4.1 Endentação do Código Endentação de código, trata-se de uma convenção de escrita de códigos fonte que visa modificar a estética do programa para auxiliar a leitura pelo programador e tornar a interpretação muito mais fácil, facilitando a sua modificação. A endentação é o espaçamento (ou tabulação) colocado antes de começar a escrever o código na linha. O objetivo é indicar a hierarquia dos elementos. No exemplo apresentado anteriormente, os comandos printf, system e return possuem a mesma hierarquia (portanto o mesmo espaçamento) e estão todos contidos dentro do comando main() (daí o porquê do espaçamento). O ideal é sempre criar um novo nível de endentação para um novo bloco de comandos. A endentação é importante, pois o exemplo anterior poderia ser escrito em apenas três linhas, sem afetar o seu desempenho, mas com um alto grau de dificuldade de leitura para o programador: 5 Biblioteca : arquivo contendo um conjunto de funções (pedaços de código) já ́ implementados e que podem ser utilizados pelo programador em um novo programa.
  • 42. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 38 Linguagem C Programa sem endentação 2.5 Comentários Um comentário, como seu próprio nome diz, é um trecho de texto incluído dentro do programa para descrever alguma coisa, por exemplo, o que aquela parte do programa faz. Os comentários não modificam o funcionamento do programa, pois são ignorados pelo compilador e servem, portanto, apenas para ajudar o programador a organizar o seu código. Um comentário pode ser adicionado em qualquer parte do código. Para tanto, a linguagem C permite fazer comentários de duas maneiras diferentes: por linha ou por bloco. Se o programador quiser comentar uma única linha do código, basta adicionar “//” na frente da linha. Tudo o que vier na linha depois do “//” será considerado como comentário e será ignorado pelo compilador. Porém, se o programador quiser comentar mais de uma linha do código, isto é, um bloco de linhas, basta adicionar /* no começo da primeira linha e */ no final da última linha de comentário. Tudo o que vier depois do símbolo de /* e antes do */ será considerado como comentário e será ignorado pelo compilador. A seguir, tem-se alguns exemplos de comentários em um programa: Exemplo: Comentários em um programa Outro aspecto importante do uso dos comentários é que eles permitem fazer a documentação interna de um programa, ou seja, permitem descrever o que cada bloco de comandos daquele programa faz. A documentação é uma tarefa extremamente importante no desenvolvimento e manutenção de um programa, mas muitas vezes ignoradas. Os comentários dentro de um código permitem que um programador entenda muito mais rapidamente um código que nunca tenha visto ou que ele relembre o que faz um trecho de código a muito tempo implementado por ele. Além disso, saber o que um determinado trecho de código realmente faz aumenta as possibilidades de reutilizá-lo em outras aplicações.
  • 43. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 39 Linguagem C 2.6 Bibliotecas e funções úteis 2.6.1 Comando #include O comando #include é utilizado para declarar as bibliotecas que serão utilizadas pelo programa. Esse comando diz ao pré processador para tratar o conteúdo de um arquivo especificando como se seu conteúdo houvesse sido digitado no programa no ponto em que o comando #include aparece; O comando #include permite duas sintaxes: #include <nome_da_biblioteca>: O pré processador procurará pela biblioteca nos caminhos de procura pré-estabelecidos do compilador. Usa-se essa sintaxe quando estamos incluindo uma biblioteca que é própria do sistema, como as bibliotecas stdio.h e stdlib.h; #include “nome_da_biblioteca”: O pré processador procurará pela biblioteca no mesmo diretório onde se encontra o programa. Podendo ainda optar por informar o nome do arquivo com o caminho completo, ou seja, em qual diretório ele se encontra e como chegar até lá. De modo geral, os arquivos de bibliotecas na linguagem C são terminados com a extenção .h. A seguir é apresentado dois exemplos do uso do comando #include: #include <stdio.h> #include “c:programasccalculo.h” Na primeira linha, o comando #include é utilizado para adicionar uma biblioteca do sistema: stdio.h (que contém as funções de leitura do teclado e escrita em tela). Já na segunda linha, o comando é utilizado para adicionar uma biblioteca de nome calculo.h, localizada no diretório “c:programasc”. 2.6.2 Funções de entrada e saída : stdio.h Operações em arquivos remove: apaga o arquivo rename: renomeia o arquivo Acesso a arquivos fclose: fecha o arquivo fflush: limpa o buffer. Quaisquer os dados não escritos no buffer de saída são gravados no arquivo. fopen: abre o arquivos setbuf: controla o fluxo de armazenamento em buffer. Entrada/Saída formatadas fprintf: grava uma saída formatada em arquivo
  • 44. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 40 Linguagem C fscanf: lê dados formatados a partir de arquivo padrão printf: imprime dados formatados na saída padrão (monitor) scanf: lê dados formatados da entrada padrão (teclado) sprintf: grava dados formatados em uma string6 sscanf: lê dados formatados a partir de uma string Entrada/saída de caracteres fgetc: lê um caractere do arquivos fgets: lê uma string do arquivo fputc: escreve um caractere no arquivo fputs: escreve uma string em arquivo getc: lê um caractere do arquivos getchar: lê um caractere de entrada padrão (teclado) gets: lê uma string da entrada padrão (teclado) putc: escreve um caractere na saída padrão (monitor) putchar: escreve um caractere na saída padrão (monitor) puts: escreve uma string na saída padrão (monitor) ungetc: retorna um caractere lido para o arquivo dele Entrada/Saída direta fread: lê um bloco de dados do arquivo fwrite: escreve um bloco de dados no arquivo Posicionamento nos arquivos fgetpos: retorna a posição do arquivo fseek: reposiciona o indicador de posição do arquivo fsetpos: configura o indicador de posição atual no arquivo ftell: retorna a posição do arquivo para o início rewind: reposiciona o indicador de posição do arquivo Tratamento de erros clearerr: limpa os indicadores de erro feof: indicador de fim de arquivo ferror: indicador de checagem de erro perror: impressão de mensagem de erro Tipos e macros FILE: tipo que contém as informações para controlar um arquivo. 6 String : Sequencia de caractéres
  • 45. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 41 Linguagem C EOF: constante que indica o fim-de-arquivo NULL: ponteiro nulo 2.6.3 Funções de utilidade padrão: stdlib.h Conversão de strings atof: converte string para double atoi: converte string para inteiros atol: converte string para inteiro long strtod: converte string para double e devolve um ponteiro para o próximo double contido na string strtol: converte string para inteiro longo e devolve um ponteiro para o próximo inteiro longo contido na string strtoul: converte string para inteiro longo sem sinal e devolve um ponteiro para o próximo inteiro longo sem sinal contido na string Geração de sequências pseudoaleatórias rand: gera número aleatório srand: inicializa o gerador de números aleatório Gerenciamento de memória dinâmica malloc: aloca espaço para um array na memória calloc: aloca espaço para um array na memória e inicializa com zeros free: libera o espaço alocado na memória realloc: modifica o tamanho do espaço alocado na memória Ambiente do programa abort: abortar o processo atual atexit: define uma função a ser executada no termino normal do programa exit: finaliza o programa getenv: retorna uma variável de ambiente system: executa um comando do sistema Pesquisa e ordenação bsearch: pesquisa binária em um array qsort: ordena os elementos do array
  • 46. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 42 Linguagem C Aritmética de inteiro abs: valor absoluto div: divisão interna labs: valor absoluto de um inteiro longo ldiv: divisão inteira de um inteiro longo 2.6.4 Outras funções: math.h, ctype.h, string.h, time.h math.h : Funções matemáticas ctype.h: Funções para manipulação de caracteres string.h: Funções para manipulação de strings time.h: Funções de data e hora 3.1 Variáveis Na matemática, uma variável é uma entidade capaz de representar um valor ou expressão. Ela pode representar um número ou um conjunto de números, como na equação x2+3x+4=0 ou na função f(x)=x2. Na computação, uma variável é uma posição de memória onde podemos guardar um determinado dado ou valor e modificá-lo ao longo da execução do programa. Na linguagem C, a declaração de uma variável pelo programador segue a seguinte forma geral: tipo_da_variavel nome_da_variavel O tipo_da_variável determina o conjunto de valores e de operações que uma variável aceita, ou seja, que ela pode executar. Já o nome_da_variavel é como o programador identifica essa variável dentro do programa. Ao nome que a variável o computador associa o endereço do espaço que ele reservou na memória para guardar essa variável. Depois da declaração de uma variável é necessário colocar um ponto e vírgula (;). Uma variável do tipo inteiro pode ser declarada como apresentado a seguir: int x; Além disso, mais de uma variável pode ser declarada para um mesmo tipo. Para tanto, basta separar cada nome de variável por uma vírgula (,): int x,y,z; Uma variável deve ser declarada obrigatoriamente antes de ser usada no programa. Somente no momento em que a variável é declarada é que o computador reserva um espaço de memória para guardarmos nossos dados. Manipulando dados, variáveis e expressões 3
  • 47. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 43 Linguagem C Antes de usar o conteúdo de uma variável, deve se ter certeza que o mesmo já foi atribuído a esta variável. Caso contrário esta variável poderá conter um valor qualquer que não faça nenhum sentido para o programa. Exemplo: Saída: x = qualquer valor x = 5 Quando se fala em memória do computador não existe o conceito de posição de memória “vazia”. A posição pode apenas não estar sendo utilizada. Cada posição de memória do computador está preenchida com um conjunto de 0's e 1's. Portanto, quando uma variável é criada, ela automaticamente estará preenchida com um valor chamado de “lixo”. 3.1.1 Nomeando variável Quando uma variável é criada, o computador reserva um espaço de memória onde é possível guardar o valor associado a essa variável ao nome que é dado a ela e então o computador associa o endereço do espaço que ele reservou na memória para guardar essa variável. De um modo geral, interessa ao programador saber o nome das variáveis. Porém, existem algumas regras para a escolha dos nomes das variáveis na linguagem C.  O nome de uma variável é um conjunto de caracteres que podem ser letras, números ou underscores “_”;  O nome de uma variável deve sempre iniciar com uma letra ou o underscore “_”; Na linguagem C, letras maiúsculas e minúsculas são consideradas diferentes. Isto significa que a linguagem é case sensitive, ou seja, uma palavra escrita utilizando caracteres maiúsculos é diferente da mesma palavra escrita com caracteres minúsculos. Sendo assim, as palavras Soma, soma e SOMA são consideradas totalmente diferentes para a linguagem C e representam TRÊS variáveis distintas. Palavras chaves ou reservadas, não podem ser usadas como nomes de variáveis. As palavras chaves são um conjunto de 38 palavras reservadas dentro da linguagem C. São elas que formam a sintaxe da linguagem de programação C. Essas palavras já possuem funções especificas dentro da linguagem de programação e, por esse motivo, elas não podem ser utilizadas para outro fim como, por exemplo, nomes de variáveis. A seguir, é apresentado uma lista com as 32 palavras reservadas da linguagem C.
  • 48. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 44 Linguagem C Lista de palavras chaves da linguagem C O exemplo a seguir apresenta alguns nomes possíveis de variáveis e outros que fogem as regras estabelecidas: Exemplo: nomeando variáveis 3.1.2 Definindo o tipo de uma variável Anteriormente foi visto que o tipo de uma variável determina o conjunto de valores e de operações que uma variável aceita, ou seja, que ela pode executar. A linguagem C possui um total de cinco tipos de dados básicos. São eles: Tipo Bits Intervalo de Valores char 8 -128 a 127 int 32 -2.147.483.648 a 2.147.483.647 float 32 1,17549E-038 a 3,402823E+038 double 64 2,225074E-308 a 1,797693E+308 void 8 Sem valor Tipo char Esse tipo de dados permite armazenar em um único byte (8 bits) um número inteiro muito pequeno ou o código de um caractere do conjunto de caracteres da tabela ASCII (em anexo).
  • 49. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 45 Linguagem C Exemplo: char c = 'a'; char n = 10; Caracteres sempre ficam entre 'aspas simples'. Uma única letra pode ser o nome de uma variável. As 'aspas simples' permitem que o compilador saiba que a variável esta sendo inicializada com uma letra e não com o conteúdo de outra variável. Tipo int O tipo de dados inteiro (int) permite armazenar um único inteiro (sem parte fracionária). Seu tamanho depende do processador em que o programa está rodando, e é tipicamente 16 ou 32 bits: Exemplo: int n=1459; Os tipos char e int podem ser especificados nas bases decimal (padrão), octal ou hexadecimal. A base decimal é a base padrão. Porém, se o valor inteiro for precedido por:  “0”, ele será interpretado como octal. Nesse caso, o valor deve ser definido utilizando os dígitos de 0, 1, 2, 3, 4, 5, 6 e 7. Ex: int x = 044; Nesse caso, 044 equivale a 36 (4 ∗ 81 + 4 ∗ 80);  “0x” ou “0X”, ele será interpretado como hexadecimal. Nesse caso, o valor deve ser definido utilizando os dígitos de 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, e as letras A (10), B (11), C (12), D (13), E (14) e F (15). Ex: int y = 0x44; Nesse caso, 0x44 equivale a 68 (4 ∗ 161 + 4 ∗ 160); Tipo float e double Estes tipos de dados permitem armazenar um valor real (com parte fracionária), também conhecido como ponto flutuante. A diferença entre eles é de precisão:  tipo float: precisão simples;  tipo double: dupla precisão. São úteis quando queremos trabalhar com intervalos de números reais realmente grandes. Em números reais, a parte decimal usa ponto e não ponto e vírgula. Isso porque, a linguagem C, usa o padrão numérico americano, ou seja, a parte decimal fica depois de um ponto. Exemplos: float f = 5.25; double d = 15.673; Pode-se escrever número dos tipos float e double usando notação científica. A notação científica é uma forma de escrever números extremamente grandes ou extremamente pequenos. Nesse caso, o valor real é seguido por uma letra “e” ou “E” e um número inteiro (positivo ou negativo) que indica o expoente da base 10 (representado pela letra “e” ou “E” que multiplica o número): Exemplo: double x – 5.0e10; equivale a double x = 50000000000; Tipo void Este tipo de dados permite declarar uma função que não retorna valor ou um ponteiro
  • 50. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 46 Linguagem C genérico. A linguagem C não permite que se declare uma variável do tipo void. Esse tipo de dados só deve ser usado para declarar funções que não retornam valor ou ponteiros genéricos. Modificadores de tipos Além dos cinco tipos básicos, a linguagem C possui quatro modificadores de tipos. Eles são aplicados precedendo os tipos básicos (com a exceção do tipo void), e eles permitem alterar o significado do tipo, de modo a adequá-los às necessidades do programa. Estes tipos são os seguintes: sidned: determina que a variável declarada dos tipos char ou int terá valores positivos ou negativos. Esse é o padrão da linguagem. Exemplo: signed char x; signed int y; unsigned: determina que a variável declarada dos tipos char ou int só terá valores positivos. Nesse caso, a variável perde o seu bit de sinal, o que aumenta a sua capacidade de armazenamento. Exemplo: unsigned char x; unsigned int y; short: determina que a variável do tipo int terá 16 bits (inteiro pequeno), independente do processador. Exemplo: short int i; long: determina que a variável do tipo int terá 32 bits (inteiro grande), independente do processador. Também determina que o tipo double tenha maior precisão. Exemplo: long int n; long double d; A linguagem de programação C permite que se utilize mais de um modificador de tipo sobre o mesmo tipo. Desta forma, é possível declarar um inteiro grande (long) e sem sinal (unsigned) o que aumenta em muito o seu intervalo de valores possíveis. Exemplo: unsigned long int m; A tabela a seguir demonstra as combinações permitidas dos tipos básicos e dos modificadores de tipo, o seu tamanho em bits e seu intervalo de valores:
  • 51. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 47 Linguagem C 3.2 Lendo e escrevendo dados 3.2.1 printf A função printf() é uma das funções de saída/escrita de dados da linguagem C. Seu nome vem da expressão em inglês print formatted, ou seja, escrita formatada. Basicamente, a função printf() escreve na saída de vídeo (tela) um conjunto de valores, caracteres e/ou sequência de caracteres de acordo com o formato especificado. A forma geral da função printf() é: printf(“tipo de saída”, lista de variáveis) A função printf() recebe dois parâmetros de entrada:  “tipos de saída”: conjunto de caracteres que especifica o formato dos dados a serem escritos e/ou o texto a ser escrito;  “lista de variáveis”: conjunto de nomes de variáveis, separados por vírgula, que serão escritos. Escrevendo uma mensagem de texto A forma geral da função printf() especifica que ela sempre receberá uma lista de variáveis para formatar e escrever na tela. Isso nem sempre é verdade. A função printf() pode ser usada quando queremos escrever apenas um texto simples na tela: printf(“texto”); Escrevendo valores formatados Para escrever dados formatados na tela usa-se a forma geral da função, a qual possui os tipos de saída. Estes tipos especificam o formato de saída dos dados que serão escritos pela função printf(). Cada tipo de saída é precedido por um sinal de % e um tipo de saída deve ser especificado para cada variável a ser escrita. Assim, para escrever uma única expressão com o comando printf(), ficaria:
  • 52. Curso Técnico em Informática Linguagem C ______________________________________________________________________________________________ Curso Técnico em Informática 48 Linguagem C Se fossem duas as expressões a serem escritas, ficaria: Os formatos e as expressões a serem escritas com determinado formato, devem ser especificados na mesma ordem, conforme ilustram as setas. Diferentemente do comando scanf(), o comando printf() não exige o símbolo “&” na frente do nome de uma variável que está escrita na tela. Se usado, ele possui outro significado e não exibe o conteúdo da variável. A função printf(), pode ser usada para escrever virtualmente qualquer tipo de dado. A tabela a seguir mostra alguns dos tipos de saída suportados pela linguagem. A seguir é apresentado alguns exemplos de escrita de dados utilizando o comando printf(). Nesse momento não se preocupe com o 'n' que aparece dentro do comando printf(), pois ele serve apenas para mover o cursor para uma nova linha ao final do comando: Exemplo: escrita de dados na linguagem C. Saída: 10 105.000000 10 5.000000