Buscar

Apostila Dev C++ TecProgI

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

- 2 - 
 
 
++++++++++++++++++++++++++++++++++++++++++++ ÍNDICEÍNDICEÍNDICEÍNDICE ++++++++++++++++++++++++++++++++++++++++++++ 
 
 
���� Módulo I – Lógica de Programação 
 
 Capítulo 1 Histórico 3 
 Capítulo 2 Objetivos 3 
 Capítulo 3 Ambiente 4 
 Capítulo 4 Bibliotecas 5 
 Capítulo 5 Tipos de Dados 6 
 Capítulo 6 Documentação 7 
 Capítulo 7 A Função Principal - main() 8 
 Capítulo 8 Delimitadores de Bloco 8 
 Capítulo 9 Variáveis 9 
 Capítulo 10 Funções de Saída 10 
 Capítulo 11 Funções de Entrada 11 
 Capítulo 12 Estruturas de Decisões 16 
 12.1 - Seqüências Simples 16 
 12.2 - Seqüências Alternativas 17 
 12.2.1 - Seqüências Alternativas Simples - if 17 
 12.2.2 - Seqüências Alternativas Compostas - if...else 18 
 12.2.3 - Seqüências Alternativas com Múltiplas Condições 19 
 12.2.4 - Estrutura Caso - case 20 
 Capítulo 13 Laços de Repetição - Iterações 23 
 13.1 - Iteração Enquanto - while 24 
 13.2 - Iteração Repita – do while 28 
 13.3 - Iteração Para - for 31 
 Capítulo 14 Estruturas Homogêneas 34 
 14.1 - Matrizes com Uma Dimensão (Vetores) 34 
 14.2 - Matrizes com Duas dimensões 37 
 Capítulo 15 Estruturas Heterogêneas 42 
 15.1 – Registros - struct 42 
 Capítulo 16 Procedimentos e Funções 48 
 
���� Módulo II – Estruturas de Dados 
 
 Capítulo 1 Cadeia de Caracteres 51 
 Capítulo 2 Listas Lineares 53 
 Capítulo 3 Filas 57 
 Capítulo 4 Pilhas 62 
 Capítulo 5 Deques 68 
 Capítulo 6 Recursividade 74 
 Capítulo 7 Árvores 77 
 
���� Módulo III – Arquivos 
 
 Capítulo 1 Arquivo Texto 83 
 Capítulo 2 Arquivo Binário 86 
 
���� Anexo I – Projetos 
 
 Capítulo 1 Criptografia Simétrica 90 
 Capítulo 2 Criptografia Assimétrica 97 
 Capítulo 3 Agenda 115 
 Capítulo 4 Locadora 123 
 Capítulo 5 Controle de Estoque 130 
 
���� Anexo II – Exercícios Resolvidos 
 
 
- 3 - 
 
++++++++++++++++++++++++++++++++++++++++++++ MÓDULO IMÓDULO IMÓDULO IMÓDULO I ++++++++++++++++++++++++++++++++++++++++++++ 
LÓGICA DE PROGRAMAÇÃOLÓGICA DE PROGRAMAÇÃOLÓGICA DE PROGRAMAÇÃOLÓGICA DE PROGRAMAÇÃO 
 
 
 
I I I I ���� HISTÓRICO HISTÓRICO HISTÓRICO HISTÓRICO 
 
A Linguagem C foi desenvolvida no início dos anos 70, em 1972, por Dennis M. Ritchie. Sua 
primeira implementação foi feita num PDP-11 com sistema UNIX, tendo sido, em seguida, utilizada para 
rescrever o UNIX. 
 
O desenvolvimento da linguagem C foi fortemente influenciado pela linguagem B, desenvolvida por 
Ken Tompson que, por sua vez, teve suas origens em uma linguagem relativamente antiga, BCPL, 
desenvolvida por Martin Richards. 
 
Embora muitas características de "C" sejam comuns com BCPL, "C" não é um dialeto desta última 
linguagem. 
 
 
 
 
II II II II ���� OBJETIVOS OBJETIVOS OBJETIVOS OBJETIVOS 
 
C é uma linguagem de propósito geral. Mesmo tendo sido criada com o objetivo de ser uma 
linguagem de programação de sistemas operacionais e utilitários, pelas suas facilidades de acesso a nível 
de máquina e eficiência do código gerado, "C" também é bastante útil para escrever um grande número de 
aplicações numéricas, de processamento de texto e de programas para banco de dados. 
 
Este livro aborda os conceitos básicos da Linguagem, tratando o programa em C++ em módulos, 
desde uma aplicação simples como uma soma de dois números até uma aplicação complexa na realização 
de um sistema de criptografia assimétrica. 
 
O foco principal deste documento são alunos universitários, e para isso o livro aborda a ementa de 
duas (ou três) disciplinas básicas do curso de Ciência da Computação: Algoritmos, Linguagem de 
Programação e ainda Estrutura de Dados. 
 
Em Estrutura de Dados são apresentadas as principais estruturas como: Cadeia de Caracteres, 
Listas, Filas, Pilhas, Deques e ainda Árvores, com o intuito de preparar o aluno para uma outra disciplina da 
grade de Ciência da Computação: grafos. 
 
O livro fecha com quatro projetos práticos: 
 
criptografia simétrica - criação e editão de arquivos texto com técnica criptográfica sem 
senha privada, 
 
criptografia assimétrica - incluindo senha privada além da senha pública já presente no 
projeto anterior), 
 
agenda - com as principais funções de uma agenda telefônica básica e 
 
locadora - com variações para Cd, VHS e DVD permitindo inclusão, alteração, exclusão, 
consulta, listagem, relatório, etc. 
 
- 4 - 
 
 
III III III III ���� O AMBIENTE O AMBIENTE O AMBIENTE O AMBIENTE DevDevDevDev C C C C++++++++ 
 
 
O ambiente Dev C++ integra os recursos de um compilador com um editor de textos, através da 
seleção de opções em um ambiente windows com menus e ferramentas específicas para a linguagem. 
 
 
 
 
Figura 1 – Ambiente Dev C++ 
 
 
 
À medida que os recursos da linguagem forem utilizados, e os recursos da plataforma DEV C++ 
forem necessários, estes serão citados e explicados paulatinamente. 
 
Boa parte das funções e comandos usados neste livro, com foco na plataforma DEV C++, também 
são compatíveis com outros compiladores da linguagem C, como o Turbo C++ da Borland, que até pouco 
tempo atrás ainda era o compilador mais usado nas universidades com o foco acadêmico e introdutório nas 
linguagens de programação. 
 
- 5 - 
 
 
IIIIV V V V ���� BIBLIOTECAS BIBLIOTECAS BIBLIOTECAS BIBLIOTECAS 
 
 
A linguagem C é por natureza própria uma linguagem estruturada. A maior parte de seus recursos é 
conseguida via utilização de funções. Assim sendo, a linguagem possui uma coleção de bibliotecas que 
podem ser usadas a qualquer momento. 
 
Uma biblioteca é o conjunto de rotinas prontas para serem usadas pelo programador. Abaixo, são 
apresentadas algumas das bibliotecas existentes na Linguagem C e sua rápida descrição: 
 
stdio.h 
Esta biblioteca é a mais utilizada na programação em C, pois é a biblioteca padrão (std) de entrada 
(i) e saída (o) de dados. É nela que estão todas as funções de entrada e saída de dados da linguagem, 
como: scanf(), printf(), getchar(), puts(), gets() entre outras que serão apresentadas nos próximos capítulos. 
 
conio.h 
Esta biblioteca possui as rotinas de console de entrada e saída no Ms-DOS, e ainda as funções de 
ambiente clrscr(), gotoxy(), getche() entre outras. No DEV C++ algumas destas funções estão alocadas em 
uma variação da biblioteca conio, chamada conio.c 
 
math.h 
Esta biblioteca possui as rotinas do pacote matemático. 
 
dos.h 
Esta biblioteca possui as rotinas de tratamento do Ms-DOS e dos processadores da família Intel: x86. 
Alguns compiladores tem dificuldade em trabalhar com recursos do DOS, impossibilitando o uso desta 
biblioteca. 
 
graphic.h 
Esta biblioteca possui as rotinas do pacote gráfico 
 
string.h 
Esta biblioteca possui as rotinas de tratamento de memória e strings. 
 
Etc... 
 
Para poder fazer uso deste recurso é necessário o uso de uma diretiva (#include), que deve ser 
colocada antes da declaração da função main(). Desta forma, sua sintaxe corresponde a: 
 
#instrução <biblioteca> 
 
Onde instrução é uma palavra reservada (include entre outras) e biblioteca é uma ou mais das 
bibliotecas citadas acima. 
 
Uma diretiva caracteriza-se na linguagem C, por ser uma instrução precedida do caractere tralha "#", 
que deverá ser sempre escrito na primeira coluna. A instrução, após o símbolo tralha, é uma palavra 
reserva do pré-processador. 
 
O pré-processador é um programa que checa o programa-fonte escrito em linguagem C e efetua no 
programa-fonte, modificações. O pré-processador recebe este nome pelo fato de ser o primeiro programa a 
ser executado em um processo de compilação, fazendo com que o programa-fonte seja alterado, na forma 
de texto, antes deser propriamente compilado. 
 
Uma biblioteca poderá ser escrita como: #include <stdio.h> ou #include “stdio.h” substituindo os 
sinais de menor (<) e maior (>) por aspas (“) e vice-versa. 
 
- 6 - 
 
 
V V V V ����TIPOTIPOTIPOTIPOS DE DADOSS DE DADOSS DE DADOSS DE DADOS 
 
Para se desenvolver um programa que seja executável dentro de um computador, é necessário ter 
em mente que o trabalho de gerenciamento de dados ocorre em três níveis: 
 
1. A entrada dos dados; 
2. O processamento dos dados; 
3. A saída de dados. 
 
O objetivo principal de qualquer computador é a manipulação de dados, que são representados por 
elementos em estado primário. 
Ao agregar valores à esses dados, são criadas as informações, que ao serem estruturadas de 
forma organizada e com algum significado, tem por objetivo gerar algum conhecimento. 
 
� Os computadores servem para armazenar informações e programas para sua manipulação. 
Sendo assim, um programador consciente não pode ignorar a importância dos dados e 
como eles devem ser estruturados. 
� Como exemplo padrão da estruturação de dados e informações pode ser citada a lista 
telefônica , que por ser ordenada alfabeticamente, torna razoavelmente simples e rápido o 
acesso a um determinado número de telefone de um assinante. 
 
Os dados então são representados pelas informações a serem processadas por um computador. A 
linguagem C fornece ao programador um conjunto de tipos de dados predefinidos, podendo ser dos tipos: 
numéricos, caracteres e lógicos (“camuflados” por 0 e 1). 
 
5.1. Tipos de dados inteiros 
 
São caracterizados tipos inteiros os dados numéricos positivos ou negativos, excluindo-se destes 
qualquer número fracionário. Em C, este tipo de dado pode ser referenciado por um dos seguintes 
identificadores: 
 
int de -32.768 a 32.767 
long de -2.147.483.648 até 2.147.483.647 
unsigned int de 0 até 65.535 
 
5.2 Tipos de dados reais 
 
São caracterizados tipos reais os dados numéricos positivos, negativos e números fracionários e 
também os inteiros. Em C, este tipo de dado pode ser referenciado por um dos seguintes identificadores: 
 
float de 3.4 E -38 até 3.4 E+38 
double de 1.7 E -308 até 1.7 E+308 
 
Este tipo de dado real permite trabalhar com uma representação de valores em ponto flutuante que 
consiste em uma mantissa (parte fracionária). 
 
5.3 Tipos de dados caracteres 
 
São caracterizadas tipos caracteres as seqüências contendo letras, números e símbolos especiais. 
Uma seqüência de caracteres deve ser representada na linguagem C entre aspas ( " " ). Este tipo de dado 
é referenciado pelo identificador char, podendo armazenar de 0 até 255 caracteres. 
 
5.4 Tipos de dados lógicos 
 
Na linguagem C, não existe um tipo de dado lógico ou booleano propriamente dito, ou seja, não 
existirão os valores lógicos Falso ou Verdadeiro para um determinado tipo de dado. Nesta linguagem, 
qualquer valor igual a zero 0, é considerado um valor lógico falso, e qualquer valor diferente de zero (que 
será representado pelo número 1 inteiro) será considerado um valor lógico verdadeiro. 
 
- 7 - 
 
 
VI VI VI VI ����DOCUMENTAÇÃODOCUMENTAÇÃODOCUMENTAÇÃODOCUMENTAÇÃO 
Desenvolvendo CDesenvolvendo CDesenvolvendo CDesenvolvendo Comentáriosomentáriosomentáriosomentários 
 
 
O uso de comentários é de extrema importância para o programador, pois tem a finalidade de 
documentar o programa, deixando-o mais claro e fácil de ser compreendido, alterado ou corrigido. 
 
Existem dois tipos de comentários: 
 
� comentário do prólogo e 
 
� comentários intercalares 
 
 
6.1 Comentário do Prólogo 
 
 É colocado antes da lógica de programação e é constituído por quatro etapas: 
 
1ª- Definição do programa 
 Ex: // Programa Soma entre 2 números 
 
2ª- Nome do autor e datas de criação e última alteração do programa 
 Ex: // Fulano de Tal em: 04/04/1989; Ultima Alteração: 12/03/2008 
 
3ª- Declarações das variáveis novas ou desconhecidas usadas no programa 
 Ex: // N1 e N2 = Números digitados pelo usuário; S = Soma encontrada 
 
4ª- Funcionalidade do Programa 
 Ex: // O usuário digita 2 números e tem como resposta a soma entre eles. 
 
 
 
6.2 Comentários Intercalares 
 
 Servem para comentar, de maneira breve, funções ou comandos novos ou desconhecidos para o 
programador. 
 
Obs. 1: A especificação de comentários em Linguagem C++ é identificada pelo uso de duas barras em 
seqüência: // 
 
Obs. 2: Quando em um comentário são utilizadas mais de uma linha, também é possível delimitá-lo com o 
uso de /* no inicio da primeira linha e */ no final da última linha. 
 
 
/* Programa Soma entre 2 números 
 
 Fulano de Tal em: 04/04/1989; Ultima Alteração: 03/03/2008 
 
 N1 e N2 = Números digitados pelo usuário; S = Soma encontrada 
 
 O usuário digita 2 números e tem como resposta a soma entre eles. */ 
 
- 8 - 
 
 
VII VII VII VII ����A FUNÇÃO PRINCIPAL A FUNÇÃO PRINCIPAL A FUNÇÃO PRINCIPAL A FUNÇÃO PRINCIPAL 
 
 Todo e qualquer programa em C é constituído de no mínimo uma função, tendo assim a 
possibilidade de se construir programas modulares ou estruturados. 
 
main( ) Primeira, e principal função do C. 
 
A função main( ) é a principal instrução a ser considerada em um programa escrito na linguagem C, 
ou seja, esta função deverá estar presente em algum lugar do programa, pois é ela que marca o ponto de 
inicialização do processo de execução do programa. É apresentado a seguir, o modelo da forma geral de 
escrita de um programa em C, com a definição e comentário de cada um dos elementos básicos do 
programa. 
 
 
[<definições de pré-processamento>] 
[<declaração das variáveis globais>] 
main() 
 { 
/* 
Este trecho é reservado para o corpo da função, com a declaração de suas variáveis locais, seus 
comandos e funções de trabalho. 
* / 
 } 
Toda informação situada entre [ ] indica informações que poderão ou não estar presentes em um 
programa. Já qualquer informação entre < > caracteriza-se por ser obrigatória. Os símbolos ( ) indicam 
início e fim da rotina. 
 
Todas as informações escritas entre os delimitadores /* e */ são comentários para documentação 
do programa e não são compiladas quando da execução do programa pelo compilador. 
 
Normalmente, um programa em C é iniciado com as definições de pré-processamento e com a 
declaração das variáveis globais, lembrando que estas variáveis poderão ser usadas em qualquer parte do 
programa, seguidas da declaração de todas as funções a serem utilizadas no programa. 
 
As funções em C são formadas inicialmente pela declaração de seu tipo, informação esta opcional, 
e de seu nome seguida da lista de parâmetros entre parênteses a ser utilizada pela mesma. A lista de 
parâmetro poderá estar vazia, sendo que a finalidade de um parâmetro é servir como um ponto de 
comunicação bidirecional entre as várias funções de um programa. 
 
 
 
VIVIVIVIIIIII I I I ����DELIMITADORES DE BLOCODELIMITADORES DE BLOCODELIMITADORES DE BLOCODELIMITADORES DE BLOCO 
 
 
Delimitam toda a lógica de programação escrita pelo programador. 
 São representados (em C++) por { e } conforme observado na sintaxe abaixo: 
 
/* ...Comentário do Prólogo... */ 
Bibliotecas; 
main() 
 { 
 - - - - - - - - - 
 - - - - - - - - - 
 - - - - - - - - - 
 } 
 
- 9 - 
 
 
IIIIXXXX ����VARIÁVEIS VARIÁVEIS VARIÁVEIS VARIÁVEIS 
 
 
 Variável, no sentido de programação, é uma região previamente identificada e que tem por 
finalidade armazenar as informações (dados) de um programa temporariamente. Uma variável armazena 
apenas um valor por vez. Sendo considerado como valor o conteúdo de uma variável, desta forma, um 
valor está relacionado ao tipo de dado de uma variável, podendo ser numérico, lógico ou caractere. 
 
O nome de uma variável é utilizado para sua identificação e posterior uso dentro de um programa, 
sendo assim é necessário se estabelecer algumas regras de utilização das mesmas: 
 
� Nomes de uma variávelpoderão ser atribuídos com um ou mais caracteres; 
� O primeiro caractere do nome de uma variável não poderá ser em hipótese alguma um número, sempre 
deverá ser uma letra; 
� O nome de uma variável não poderá possuir espaços em branco; 
� Não poderá ser nome de uma variável uma palavra reservada a uma instrução ou identificador de uma 
linguagem de programação; 
� Não poderão ser utilizados outros caracteres a não ser letras e números, com exceção do caractere 
underscore "_", que poderá ser utilizado para simular a separação entre duas palavras, como: 
MEDIA_ESCOLAR. 
 
Na linguagem C, os 32 primeiros caracteres de um nome de variável são significativos, porém, se o 
sistema operacional em uso é o MS-DOS, somente serão considerados os primeiros 8 caracteres. Este 
fator limita um pouco o uso das variáveis. 
 
 
� Outro detalhe a ser considerado na linguagem C é o fato de haver diferença entre caracteres 
maiúsculos e minúsculos. Sendo assim as variáveis: NOME, nome e Nome, são diferentes. 
 
Todo dado a ser armazenado na memória de um computador através de uma variável utilizando-se a 
linguagem C deve ser previamente declarado, ou seja, primeiro é necessário saber qual o seu tipo para 
depois fazer o seu armazenamento. Estando armazenado o dado, este poderá ser utilizado e manipulado a 
qualquer momento, durante a execução do programa. 
 
Pelo fato de a linguagem C obrigar o programador a trabalhar de forma estruturada e ser baseada no 
uso de funções, as variáveis podem assumir dois estados de comportamento (global e local). 
 
Uma variável é considerada Global quando é declarada no inicio de um programa escrito em C, 
precisamente antes da função main ( ), que será estuda a seguir, podendo este tipo de variável ser 
utilizado por qualquer parte do programa. 
 
Uma variável é considerada Local quando é declarada apenas dentro de uma função e é somente 
válida dentro do limite de abrangência da referida função. Desta forma, as demais rotinas não poderão 
fazer uso daquelas variáveis como Global, pois não visualizam a existência das mesmas. 
 
Todo programa tem a obrigatoriedade de declarar (antes da lógica) todas as variáveis que serão 
utilizadas, pois estas só poderão receber valores após tal declaração, que ocorre de acordo com a seguinte 
sintaxe: 
 
tipo_de_dado NOME_DA_VARIAVEL ; 
 
Ex: int IDADE; 
 float N1 , N2 , S ; 
 
 
- 10 - 
 
 
9.1 Constantes 
 
 Tem-se como definição de constante tudo aquilo que é fixo ou estável, e existirão vários momentos 
em que este conceito deverá estar em uso. Ao operar com variáveis correspondentes a valores constantes 
ou fórmulas, deve-se utilizar o símbolo “=“ que significa uma atribuição. Por exemplo, o valor 4.12 da 
fórmula a seguir é uma constante e está sendo atribuído à variável INSS: 
 
INSS = SAL * 4.12. 
 
 
9.2 Operadores Aritméticos 
 
Tanto variáveis como constantes poderão ser utilizadas na elaboração de cálculos matemáticos 
com a utilização de operadores aritméticos. Os operadores aritméticos são classificados em duas 
categorias, sendo binários ou unários. São binários quando atuam em operações de: exponenciação, 
multiplicação, divisão, adição e subtração. São unários quando atuam na inversão de um valor atribuindo a 
este o sinal positivo ou negativo. 
 
 
 
X X X X ����FUNÇÕES DE SAÍDAFUNÇÕES DE SAÍDAFUNÇÕES DE SAÍDAFUNÇÕES DE SAÍDA 
 
São responsáveis pela saída de dados, ou seja: apresentação destes valores em qualquer 
programa, sendo obrigatório o uso dos parênteses para delimitar os dados apresentados. 
 
A primeira função de saída apresentada é a printf( ) que possibilita efetuar a saída de informações 
no vídeo, de acordo com a sintaxe: 
 
printf ("expressão de controle", lista de argumentos); 
 
 
A expressão de controle se caracteriza por conter códigos de formatação para o tipo de dado a ser 
processado, precedidos pelo sinal de percentagem %. 
 
 
 
 
Veja a seguir, a tabela com os códigos de formatação para a função printf( ). 
 
%c Permite que seja efetuada a escrita de apenas um caractere 
 
%d Permite que seja efetuada a escrita de números inteiros decimais 
 
%e Permite que seja efetuada a escrita de números em notação científica 
 
%f Permite que seja efetuada a escrita de números reais (ponto flutuante) 
 
%g Permite que seja efetuada a escrita de %e ou %f no formato mais curto 
 
%o Permite que seja efetuada a escrita de números octais 
 
%s Permite que seja efetuada a escrita de uma série de caracteres 
 
%u Permite que seja efetuada a escrita de um número decimal sem sinal 
 
%x Permite que seja efetuada a escrita de um número hexadecimal 
 
 
- 11 - 
 
 
A função printf ( ) pode usar além da expressão de controle e da lista de argumentos um conjunto de 
códigos especiais através do símbolo “\” com finalidade de efeito visual conforme apresentado abaixo: 
 
printf (“Clube do Remo \n Campeão Brasileiro Série C 2005”); 
 
O resultado desta operação na tela do computador seria: 
 
 Clube do Remo 
 Campeão Brasileiro Série C 2005 
 
A utilização destes códigos especiais tem a finalidade de auxiliar o programador na utilização de 
recursos não disponíveis no teclado. Estes códigos são apresentados a seguir: 
 
\n Cria uma linha nova a partir do ponto que é indicado 
 
\t Cria um espaço de tabulação do ponto que é indicado 
 
\b Executa um retrocesso de espaço do ponto que é indicado 
 
\” Apresenta o símbolo de aspas no ponto que é indicado 
 
\\ Apresenta o símbolo de barra no ponto que é indicado 
 
\f Adiciona um salto de página de formulário (impressora) 
 
\0 Gera um nulo 
 
 
XI XI XI XI ����FUNÇÕES DE ENTRADA FUNÇÕES DE ENTRADA FUNÇÕES DE ENTRADA FUNÇÕES DE ENTRADA 
 
 São responsáveis pela inserção de dados em um programa, ou seja, tudo que tiver de ser digitado 
pelo usuário deverá usar uma função de entrada. 
 Também é obrigatório o uso dos parênteses para delimitar os dados digitados e obedece a seguinte 
sintaxe: 
 
A primeira função de saída apresentada é a função scanf( ) , que possibilita efetuar entrada de 
dados via teclado. 
 
 
A sintaxe desta função se caracteriza por ser uma expressão de controle seguida de uma lista de 
argumentos separados por virgula, sendo que seus argumentos são endereços de variáveis. 
 
scanf ("expressão de controle", lista de argumentos); 
 
A expressão de controle se caracteriza por conter códigos de formatação para o tipo de dado a ser 
processado, precedidos pelo sinal de percentagem %. 
 
 
Veja a seguir, a tabela com os códigos de formatação para a função scanf( ). 
 
%c Permite que seja efetuada a leitura de apenas um caractere 
%d Permite que seja efetuada a leitura de números inteiros decimais 
%e Permite que seja efetuada a leitura de números em notação científica 
%f Permite que seja efetuada a leitura de números reais (ponto flutuante) 
%l Permite que seja efetuada a leitura de um número inteiro longo 
%o Permite que seja efetuada a leitura de números octais 
%s Permite que seja efetuada a leitura de uma série de caracteres 
%u Permite que seja efetuada a leitura de um número decimal sem sinal 
%x Permite que seja efetuada a leitura de um número hexadecimal 
 
- 12 - 
 
A lista de argumentos se caracteriza por ser a indicação dos endereços das variáveis em uso, 
através do operador de endereço &, que possibilita retomar o conteúdo da variável. Caso não seja usado o 
operador de endereço &, será retornado o endereço de memória em que se encontra a variável. 
 
 
O Primeiro Programa em C 
 
Para colocar em prática o que foi explicado até este momento, considere o seguinte exemplo: 
 
/* Programa Nome 
 Autor: Fulano de Tal Dt_Cri: 22/08/1986 Dt_Ult_Alt: 12/03/2008 
 Sem Variáveis 
 O usuário simplesmente é apresentado ao autor do programa */ 
 
#include <stdio.h> 
#include <conio.h> 
 
main ( ) // Primeira função do programa em C 
 { // Corresponde ao "Inicio" do Algoritmo 
 printf ( "Programa desenvolvidopor \n Fulano de Tal" ); 
 // Corresponde ao "escreva" do algoritmo 
 getch ( ); // Espera ser pressionada qualquer tecla p/ continuar 
 } // Corresponde ao "fim" do algoritmo 
 
 
Edite o programa acima, compile-o e verifique a funcionalidade de seu arquivo executável. 
 
 
Considere agora o seguinte exemplo de algoritmo: "Deverá ser desenvolvido um programa que 
efetue a leitura de dois valores numéricos. Faça a operação de adição entre os dois valores e apresente o 
resultado obtido". 
 
Com relação ao problema da leitura dos dois valores (que não conhecemos e também não 
precisamos conhecer, pois utilizaremos duas variáveis para trabalhar estas incógnitas N1 e N2) e a sua 
respectiva adição (conseqüência dos valores informados, a qual também é uma incógnita e dependendo 
dos valores fornecidos, utilizaremos para esta a variável S). 
 
 
Assim sendo, o programa em questão deverá obedecer a seguinte ordenação: 
 
Algoritmo Literal: 
1. Ler um valor para a variável N1; 
2. Ler outro valor para a variável N2; 
3. Efetuar a adição das variáveis N1 e N2, implicando o seu resultado na variável S; 
4. Apresentar o valor da variável S após a operação de soma dos dois valores fornecidos. 
 
Observe que temos neste exemplo, as três fases de trabalho de um programa: a fase de entrada 
retratada nos passos 1 e 2, o processamento retratado no passo 3 e por fim a saída retratada no passo 4. 
 
Completada a fase de interpretação do problema e da definição das variáveis a serem utilizadas, 
através de um algoritmo, passa-se para a fase de diagramação. 
 
Tendo estabelecido os passos anteriores, será efetuada a codificação do programa. Desta forma, 
são utilizadas no exemplo, três variáveis: N1, N2 e S (que neste caso estão no estado de variáveis locais), 
sendo que estas deverão ser declaradas segundo o seu tipo, no caso como inteiras. 
 
/* Programa Soma entre 2 números 
 Fulano de Tal em: 04/04/1989; Ultima Alteração: 03/03/2008 
 N1 e N2 = Números digitados pelo usuário; S = Soma encontrada 
 O usuário digita 2 números e tem como resposta a soma entre eles. */ 
 
 
- 13 - 
 
main( ) 
{ 
int N1; 
int N2; 
int S; 
 
Tendo relacionado as variáveis que serão utilizadas no programa, bem como os seus respectivos 
tipos, passa-se para a fase de montagem do programa propriamente dito. 
 
As variáveis poderiam ser também relacionadas em uma única linha: 
int N1, N2, S; 
 
Observe que o bloco de instruções entre “{“ e “}” está deslocado um pouco para a direita. Este estilo 
de escrita deve ser obedecido, para facilitar a leitura de um bloco de programa, recebendo o nome de 
identação. 
 
Apesar de a informação escrita entre os delimitadores /* e */ não ser processada, é adequado 
sempre identificar um programa com um nome que deve vir no comentário de prólogo. 
 
scanf ("%d", &N1); 
scanf ("%d", &N2); 
S = N1 + N2; 
printf ("%d", S); 
} 
 
Após a leitura dos valores para as variáveis N1 e N2 com a função scanf ( ), estes serão adicionados e 
implicados na variável S, a qual será apresentada com o valor da adição processada através da função 
printf ( ). 
 
Note que as instruções utilizadas dentro da função main( ) são precedidas de ponto e virgula, indicando 
desta forma o fim da instrução naquela linha. 
 
A seguir, é apresentado o programa completo: 
 
/* Programa Soma entre 2 números 
 Fulano de Tal em: 04/04/1989; Ultima Alteração: 03/03/2008 
 N1 e N2 = Números digitados pelo usuário; S = Soma encontrada 
 O usuário digita 2 números e tem como resposta a soma entre eles. */ 
 
#include <stdio.h> 
#include <conio.h> 
 
main ( ) // Primeira função do programa em C 
 
 { // Corresponde ao "Inicio" do Algoritmo 
 
 int N1,N2,S; // Declaração das variáveis como inteiras 
 
 printf ("Informe 1º numero: "); // Corresponde ao "escreva" do Algoritmo 
 scanf ("%d", &N1); // Corresponde ao "leia" do Algoritmo 
 
 printf ("Informe 2º numero: "); 
 scanf ("%d", &N2); 
 
 S = N1 + N2; 
 
 printf ("\n A Soma é igual a %d", S); 
 
 getch ( ); // Espera ser press. qq tecla p/ prosseguir 
 
 } 
 
- 14 - 
 
 
Edite o programa acima, compile-o e verifique a funcionalidade de seu arquivo executável. 
 
Como terceiro exemplo, desenvolva um programa que efetue o cálculo do salário liquido de um 
profissional que trabalhe por hora. 
 
Para fazer este programa você deverá possuir alguns dados, tais como: valor da hora de trabalho, 
número de horas trabalhadas no mês e o percentual de desconto do INSS. 
 
O programa em questão deverá apresentar o valor do salário bruto, o valor descontado e o valor do 
salário liquido. 
 
Algoritmo Literal 
1. Estabelecer a leitura da variável HT (horas trabalhadas no mês); 
2. Estabelecer a leitura da variável VH (valor hora trabalhada); 
3. Estabelecer a leitura da variável PD (percentual de desconto); 
4. Calcular o salário bruto (SB), sendo este a multiplicação das variáveis HT e VH; 
5. Calcular o total de desconto (TD) com base no valor de PD dividido por 100; 
6. Calcular o salário liquido (SL), subtraindo o desconto do salário bruto; 
7. Apresentar os valores dos salários bruto e liquido: SB, TD e SL. 
 
A seguir, é apresentado o programa completo: 
 
/* Programa Calculo de Salário 
 Fulano de Tal em: 05/04/1989; Ultima Alteração: 03/03/2008 
 HT horas trabalhadas no mês, VH valor da hora trabalhada , PD percentual de desconto , 
SB Salário Bruto, D Desconto e SL Salário liquido 
 O usuário digita HT, VH e PD e tem SB, TD e SL. */ 
 
include <stdio.h> 
include <conio.h> 
main( ) 
{ 
float HT, VH, PD, D, SB, SL; 
 
printf ("Informe numero de horas trabalhadas no mês: "); 
scanf ("%f", &HT); 
 
printf ("Informe valor da hora trabalhada: "); 
scanf ("%f", &VH); 
 
printf ("Informe percentual de desconto: "); 
scanf ("%f", &PD); 
 
SB = HT * VH; 
D = (PD/100) * SB; 
SL = SB - D; 
 
printf ("Salário Bruto............: %7.2f \ n ”, SB); 
printf ("Desconto..................: %7.2f \ n ”, D); 
printf ("Salário liquido..........: %7.2f \ n ”, SL); 
 
 getch( ); 
} 
 
Note que no exemplo de cálculo de salários estão sendo colocados junto ao código da expressão de 
controle dois valores separados por ponto: %7.2f. O valor numérico 7 indica que será estabelecido um 
campo para a parte do valor inteiro com a capacidade de apresentar tabulados valores até 9999, pois o 
valor 2 depois do ponto indica que serão utilizadas apenas duas casas decimais para valores com ponto 
flutuante, utilizando três espaços dos sete espaços separados. 
 
- 15 - 
 
 
ExercícioExercícioExercícioExercícioSSSS 
 
 
1) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para encontrar a média 
escolar de uma disciplina que trabalha com a seguinte fórmula: duas provas valendo 10 pontos sendo que 
a primeira tem peso 4 e a segunda tem peso 6. O usuário deverá digitar somente as 2 notas e deverá ser 
apresentada à ele a média encontrada. 
 
 
2) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para encontrar o delta de 
uma equação do 2º grau. A fórmula geral de equações do 2º grau é a seguinte: Ax2 + Bx + C = 0 e a do 
Delta é: B2 - 4AC . O usuário deverá digitar os coeficientes A, B e C respectivamente e lhe será 
apresentado o valor do delta. 
 
 
3) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para que um usuário, 
informando a distância entre dois pontos e o tempo gasto no percurso, tenha como resposta a velocidade 
obtida no trajeto. Lembre-se que V = S/T. Adotar as unidades: km para a distância e hora para o tempo. 
 
 
4) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para efetuar o cálculo da 
quantidade de litros de combustível gastas em uma viagem, utilizando-se um automóvel que faz 12 Km por 
litro. Para obter o cálculo, o usuário deverá fornecer o tempo gasto na viagem e a velocidade média durantea mesma. Desta forma, será possível obter a distância percorrida com a fórmula DISTANCIA = TEMPO * 
VELOCIDADE. Tendo o valor da distância, basta calcular a quantidade de litros de combustível utilizada na 
viagem com a fórmula: LITROS_USADOS = DISTANCIA / 12. O programa deverá apresentar os valores da 
velocidade média, tempo gasto, a distância percorrida e a quantidade de litros utilizada na viagem. 
 
 
5) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para ler uma temperatura 
em graus Centígrados e apresentá-la convertida em graus Fahrenheit. A fórmula de conversão é: F = (9 * C 
+ 160) / 5, onde F é a temperatura em Fahrenheit e C é a temperatura em Centígrados. 
 
 
6) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para ler uma temperatura 
em graus Fahrenheit e apresentá-la convertida em graus Centígrados. A fórmula de conversão é: C = (F - 
32) * 5/9, onde F é a temperatura em Fahrenheit e C é a temperatura em Centígrados. 
 
 
7) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para calcular e apresentar o 
valor do volume de uma lata de óleo, utilizando a fórmula: VOLUME = 3.14159 * R2 * ALTURA. 
 
- 16 - 
 
 
XIIXIIXIIXII ���� ESTRUTURASESTRUTURASESTRUTURASESTRUTURAS DE DECISÕESDE DECISÕESDE DECISÕESDE DECISÕES 
 
12.1 - Seqüência Simples: 
 
É considerada linguagem em Seqüência Simples, todo programa que contém comandos escritos e 
executados de forma linear, ou seja: de cima para baixo, sem desvios, de acordo com a seguinte sintaxe: 
 
/* ...Comentário do Prólogo... */ 
bibliotecas; 
main() 
 { 
 Ação 1; 
 Ação 2; 
 Ação N; 
 } 
 
Ex.: 
 
/* Programa Soma entre 2 números reais 
 Fulano de Tal em: 04/04/1989; Ultima Alteração: 02/04/2008 
 N1 e N2 = Números digitados pelo usuário; S = Soma encontrada 
 O usuário digita 2 números e tem como resposta a soma entre eles. */ 
#include <stdio.h> 
#include <conio.h> 
main ( ) 
 { 
 float N1,N2,S; 
 printf ("Informe 1º numero: "); scanf ("%f", &N1); 
 printf ("Informe 2º numero: "); scanf ("%f", &N2); 
 S = N1 + N2; 
 printf ("\n A Soma é igual a %f", S); 
 getch ( ); 
 } 
 
12.2 - Seqüências Alternativas 
 
12.2.1 - Seqüências Alternativas Simples: if 
 
São estruturas compostas por desvios em sua formação, ou seja: não são executadas 
necessariamente de maneira linear, pois existem blocos de instruções que podem ser saltados (ignorados) 
dentro do corpo do programa. 
 
Neste tipo de estrutura uma condição é analisada e caso o valor lógico desta condição seja 
verdadeiro, um determinado bloco de ações (B) é executado. Caso o valor lógico da condição seja falso, 
este bloco de ações (B) é ignorado, podendo ocorrer então um desvio na seqüência de comandos. 
 
A sintaxe das estruturas com alternativa simples é a seguinte: 
 
/* ...Comentário do Prólogo... */ 
bibliotecas; 
main() 
 { 
 Ações A; 
 if (CONDIÇÃO) 
 { 
Ações B; 
 } 
 Ações C; 
 } 
 
- 17 - 
 
Obs.1: Utiliza-se { e } para delimitar blocos internos de um desvio com mais de um comando em 
sua formação. 
 
Obs.2: O uso dos parênteses ( ) é obrigatório para delimitar as condições. 
 
Obs.2: Ao utilizar estruturas alternativas, é aconselhável o uso da identação. Entende-se por 
identação, como sendo a organização estética dos blocos de comandos ou ações existentes no programa. 
 
Para exemplificar a estrutura, considere o seguinte problema: "Ler dois valores numéricos, e mostra-
los em ordem crescente”. Ou seja, poderá haver uma troca entre variáveis. 
 
Algoritmo 
 
1. Conhecer dois valores inteiros e incógnitos ( estabelecer variáveis A e B ); 
2. Verificar se o valor de A é maior que de B; 
 a. Se for verdadeiro, efetuar a troca (*) de valores entre as variáveis; 
b. Se for falso, pedir para executar o que esta estabelecido no passo 3; 
3. Apresentar os valores das duas variáveis 
 
 
(*) Para efetuar a troca, foi necessário usar uma terceira variável, no caso, X (por exemplo), de forma 
que X seja igual ao valor de A, liberando A para receber o valor de B deixando B livre para receber o valor 
que está em X, que anteriormente constava o conteúdo de A. 
 
Programa 
 
/* Programa Ordenação entre 2 números inteiros 
 Fulano de Tal em: 04/04/1989; Ultima Alteração: 02/04/2008 
 A e B = Números digitados pelo usuário; X = Variável auxiliar 
 O usuário digita 2 números e tem como resposta ambos ordenados. */ 
 
#include <stdio.h> 
#include <conio.h> 
main( ) 
 { 
int A, B, X; 
printf ("Informe um valor para a variável A:”); scanf (“%d”, &A); 
printf ("Informe um valor para a variável B:”); scanf (“%d”, &B); 
if (A > B) 
 { 
 X = A; 
 A = B; 
 B = X; 
 } 
printf("\n Os valores ordenados são: %d e %d", A, B); 
 getch( ); 
 } 
 
Note a utilização das chaves { e } após a utilização da instrução if. Isto se fez necessário, pois a 
troca de valores é conseguida com a execução de três operações, sendo que estas três operações devem 
acontecer quando a condição for Verdadeira. Sendo a condição Falsa, serão apresentados os valores como 
entrados, uma vez que já estão em ordem. 
 
Observe a linha: 
printf ("\n Os valores ordenados são: %d e %d", A, B); 
 
note que a colocação do código %d dentro da mensagem indica o local de posicionamento do valor 
da variável. 
 
 
- 18 - 
 
Operadores Relacionais 
 
No exemplo anterior, foi utilizado o sinal de > (maior que) para verificar o estado da variável quanto 
ao seu valor, ou seja, a sua condição. Sendo assim, uma condição também poderá ser verificada como: 
diferente, igual, menor que, maior ou igual a que e menor ou igual a que. Estas verificações são efetuadas 
com a utilização dos chamados operadores relacionais, conforme tabela abaixo: 
 
== Igual 
!= Diferente 
> Maior 
< Menor 
>= Maior ou Igual 
<= Menor ou Igual 
 
 
Obs. 
 Ao fazer uso do operador relacional "= =" que representa o valor de igualdade de uma comparação 
entre dois elementos, deve-se tomar o cuidado para não confundi-lo com o sinal "=", que na linguagem C é 
utilizado como símbolo de atribuição. Este erro é comum para quem utiliza outras linguagens de 
programação como Pascal, Visual Basic, Delphi, Quick Basic, pois a segunda forma é usada tanto para 
atribuição como para comparação. 
 
 
 
12.2.2 - Seqüências Alternativas Compostas: if ... else 
 
São estruturas compostas por desvios múltiplos em sua formação, onde um bloco de ações B é 
executado em caso de condição verdadeira e um bloco de ações C é executado em caso de condição falsa. 
 
A estrutura de formação para as seqüências alternativas compostas utiliza a seguinte sintaxe: 
 
/* ...Comentário do Prólogo... */ 
bibliotecas; 
main() 
 { 
 Ações A; 
 if (CONDIÇÃO) 
 { 
Ações B; 
 } 
 else 
 { 
Ações C; 
 } 
 Ações D; 
 } 
 
 
Para um exemplo da utilização desta estrutura considere o seguinte problema: 
 
"Ler dois valores numéricos, efetuar a adição. Caso o valor somado seja maior ou igual a 10, este 
deverá ser apresentado somando-se a ele mais 5. Caso o valor somado não seja maior ou igual a 10, este 
deverá ser apresentado subtraindo-se 7". 
 
Algoritmo 
1. Conhecer dois valores ( variáveis A e B ); 
2. Efetuar a soma dos valores A e B e implicar o valor da soma em X; 
3. Verificar se X é maior ou igual 10, caso sim mostre X+5, senão mostre X-7. 
 
- 19 - 
 
Programa 
 
/* Adiciona Números */ 
#include <stdio.h> 
#include <conio.h> 
main( ) 
 { 
int A, B, X; 
printf ("Informe um valor para a variável A: "); scanf ("%d", &A); 
printf ("Informe um valor para a variável B: "); scanf ("%d", &B); 
X = A + B; 
printf ("\n O resultado eqüivale a: "); 
if (X >= 10) 
 printf ("%d", X+5); 
else 
 printf ("%d", X-7); 
 getch( ); 
 } 
 
Observe que após a definição dos tipos de variáveis, é solicitada a leitura dos valores para as 
variáveis A e B, depois estes valores são implicados na variável X, que possui o resultadoda adição dos 
dois valores. É apresentada então a mensagem O resultado eqüivale a:, que não posicionará o cursor na 
próxima linha, desta forma qualquer que seja o resultado avaliado pela condição, será apresentado ao lado 
direito da mensagem. Em seguida a esta linha é verificado no programa, a condição que permitirá escrever 
o resultado da soma adicionado de 5, caso esta seja maior ou igual a 10. Não sendo, o programa 
apresentará o resultado subtraindo 7. 
 
 
Operadores ou Conectivos Lógicos 
 
Existem ocasiões onde é necessário trabalhar com o relacionamento de duas ou mais condições ao 
mesmo tempo na mesma instrução if, efetuando desta forma testes múltiplos. Para estes casos é 
necessário trabalhar com a utilização dos operadores lógicos, também conhecidos como operadores 
booleanos. 
 
Já foi comentado anteriormente que a linguagem C não faz uso de valores lógicos, tais como: 
Verdadeiro ou Falso, pelo fato de estes dois valores não existirem. Em uma expressão condicional ou no 
uso de operadores lógicos, será considerado como valor Verdadeiro o resultado da expressão que for não- 
zero (que será considerado para efeito de avaliação lógica o valor numérico um: 1). Sendo o resultado da 
expressão zero, esta será considerada como valor Falso. 
 
Os 3 operadores lógicos utilizados comumente na Linguagem C são: E, OU e NÃO. Em alguns 
casos, o uso de operadores lógicos evita a utilização de muitas instruções if encadeadas. 
 
 
Operador Lógico E: && 
 
O operador do tipo && é utilizado quando dois ou mais relacionamentos lógicos de uma 
determinada condição necessitam ser verdadeiros. Abaixo é apresentada a tabela verdade para este tipo 
de operador: 
 Condição 1 Condição 2 Resultado . 
0 (Falsa) 0 (Falsa) 0 (Falso) 
1 (Verdadeira) 0 (Falsa) 0 (Falso) 
0 (Falsa) 1 (Verdadeira) 0 (Falso) 
1 (Verdadeira) 1 (Verdadeira) 1 (Verdadeiro) 
 
O operador && faz com que somente seja executada uma determinada operação se todas as 
condições mencionadas forem simultaneamente verdadeiras, gerando assim um resultado lógico 
verdadeiro. 
 
- 20 - 
 
Operador Lógico OU: || 
 
O operador do tipo || é utilizado quando pelo menos um dos relacionamentos lógicos (quando 
houver mais de um relacionamento) de uma condição necessita ser verdadeiro. Abaixo é apresentada a 
tabela verdade para este tipo de operador: 
 
 Condição 1 Condição 2 Resultado . 
0 (Falsa) 0 (Falsa) 0 (Falso) 
1 (Verdadeira) 0 (Falsa) 1 (Verdadeiro) 
0 (Falsa) 1 (Verdadeira) 1 (Verdadeiro) 
1 (Verdadeira) 1 (Verdadeira) 1 (Verdadeiro) 
 
O operador | | faz com que seja executada uma determinada operação, se pelo menos uma das 
condições mencionadas gerar um resultado lógico verdadeiro. 
 
Operador Lógico NÃO: ! 
 
O operador do tipo ! é utilizado quando se necessita estabelecer que uma determinada condição 
deve não ser verdadeira ou deve não ser falsa. O operador ! se caracteriza por inverter o estado lógico de 
uma condição. Abaixo é apresentada a tabela verdade para este tipo de operador: 
 
Condição Resultado . 
1 (Verdadeira) 0 (Falso) 
0 (Falso) 1 (Verdadeira) 
 
O operador ! faz com que seja executada uma determinada operação, invertendo o resultado lógico 
da condição. 
 
 
12.2.3 - Seqüências Alternativas com Múltiplas Condições 
 
Esta estrutura é composta por múltiplas condições, onde cada uma pode conter um valor lógico 
diferente. Tais condições são analisadas individualmente e a elas são atribuídos valores lógicos individuais, 
que passam a ser operados com as tabelas verdade, encontrando assim um único valor lógico 
correspondente ao conjunto de condições citadas na operação. 
 
A estrutura de seqüências alternativas com múltiplas condições deve respeitar a seguinte sintaxe: 
 
/* ...Comentário do Prólogo... */ 
bibliotecas; 
main() 
 { 
 Ações A; 
 if (CONDIÇÃO1 conectivológico CONDIÇÃO2 conectivológico CONDIÇÃON) 
 { 
Ações B; 
 } 
 else 
 { 
Ações C; 
 } 
 Ações D; 
 } 
 
Para demonstrar a utilização de operadores lógicos, considere o seguinte problema (clássico): 
 
"Ler três valores para os lados de um triângulo, considerando lados como: A, B e C. 
 Verificar se os lados fornecidos formam realmente um triângulo. 
Se for esta condição verdadeira, deverá ser indicado qual tipo de triângulo foi formado: isósceles, 
escaleno ou equilátero". 
 
 
- 21 - 
 
Algoritmo 
 
Forma-se um triângulo quando A<B+C, quando B<A+C e quando C<A+B. Tendo certeza de que os 
valores informados para os três lados formam um triângulo, serão então analisados os valores para se 
estabelecer qual tipo de triângulo será formado: isósceles, escaleno ou equilátero. 
 
Um triângulo é equilátero quando possui todos os lados iguais, sendo A==B e B==C; 
é isósceles quando possui dois lados iguais, sendo A==B ou A==C ou B==C; 
é escaleno quando possui todos os lados diferentes, sendo A!=B e B!=C e A!=C 
 
1. Ler três valores para os lados de um triângulo: A, B e Q 
2. Verificar se cada lado é menor que a soma dos outros dois lados 
a. Se sim, saber se A= =B e se B= =C, sendo verdade o triângulo é equilátero 
b. Se não, verificar A= =B ou se A= =C ou se B= =C, sendo verdade o triângulo é 
isósceles, caso contrário o triângulo será escaleno; 
3. Caso os lados fornecidos não caracterizem um triângulo, avisar a ocorrência. 
 
Programa 
 
/* Programa Tipo de Triângulo */ 
#include<stdio.h> 
#include<conio.h> 
main( ) 
{ 
float A, B, C; 
printf("\t Programa Tipo de Triangulo \n\n"); 
printf("\n Informe o lado A: "); scanf("%f", &A); 
printf("\n Informe o lado B: "); scanf("%f", &B); 
printf("\n Informe o lado C: "); scanf("%f", &C); 
printf("\n"); 
if (A<B+C && B<A+C && C<A+B) 
 { 
if (A==B && B== C) 
printf("Triangulo Equilatero \n"); 
else 
 { 
if (A==B || A==C || C==B) 
printf("Triangulo Isosceles \n"); 
 else 
printf("Triangulo Escaleno \n"); 
 } 
 } 
else 
 printf("Os valores fornecidos nao formam um triangulo \n”); 
 getch( ); 
} 
 
O exemplo demonstra através da utilização dos operadores lógicos, a capacidade de um programa 
definir se determinados valores fornecidos formam realmente um triângulo, e se a condição for verdadeira, 
este programa indica o tipo de triângulo formado. 
 
Se forem fornecidos respectivamente os valores 8, 2 e 3 para os lados A, B e C, será apresentada a 
mensagem: "Os valores fornecidos não formam um triângulo", pois a primeira condição da instrução if 
(A<B+C && B<A+C && C<A+B) resulta o valor lógico falso, uma vez que 8 é maior que a soma de 2 com 3. 
 
Caso sejam fornecidos os valores 8, 8 e 2, a primeira instrução if será verdadeira, indicando que os 
lados fornecidos formam um triângulo. Apesar de o lado A ser igual ao lado B, mas este não ser igual ao 
lado C, o triângulo formado não é do tipo equilátero, desta forma a segunda instrução if tem seu resultado 
lógico como falso, sobrando a verificação da condição para a terceira instrução if que indica o triângulo 
como sendo do tipo isósceles, pois o lado A é igual ao lado B. 
 
- 22 - 
 
 
COMANDOS ESPECIAIS DE REFINAMENTO 
 
 
 A seguir são apresentados alguns comandos de controle de ambiente de tela que a linguagem C 
oferece ao seu programador. 
 
Para usá-los deve-se acrescentar a biblioteca conio.h no início do programa. 
 
No Dev C++, além da biblioteca conio.h ainda podem ser necessárias as bibliotecas conio.c e/ou 
conio2.h, caso estas estejam instaladas no pacote do compilador. 
 
 textcolor (); 
 
 � Usado para adotar cores em fontes no C ou para fazê-las piscar. 
 Ex.: textcolor (RED); // A cor do texto fica vermelha. 
 
 textbackground(); 
 
 � Usado para adotar cor de fundo nas fontes do C. 
 Ex.: textbackground (BLUE); // A cor do texto fica azul. 
 
getche(); 
 
� Tem a finalidade de interromper momentaneamente a execução de um programa em C. 
 
clrscr(); 
 
� Tem a função de limpar a tela, posicionando o cursor no canto superior esquerdoda tela. 
 
gotoxy(col,lin); 
 
� Tem a finalidade de direcionar uma instrução para uma determinada coluna e linha da tela. 
Ex.: gotoxy (30,10); // Posiciona a próxima instrução na coluna 30 e na linha 10 da tela. 
 
Obs. Para utilizar alguns destes comandos deve-se acrescentar a letra c no início da função que se deseja 
usar. Por exemplo: 
 
textcolor (RED); 
cprintf (“Esta mensagem aparecerá com a cor vermelha na tela”); 
 
 O compilador C também utiliza um vasto conjunto de funções aritméticas que facilitam o acesso aos 
cálculos matemáticos mais complexos. Para utilizar essas funções, deve-se declarar um outro arquivo 
cabeçalho com a biblioteca math.h. 
 
A seguir são apresentadas algumas destas funções: 
 
 cos (x) � retorna o co-seno da variável x. 
 
 sin (x) � retorna o seno da variável x. 
 
 exp (x) � retorna o valor de e elevado a x. 
 
 log (x) � calcula o logaritmo natural de x. 
 
 sqrt(x) � calcula a raiz quadrada do valor x. 
 
 Etc... 
 
 
- 23 - 
 
 
ExercícioExercícioExercícioExercíciossss 
 
1) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para que um usuário, 
informando a distância entre dois pontos e o tempo gasto no percurso, tenha como resposta a velocidade 
obtida no trajeto. Lembre-se que V = S/T. Adotar as unidades: km para a distância e hora para o tempo. O 
diferencial deste exercício, é que deverá ser retornando um aviso de multa caso a velocidade tenha 
ultrapassado o limite de 110km/h e uma mensagem de boa conduta em caso contrário. 
 
 
2) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para ler um número 
inteiro positivo e saber se este número é par ou ímpar. O resultado deve ser apresentado ao usuário do 
programa. 
 
 
3) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para Efetuar a leitura de 
três valores (variáveis A, B e C) e efetuar o cálculo da equação de segundo grau, apresentando as duas 
raízes, se para os valores informados for possível efetuar o referido cálculo. 
 
 
4) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para ler duas notas 
escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado se o valor da média 
escolar (média simples) for maior ou igual a 7. Se o valor da média for menor que 7, solicitar que seja 
informada uma nota de exame. Some então esta nota de exame com o valor da média anterior e encontre a 
nova média. Se esta nova média for maior ou igual a 5, apresentar uma mensagem dizendo que o aluno foi 
aprovado, caso contrário: reprovado. Apresentar junto com as mensagens o valor da média do aluno para 
qualquer condição. 
 
 
5) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para efetuar o controle de 
entrada de um cinema a partir da informação do valor do ingresso e ainda a idade do cliente. Se a idade 
for >= 65 ou a idade for < 12 o cliente paga apenas meia entrada, caso contrário paga inteira. 
 
 
6) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para que a partir da leitura 
de 3 valores, A, B e C, saber se estes valores formam ou não um triângulo. O resultado da pesquisa deve 
ser informado ao usuário do programa e caso os valores formem um triângulo, deverá ser mostrado ao 
usuário o tipo do triângulo formado. 
 
 
7) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para que a partir da 
informação da base e altura de um triângulo, seja encontrada e apresentada a área do mesmo, 
( A = ( B * H ) / 2 ). Refine o seu algoritmo, dando respostas específicas caso a base ou a altura sejam 
informadas como negativas ou zero. 
 
 
- 24 - 
 
 
XIXIXIXIIIIII I I I ���� LaçosLaçosLaçosLaços DE RepetiçõesDE RepetiçõesDE RepetiçõesDE Repetições 
 ((((ITERAÇÕES ITERAÇÕES ITERAÇÕES ITERAÇÕES –––– L L L Loopingsoopingsoopingsoopings ) ) ) ) 
 
Existem sistemas que tem necessidade de repetir um determinado trecho do programa algumas 
vezes. Isto pode ser conseguido de duas formas: a primeira, de forma “braçal”, com muito Crtl+C Ctrl+V, é 
escrito o mesmo trecho tantas vezes quanto necessário, um tanto trabalhoso e “sem classe” e a segunda 
forma, muito mais inteligente, utilizando o conceito de looping, que são conhecidos também por: laços, 
iterações ou repetições. 
 
Supondo um programa que deveria executar um determinado trecho de instruções por quatro 
vezes. Com o conhecimento adquirido até este momento você só poderia optar pela primeira forma, 
escrevendo o mesmo tantas vezes quanto for necessário, no caso quatro vezes. 
 
Por exemplo, imagine um programa que peça a leitura de dois valores para as variáveis A e B 
respectivamente. Efetue a adição de um com o outro, implicando o resultado na variável de resposta R e 
em seguida apresente o valor do resultado obtido, repetindo esta seqüência por quatro vezes. 
 
/* Programa soma de dois números 4 vezes sem looping 
 Autor: Fulano de tal Data: 04/04/1974 
 Var: A e B para os números somados e R para o resultado a soma. 
 Funcionalidade: o usuário informa 2 números e tem a soma entre eles por 4 vezes consecutivas 
 */ 
#include <stdio.h> 
#include <conio.h> 
main ( ) 
 { 
int A, B, R; 
 
printf (" \n\n Programa soma de 2 números por 4 vezes \n\n "); 
 
printf (" Entre com um valor para A: "); scanf("%d", &A); 
printf (" Entre com um valor para B: "); scanf("%d", &B); 
R = A + B; 
printf (" O resultado da soma é: %d \n\n\n ", R); 
 
printf (" Entre com um valor para A: "); scanf("%d", &A); 
printf (" Entre com um valor para B: "); scanf("%d", &B); 
R = A + B; 
printf (" O resultado da soma é: %d \n\n\n ", R); 
 
printf (" Entre com um valor para A: "); scanf("%d", &A); 
printf (" Entre com um valor para B: "); scanf("%d", &B); 
R = A + B; 
printf (" O resultado da soma é: %d \n\n\n ", R); 
 
printf (" Entre com um valor para A: "); scanf("%d", &A); 
printf (" Entre com um valor para B: "); scanf("%d", &B); 
R = A + B; 
printf (" O resultado da soma é: %d \n\n\n ", R); 
 
getch(); 
 } 
 
A vantagem em se utilizar looping é que o programa passa a ter um tamanho menor, podendo sua 
amplitude de processamento ser aumentada sem se alterar o tamanho do código de programação. Desta 
forma, podem-se determinar repetições com números variados de vezes; como veremos a seguir. 
 
- 25 - 
 
13.1 Iteração Enquanto - Looping com condição no início: while 
 
 Esta estrutura caracteriza-se por efetuar um teste lógico no inicio de um looping, verificando se é 
permitido executar o trecho de instruções subordinado a este. 
 
A estrutura while tem o seu funcionamento controlado por condição. Desta forma, poderá executar 
um determinado conjunto de instruções enquanto a condição verificada permanecer Verdadeira. No 
momento em que esta condição se torna Falsa, o processamento da rotina é desviado para fora do looping. 
Sendo a condição Falsa logo no inicio do looping, as instruções contidas no bloco de ações são ignoradas. 
Caso seja necessário executar mais de uma instrução para uma condição verdadeira dentro de um looping, 
estas deverão estar mencionadas dentro de um bloco definido com { e }. Desta forma, a instrução while 
deverá ser escrita respeitando a seguinte sintaxe: 
 
while (condição verdadeira) 
 { 
 <Bloco de Ações>; 
 } 
 
1º - Exemplo 
Como exemplo, considere o problema anterior, onde é necessário executar quatro vezes a 
solicitação de dois números para o cálculo da adição. Neste caso, será necessário definir um contador para 
controlar a execução do programa, e a cada vez que for executado o trecho desejado do programa, este 
contador deverá ser incrementado de mais 1. Observe abaixo os detalhes para a solução deste problema: 
 
Algoritmo Literal 
1. Criar uma variável para servir como contador com valor inicial 1; 
2. Enquanto o valor do contador for menor ou igual a 4, processar os passos 3, 4 e 5; 
3. Ler os dois valores; 
4. Efetuar o cálculo, implicandoo resultado em R; 
5. Apresentar o valor calculado contido na variável R; 
6. Acrescentar o contador com mais 1 unidade; 
7. Quando o contador for maior que 4, encerrar o processamento. 
 
Programa 
 
/* Programa soma de dois números 4 vezes com looping while 
 Autor: Fulano de tal Data: 04/04/1974 
 Var: A e B para os números somados; R para o resultado e CONTADOR para contar os 4 loopings 
 Funcionalidade: o usuário informa 2 números e tem a soma entre eles por 4 vezes consecutivas 
 */ 
 
#include <stdio.h> 
#include<conio.h> 
main( ) 
 { 
int A, B, R, CONTADOR; 
printf ("\n\n Programa soma de 2 números por 4 vezes \n\n "); 
 
CONTADOR=1; 
while (CONTADOR <= 4) 
 { 
printf (" \n Entre com um valor para A: "); scanf("%d", &A); 
printf (" \n Entre com um valor para B: "); scanf("%d", &B); 
R = A + B; 
printf (" \n O resultado da soma é: %d \n\n ", R); 
 
CONTADOR = CONTADOR + 1; 
 } 
getch( ); 
 } 
 
- 26 - 
 
Além da utilização das variáveis A, B e R, foi necessário criar uma terceira variável, chamada no 
caso de CONTADOR para controlar a contagem do número de vezes que o trecho de programa é 
executado. 
 
Assim que o programa é inicializado, a variável contador é atribuída com o valor 1 (CONTADOR =1). 
Em seguida a instrução while (CONTADOR <= 4) efetua a checagem da condição estabelecida, verificando 
que a condição é verdadeira, pois o valor da variável CONTADOR que neste momento é 1, é realmente 
menor que 4 e enquanto for, deverá processar o looping. Desta forma, é iniciada a execução da rotina de 
instruções contidas no looping delimitado com a instrução while. 
 
Depois de efetuar a solicitação dos valores, ter processado a operação de adição e exibido o 
resultado, o programa encontra a linha com a instrução CONTADOR = CONTADOR + 1, indicando o 
acréscimo de 1 na variável contador. Observe que a variável CONTADOR possui neste momento o valor 1 
e somado a mais 1 esta passa a ter o valor 2, ou seja, CONTADOR = 1 + 1, resultando em CONTADOR =2. 
 
Estando a variável CONTADOR com o valor 2, o processamento do programa volta para a instrução 
while (CONTADOR <= 5), que verifica a condição da variável. Sendo esta condição Verdadeira, será 
executada novamente a mesma rotina de instruções. Quando o processamento do programa chegar na 
instrução CONTADOR = CONTADOR + 1, fará com que a variável CONTADOR passe a possuir o valor 3. 
Desta forma o programa processará novamente a rotina de instruções, passando o valor de CONTADOR 
para 4, que será verificado, e sendo menor ou igual a 4, será executada mais uma vez a mesma rotina de 
instruções. Em seguida o valor da variável CONTADOR passa a ser 5, que resultará para a instrução while 
uma condição falsa e por conseguinte desviará o processamento para a primeira instrução encontrada após 
o bloco definido entre { e }, no caso para o getch() e em seguida para o fim do programa. 
 
O uso de contadores na linguagem C também pode ser escrito de outras formas. No programa 
anterior, por ex., a linha CONTADOR = CONTADOR + 1 poderia ter sido escrita como: CONTADOR += 1. 
 
Imagine agora uma outra situação, onde o usuário deseja executar a rotina do programa várias 
vezes, mas não sabe quantas vezes ao certo deverá executar o trecho de programa. Neste caso, não seria 
conveniente manter um contador para controlar o looping, seria melhor que o programa fizesse ao usuário 
uma pergunta, solicitando se o mesmo deseja ou não continuar executando o programa. Veja o exemplo: 
 
/* Programa soma de dois números indeterminadas vezes com looping while 
 Autor: Fulano de tal Data: 04/04/1974 
 Var: A e B para os números somados; R para o resultado e RESP para determinar o número de loopings 
 Funcionalidade: o usuário informa 2 números e tem a soma entre eles por n vezes consecutivas 
 */ 
#include <stdio.h> 
#include <conio.h> 
main() 
 { 
int A, B, R; 
char RESP = 's'; 
 
printf ("\n\n Programa soma de 2 números por indeterminadas vezes \n "); 
 
while (RESP == 's') 
 { 
printf (" \n\n Entre com um valor para A: "); scanf("%d", &A); 
printf (" \n Entre com um valor para B: "); scanf("%d", &B); 
R = A + B; 
printf (" \n O resultado da soma é: %d \n\n ", R); 
 
printf (" \n Deseja continuar? - Tecle (s) ou (n): ”); 
RESP = getche(); 
 } 
 } 
 
- 27 - 
 
No exemplo, o contador foi substituído pela variável RESP, que enquanto tiver o seu valor igual a 's', 
executará o bloco de instruções subordinado a while. Neste caso, o número de vezes que a rotina se 
repetirá será controlado pelo usuário e dependerá da informação fornecida para a variável RESP. Observe 
no programa anterior, o uso de apóstrofos na string da condição ao invés de aspas. Na linguagem C, 
somente são colocadas strings entre aspas quando são usadas com a função printf(), no caso de uma 
condição, deve-se fazer uso de apóstrofos. 
 
Observe que para a entrada da resposta não foi utilizada a função scanf(), sendo usada a função 
getche() que permite que seja feita a leitura de um caractere do teclado sem que se pressione a tecla 
<ENTER>. 
 
Outro detalhe a ser observado na sintaxe da linguagem C é o fato de permitir simplificações na forma 
de escrita. No programa anterior, é iniciada a variável RESP como sendo do tipo string (char) e antes de 
iniciar o looping esta variável é atribuída com o valor 's' para dar início ao processamento do looping. 
 
Perceba que após a inicialização da variável com o seu tipo, está sendo atribuído simultaneamente o 
valor da variável RESP = 's': char RESP = 's'. 
 
 
ExercícioExercícioExercícioExercíciossss 
 
1) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para escrever na tela de um 
computador 20 vezes a frase: “Eu serei aprovado”. 
 
2) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para escrever na tela de um 
computador todos os números inteiros entre 33 e 50. 
 
3) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para escrever na tela de um 
computador todos os números inteiros e pares entre 44 e 74. 
 
4) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para escrever na tela de um 
computador indeterminadas vezes a frase: “Remo Campeão” enquanto o usuário do programa assim 
desejar. Confirme a vontade do usuário com a variável RESP sendo ou não igual a ‘s’. Use o comando: 
RESP = getche(); 
 
5) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para ler a matrícula (RA) de 
um aluno e enquanto esta matrícula for diferente de 0 (zero), cadastrar 2 notas e encontrar a média entre 
elas de acordo com a seguinte fórmula: M = (N1+N2)/2. Apresentar a média encontrada e ainda: se essa 
média for maior ou igual a 5, comunicar que o aluno está aprovado, senão comunicar que este aluno está 
reprovado. 
 
6) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para controlar a entrada em 
uma boate com capacidade para até 300 pessoas. É proibida a entrada de menores de 18 anos e o 
programa é encerrado quando o usuário informa 0 (zero) para a idade de um cliente. Deve ser solicitada a 
idade de cada cliente da boate e se esta idade for menor que 18 anos, deve ser apresentada uma 
mensagem de “entrada proibida” para o cliente, porém, se a idade for maior ou igual a 18, o cliente entra na 
boate e é apresentado para o usuário do programa o número de clientes que estão naquele momento 
dentro da boate. 
 
7) Desenvolver um programa no Dev C++, completo e voltado ao usuário final, para efetuar a contagem 
regressiva de um lançamento de um foguete. O tempo da contagem é de 8 segundos. Utilize o comando 
_sleep(1000) , que faz parte da biblioteca <stdlib.h> , para que cada laço demore um segundo para ser 
executado. Informe ao usuário, segundo a segundo, o tempo restante para o lançamento do foguete, 
Quando o foguete for lançado o usuário deve ser informado que o lançamento foi executado. Tente 
representar o foguete “decolando”com o uso do comando gotoxy().

Outros materiais