Академический Документы
Профессиональный Документы
Культура Документы
computador para permitir a comunicao com o mundo real para coleta de dados
relevantes aos problemas que o mesmo possa estar inserido exemplo: teclado
usado para coleta de dados do usurio que sejam necessrios ao processamento
de dados desejado;
DISPOSITIVOS DE SADA: componentes eletrnicos que podem ser conectados ao
computador para permitir a comunicao dele com o mundo real exemplo: vdeo
usado para que o computador possa se comunicar com seu usurio.
Todo dispositivo que pode ser conectado a um computador chamado de perifrico,
existindo entre estes alguns que realizam operaes de entrada e sada, como os discos
e fitas magnticas usadas para guardar dados utilizados pelo computador.
Toda esta capacidade no adiantaria nada caso tivesse que aguardar muito tempo
para dar continuidade as aes e operaes a serem realizadas no caminho da soluo
de um problema.
O uso da lgica para alguns profissionais essencial e inseri um ponto divisor entre
estes indivduos, principalmente naqueles da subrea de Programao. Observe, por
exemplo, a simples constatao lgica proposta no exemplo abaixo:
Hoje sbado.
Todo sbado que no feriado tem aula.
Hoje no feriado.
Logo, hoje tem aula.
(uma concluso lgica)
Estas duas possveis situaes identificam um trabalho rduo a ser desenvolvido, onde
tcnicas e mtodos de representao de raciocnio contribuem, significativamente, na
anlise, discusso e teste das possveis solues encontradas.
Com base nestas definies de algoritmo constatado que este conceito no peculiar
somente a rea de Informtica, como pode ser observado no exemplo de criao de um
simplrio algoritmo empregado na criao de um saboroso sanduche:
1 - Pegar um po
2 - Cortar o po ao meio
3 - Pegar a maionese
4 - Passar maionese nas fatias de po
5 - Pegar alface e tomate
6 - Cortar alface e tomate
7 - Colocar alface e tomate no po
8 - Pegar um hambrguer
9 - Fritar o hambrguer
10 - Colocar o hambrguer no po
11 - Juntar as fatias do po cortado
final). Estes passos so seqncias e finitos, podendo ser executados sem auxlio
nenhum de um computador.
1 -
ANLISE:
PROJETO:
ELABORAO DO ALGORITMO
A elaborao do algoritmo descreve a necessidade dos dados e as suas manipulaes
durante a execuo da lgica proposta por ele. Essa descrio pode ser feita de
diversas formas por meio de tcnicas diferentes que representaro a seqncia dos
passos (ou etapas) a serem realizados pela execuo do algoritmo.
FLUXOGRAMA
O fluxograma utiliza figuras geomtricas predefinidas para descrever as aes (ou
instrues) a serem realizadas na resoluo de um problema. Ele elaborado aps a
fase de anlise do problema.
Imagine uma situao onde a idade de uma pessoa deva ser analisada para sua
classificao em jovem ou adulto. O algoritmo a seguir apresentado graficamente por
meio do fluxograma coerente com a soluo desejada.
Vrias anlises podem ser feitas sobre as vantagens e desvantagens dessa forma de
representao do raciocnio (algoritmo), porm somente a mais relevante vantagem
(face sorridente) e desvantagem (face triste) sero apresentadas para sua reflexo.
DIAGRAMA DE CHAPIN
Essa diagramao foi elaborada por Nassi e Shneiderman e ampliada por Ned Chapin.
Ela almejada a substituio da representao tradicional (diagrama de blocos) por uma
diagramao com quadros que oferecessem a viso hierrquica e estruturada da lgica
proposta para um programa.
PORTUGUS ESTRUTURADO
Essa forma de representao, tambm conhecida como portugol ou pseudocdigo,
consiste na descrio estruturada, por meio de regras pr-definidas, de passos (ou
instrues) a serem realizados para a resoluo do problema. O portugus estruturado
utiliza a linguagem natural para representar o raciocnio. No caso brasileiro, a linguagem
natural o portugus, que ser bastante usado na representao dos raciocnios
propostos. Para Espanha ou Frana seriam utilizadas as linguagens espanhola e
francesa, respectivamente, como base natural na representao dos raciocnios lgicos
elaborados atravs da desta tcnica de construo de algoritmos.
SNTESE
Objetivo: analisar a idade de uma pessoa
Entrada: uma idade
Sada: situao da maturidade da pessoa
DECLARAES
inteiro IDADE;
INCIO
escreva (Informe sua idade: );
leia (IDADE);
se (IDADE < 21) ento
escreva (voc jovem);
seno
escreva (voc adulto);
fim_se;
FIM
objetivo. Sua aplicao ainda conta com o esforo e a disciplina incessante na busca da
simplicidade e da clareza, que fornecero facilidades inestimveis manuteno e
modificao evolutiva do algoritmo.
SELETIVA:
REPETITIVA:
LINGUAGEM DE PROGRAMAO
Exemplo:
COMANDO
LINGUAGEM
writeln
Pascal
printf
System.out.println
Java
ATIVIDADE DE FIXAO
No intuito de auxiliar na aprendizagem iniciada por meio deste mdulo e verificar como
est sua compreenso sobre os mesmos, so sugeridos alguns exerccios de apoio a
serem resolvidos. Clique sobre a figura Exerccios? e acesse a lista de atividades sobre
os contedos estudados at este momento.
CONCEITOS FUNDAMENTAIS
O processamento de dados consiste, basicamente, em um conjunto de trs partes
fundamentais (Entrada, Processamento e Sada de dados) que so articuladas para
se atingir as expectativas desejadas.
IDENTIFICADOR
O uso da memria pelo computador fundamental ao seu correto funcionamento, por
isso necessrio, na elaborao do algoritmo, o fornecimento de nomes que
identificaram os dados, informaes ou recursos computacionais que possam estar
armazenados na mesma. Um exemplo desta identificao o seu prprio nome, que no
meio de muitas pessoas quando for pronunciado voc saber que esto se referindo
somente a voc.
TIPOS DE DADOS
NUMRICOS
LGICO
LITERAL
Menu
CONSTANTES
Sintaxe:
<valor do identificador>
Exemplo:
constante inteiro idade_maxima
constante caracter SexoMasculino
25;
"M";
VARIVEIS
Outro recurso computacional criado por um algoritmo e que permite a variao de seu
valor armazenado na memria durante uma mesma execuo deste algoritmo,
denominado varivel. Os valores guardados por este importante recurso podem ser
incertos, instveis ou inconstantes, conforme a situao a ser processada pelo
computador.
Similar as constantes, uma varivel exige um tipo de dado conhecido pelo computador e
um identificador para ser criada e manipulada na memria do mesmo. No entanto, este
recurso pode guardar um ou vrios valores de um mesmo tipo de dado nesta rea de
memria, conforme seja necessrio ao computador processar o algoritmo elaborado e
em execuo.
Apesar da varivel poder armazenar vrios valores de um mesmo tipo, ela s consegue
guardar um valor por vez, ou seja, o armazenamento de uma varivel no simultneo
de vrios valores, mas somente um de cada vez (sobreposio dos valores de uma
mesma varivel na memria).
No dia de seu aniversrio sua tia lhe presenteou com uma linda pasta de couro e disse
que esta era para voc se lembrar sempre dela quando fosse guardar seus documentos
profissionais. No entanto, ela se esqueceu que voc est comeando a faculdade e s
daqui alguns anos que isso poder acontecer. Porm, por esta pasta ser muito bonita
e resistente, voc resolveu utiliz-la para outros fins, at a carreira profissional
deslanchar. Assim, comea a freqentar a aula com a pasta e guardar seus materiais
acadmicos de estudo na mesma.
Dessa forma, sempre que for necessrio encontrar algum material de estudo voc
saber exatamente onde ele estar guardado (na bela pasta). Com o passar do tempo
voc trocou o contedo que estava sendo armazenado na pasta, passando a guardar os
documentos e relatrios de seus estgios onde a mesma fazia sucesso entre os colegas
que sempre lhe perguntavam onde voc havia comprado-a. Com o desgaste natural de
muito uso da pasta voc teve que troc-la, logo que a carreira comeou a acontecer
depois do termino da faculdade.
Uma varivel tambm funciona assim, sendo ela um espao de memria que o
computador reserva para utilizao de um algoritmo. Quando este termina, a varivel
deixa de existir na memria, assim como a pasta teve que ser deixada de lado aps
tanto uso.
Sintaxe:
Exemplo:
inteiro contador;
caracter primeiroNome;
Menu
Instruo
leia
Sintaxe:
leia(primeiroNome);
Exemplo:
Suponha que o usurio de seu algoritmo informou a nota 8.5, tendo assim lido o valor
desejado pelo usurio no processamento a ser efetuado pelo computador.
Dessa forma, o contedo da varivel nota passou a guardar o valor 8.5, informado pelo
usurio do algoritmo. Isto significa que uma determinada posio (endereo) de
memria, identificada pelo nome nota, ir armazenar o dado fornecido 8.5.
Instruo
escreva
Esta instruo ou comando indica que determinados dados sero exibidos ao usurio
do algoritmo que est sendo executado. Esse dado exibido em um dispositivo de
sada de dados instalado neste computador, sendo considerado como padro o vdeo
ou monitor (tela).
Exemplo:
Alm de criar a varivel nota, o trecho do algoritmo a seguir orienta as aes do usurio
e apresenta o valor armazenado por esta varivel na memria do computador.
escreval(nota);
A seguir apresentada uma mensagem entre aspas que ser exibida exatamente como
est escrita entre estas aspas.
Observe o que ser executado pelo trecho do algoritmo usado como exemplo
anteriormente nesta representao da tela (ou vdeo) de seu computador que o est
executando.
vrgula, alm de respeitar a sintaxe para exibir cada mensagem ou contedo de varivel
ou constante guardado na memria do computador.
Existe ainda uma variao da instruo escreva que permite uma melhor organizao
da apresentao e orientao do usurio do algoritmo. Esta variao a instruo
escreval que realiza a mesma ao explicada anteriormente para instruo escreva,
porm a escreval ainda salta uma linha aps escrever todo o contedo especificado em
sua instruo. Este salto de linha acontece na janela de execuo do algoritmo aps
escrever tudo que lhe foi solicitado.
Menu
OPERADORES
Alguns smbolos ou caracteres especficos so responsveis pela execuo de
operaes sobre os valores manipulados por um algoritmo, sendo estas operaes
completamente dependentes dos tipos de dados envolvidos. As principais operaes
realizadas em um algoritmo so aritmticas, relacionais e lgicas.
Operadores aritmticos:
As operaes aritmticas mais comuns so representadas pelos smbolos descritos na
relao a seguir.
OPERAO
SOMA
SUBTRAO
MULTIPLICAO
DIVISO
RAIZ QUADRADA
EXPONENCIAO
DIVISO INTEIRA (quociente)
SMBOLO
+
*
/
raizq(varivel)
^
div
mod
Exemplos:
2 +3
altura * peso
raizq(4)
Operadores relacionais:
Os smbolos que solicitam a execuo de operaes relacionais na elaborao dos
algoritmos so descritas a seguir.
OPERAO
IGUALDADE
DIFERENA
MAIOR
MAIOR ou IGUAL
MENOR
MENOR OU IGUAL
Exemplos:
5<7
// 5 menor que 7?
altura = 1.64
4 <> -4
// 4 diferente de -4?
Operadores lgicos:
SMBOLO
=
<>
>
>=
<
<=
OPERAO
SMBOLO
CONJUNO
e (E)
ou (OU)
nao (NAO)
DISJUNO
NEGAO
Exemplos:
falso E falso
nao ano
Operador de Atribuio
A operao de atribuio consiste em uma das mais importantes na manipulao dos
contedos armazenados na memria do computador, pois ela uma das operaes
responsveis pela troca do contedo armazenado em variveis, alm do fornecimento
do nico valor possvel para as constantes existentes nos algoritmos.
OPERAO
SMBOLO
ATRIBUIO
A sintaxe desta operao simples, mas no deve ser confundida com a operao
matemtica de atribuio de valores, sendo a atribuio computacional mais rgida em
sua sintaxe. Esta operao sempre atribui a uma varivel ou constante identificada
esquerda do smbolo de atribuio (seta para esquerda) o valor ou resultado da
expresso existente direita deste mesmo smbolo.
Exemplo:
ano
salarioJaneiro
1893
Menu
ESTRUTURA DO ALGORITMO
O desenvolvimento de algoritmos adequados e eficientes devem sempre respeitar um
conjunto de normas ou regras para elaborao de uma representao correta a sua
lgica que ser executada. Por existirem vrias maneiras de representar os raciocnios
desejados, essas regras que so responsveis pela orientao na elaborao e
compartilhamento dos mesmo, devendo sempre serem seguidas buscando a garantia
de um algoritmo correto e claro a todos que lhe tenham acesso.
Declaraes
<constantes>
<variveis>
Incio
<bloco de instrues>
Fim
bloco de declaraes
este bloco termina na palavra reservada Incio que indica tambm o comeo do
segundo bloco (de instrues). O bloco de declaraes pode ficar sem nenhuma
instruo, de acordo com a necessidade da soluo proposta.
bloco de instrues
neste bloco deve existir no mnimo uma instruo, caso contrrio o algoritmo no
existiria.
Declaraes
num1, num2, resultado : inteiro
Incio
escreva ("Digite um nmero inteiro: ")
leia(num1)
escreval ("Digite o segundo nmero inteiro: ") { escreve e salta linha }
leia(num2)
resultado <- num1 + num2
escreval
ATIVIDADE DE FIXAO
ESTRUTURA SEQUENCIAL
A estrutura sequencial a mais convencional entre todas as possveis, pois ela consiste
na execuo de uma instruo de cada vez, onde o encerramento da primeira instruo
permite o acionamento da instruo seguinte, respeitando a ordem de cima para baixo.
Declaraes
real NOTA;
Inicio
escreva("Informa a nota da prova: ");
leia(NOTA);
Seleo simples
Seleo composta
Seleo encadeada
Seleo Simples
Portugus estruturado
Sintaxe:
:
se (<condio>) ento
comando 1;
comando 2;
:
:
comando n;
fim se;
Exemplo:
Declaraes
inteiro IDADE;
Inicio
escreva("Informe sua idade: ");
leia(IDADE);
se (IDADE < 15) ento
escreva ("Voc uma criana");
fim se;
Fim
Se ela for verdadeira, ou seja, for menor que 15 a mensagem "Voc uma criana"
ser mostrada na tela. Se o valor informado pelo usurio no atender ao teste
condicional, a mensagem no ser exibida e o bloco condicional no ser executado.
Fluxograma:
Seleo Composta
Sintaxe:
:
se (<condio>) ento
comando 1;
:
comando n;
seno
comando 5;
:
comando m;
fim se;
Exemplo:
Declaraes
inteiro IDADE;
Inicio
escreva("Informe sua idade: ");
leia(IDADE);
se (IDADE < 15) ento
escreva ("Voc uma criana");
seno
escreva("Voc adulto");
fim se;
Fim
Se a idade informada for menor que 15 ento a mensagem a classificar como uma
criana, seno a mensagem apresentada ser que Voc adulto.
Fluxograma:
Veja a seguir a representao grfica do algoritmo anterior em fluxograma.
Seleo encadeada
A instruo de seleo (SE) pode ser encadeada uma dentro da outra, seja no bloco
verdadeiro (ento) ou falso (seno). Todas as instrues programveis podem estar
dentro de qualquer um dos blocos da instruo de seleo.
Sintaxe:
:
se (<condio_1>) ento
<bloco de comandos 1>;
seno
se (<condio_2>) ento
<bloco de comandos 2>;
seno
se (<condio_3>) ento
:
fim se;
fim se;
fim se;
Exemplo:
Declaraes
inteiro IDADE;
Inicio
escreva("Informe sua idade: ");
leia(IDADE);
se (IDADE < 20) ento
se(IDADE < 15) ento
escreva ("Voc criana");
seno
escreva ("Voc adolescente");
fim se;
seno
se(IDADE < 50) ento
escreva("Voc adulto");
seno
escreva("Voc velho");
fim se;
fim se;
Fim
Fluxograma:
Sintaxe:
:
escolha (X)
caso <v1>:
comandos;
caso <v2>:
comandos;
caso <v3>:
comandos;
caso contrario:
comandos;
fim escolha;
<v1>, <v2>, <v3> so supostos valores a serem relacionados por meio da operao de
igualdade
Exemplo:
Declaraes
inteiro EPOCA;
Inicio
escreva("Digite o perodo trimestral do ano em que estamos: ");
leia(EPOCA);
escolha (EPOCA)
ATIVIDADE DE FIXAO
No intuito de fixar os contedos abordados neste mdulo e verificar qual foi sua
aprendizagem sobre o mesmo sugerido alguns exerccios de fixao para serem
resolvidos. Clique sobre o diagrama abaixo e inicie a lista de exerccio coerente com o
contedo estudado at agora.
ESTRUTURA DE REPETIO
O processamento de valores pode ocorrer diversas vezes sobre uma mesma lgica,
porm os dados a serem manipulados podem ser diferentes, como no calculo da
tabuada de um nmero. Este calculo realiza a mesma operao de multiplicao sobre
os valores numricos inteiros sequencias, normalmente iniciados em um (1) e seguindo
at o nmero dez (10) quando estamos aprendendo a calcular e memorizar o resultado
obtido nesta operao.
Sendo assim, Vamos criar um algoritmo que leia um nmero positivo e apresente o
resultado de sua tabuada de um a dez (1 10). Observe o exemplo proposto:
Exemplo:
2x3=6
2x4=8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20
A instruo de repetio PARA ... FAA executa um conjunto de instrues por uma
quantidade de vezes bem definidas (conhecidas).
Sintaxe:
:
para X de i at f passo p faa
<comandos>;
fim para;
onde
Declaraes
inteiro VALOR, CONTADOR;
Incio
escreva ("Informe o valor desejado: ");
leia(VALOR);
para CONTADOR de 1 at 10 passo 1 faa
escreva(VALOR, " x ",CONTADOR," = ", (VALOR * CONTADOR) );
fim para;
Fim
Exemplo (descritivo):
Declaraes
real NOTA, SOMA, MEDIA;
inteiro AUX;
Incio
SOMA
0;
SOMA
fim para;
MEDIA
SOMA / 50;
Neste exemplo, a repetio, ou looping, realizado pela instruo para ... faa efetua a
leitura e a soma de 50 notas de alunos de uma turma, apresentando no seu final a
mdia desta turma.
Fluxograma:
Acompanhe a seguir o algoritmo grfico da soluo descrita anteriormente me portugus
estruturado.
Sintaxe:
:
enquanto (< condio >) faa
<bloco de repetio>; { com um ou vrios comandos }
fim enquanto;
Fluxograma:
Observe a representao genrica em um algoritmo grfico usando o ENQUANTO
...FAA.
Vamos utilizar o mesmo exemplo anterior, usado na instruo PARA ... FAA, para
construir um algoritmo com a instruo de repetio ENQUANTO ... FAA.
Exemplo (descritivo):
Declaraes
real NOTA, MEDIA;
inteiro AUX;
Incio
AUX
MEDIA
1;
0;
MEDIA
AUX
AUX + 1;
fim enquanto;
MEDIA
MEDIA / 50;
REPITA ... AT
A instruo de repetio REPITA ... AT possui caractersticas relevantes na sua lgica
de execuo.
A repetio executada somente se o teste condicional for falso, pois sendo ele
verdadeiro a repetio encerrada.
Sintaxe:
:
repita
<bloco de repetio>;
at (<condio>);
:
Exemplo (descritivo):
Declaraes
real NOTA, MEDIA;
inteiro AUX;
Incio
AUX
MEDIA
1;
0;
repita
escreva("Informe sua nota: ");
leia(NOTA);
MEDIA
AUX
MEDIA + NOTA;
AUX + 1;
Fluxograma:
Declaraes
inteiro CONTADOR;
real PESO;
Inicio
CONTADOR
0;
CONTADOR + 1;
fim enquanto;
escreva ("Foram informados 5 pesos.");
Fim
Declaraes
inteiro CONTADOR;
real PESO;
Inicio
PESO
1;
CONTADOR
0;
CONTADOR + 1;
fim enquanto;
escreva ("Foram informados", (CONTADOR - 1), " pesos.");
Fim
O algoritmo anterior l quantos pesos o usurio desejar, aplicando a mesma lgica para
a quantidade que o usurio necessite. Este tipo de controle da repetio tambm
conhecido como flag ou sentinela de interrupo da repetio.
Declaraes
inteiro CONTADOR;
real PESO;
Inicio
CONTADOR
0;
repita
escreva ("Informe o peso: ");
leia (PESO);
CONTADOR + 1;
CONTADOR
O mesmo problema, porm com o algoritmo usando a instruo repita controlado pelo
usurio apresentado a seguir.
Declaraes
inteiro CONTADOR;
real PESO;
Inicio
PESO
1;
CONTADOR
0;
repita
escreva ("Informe o peso: ");
leia (PESO);
CONTADOR
ate (PESO = -1);
CONTADOR + 1;
LINGUAGEM DE PROGRAMAO
Exemplo:
ATIVIDADE DE FIXAO
Uma abordagem eficiente para este tipo de problema a diviso do problema mais
complexo em problemas mais simples de serem resolvidos.
processamento, sada). Ele efetua parte de uma tarefa que um algoritmo maior dever
executar. O algoritmo que aciona um subprograma chamado de algoritmo principal
daquele subprograma.
FUNO
Esta lista tem a sua representao opcional ao programador, pois pode no existir
nenhum valor do algoritmo principal que seja necessrio ao subprograma.
Sintaxe:
:
 Instruo n;
retorna(<valor>);
fim funo;
Onde:
Parmetros da funo
Os parmetros de uma funo so dados fundamentais que a funo deve ter acesso
para realizar seu objetivo. Por exemplo, se voc tem uma funo media que calcula a
mdia aritmtica de dois nmeros, essencial que essa funo "saiba" quais so esses
nmeros, do contrrio, ela no pode efetuar os clculos. Pois bem, esses dois nmeros
sero disponibilizados funo por meio de parmetros.
(NUM_1+NUM_2) / 2;
retorna(resultado);
fim funo;
Exemplo:
Declaraes
funo real MEDIA (real VALOR_1, real VALOR_2);
constante inteiro QTDE
50;
{ prottipo}
{ quantidade de alunos }
{ algoritmo principal }
Media(NOTA_1, NOTA_2);
{ chamada da funo }
Fim
{ corpo da funo }
real RESULTADO;
inicio
RESULTADO
(VALOR_1 + VALOR_2) / 2;
retorna (RESULTADO);
fim funo;
Observe no exemplo anterior que existe um subprograma para o algoritmo principal que
aciona por 50 vezes o subprograma (funo MEDIA). Em cada momento que esta
funo foi acionada, foram lhe enviados parmetros com valores possivelmente
diferentes, o que resultar em uma mdia diferente para cada acionamento.
Quando o subprograma (funo) chegar ao seu final, ele retornar um nico valor para
o algoritmo que o acionou, continuando a execuo do mesmo a partir da prxima
instruo a ser realizada.
Um subprograma s pode ser acionado pelo programa que o contm e ele tambm
pode possuir outros subprogramas.
Todo programa com subprograma deve possuir uma estrutura similar a representada, de
forma simples, abaixo:
Declaraes
Algoritmo Principal
Subprogramas
Fluxograma:
Este outro fluxograma dever ser elaborado, representando exatamente o que este
subprograma executa, ou seja, as instrues existentes no corpo do subprograma, ou
o que ele faz.
As elipses de incio e fim do algoritmo acionador (principal) so inseridas da mesma
forma, porm no diagrama que especifica o corpo da funo a elipse inicial
substituda pelo nome do subprograma e sua lista de parmetros, enquanto que a
elipse final contm a palavra reservada retorna e a informao que ser retornada.
Instruo de Retorno
Um subprograma sempre retorna uma valor ao algoritmo que o aciona, por isso ele
possui um tipo de dado declarado, retornando ao acionador um dado exatamente deste
tipo.
Exemplo:
(VALOR_1 + VALOR_2) / 2;
retorna (RESULTADO);
fim funo;
A instruo retorna executa o encerramento do subprograma, retornando imediatamente
o valor desejado a instruo acionadora da funo. Esta instruo s pode retornar um
nico valor ao acionador.
Objetos Locais e Globais
Por exemplo: uma varivel considerada global quando sua declarao acontece no
algoritmo principal, enquanto que uma varivel considerada local quando a sua
declarao acontece em um subprograma (ou funo).
OBJETO GLOBAL
OBJETO LOCAL
OBJETOS GLOBAIS
OBJETO LOCAL
TOTAL
VALOR_1 + VALOR_2;
retorna (TOTAL);
fim funo;
No intuito de fixar os contedos abordados neste mdulo e verificar qual foi sua
aprendizagem sobre o mesmo sugerido alguns exerccios de fixao para serem
resolvidos. Clique sobre o diagrama de acesso a lista de exerccio e boa prtica com
os mesmo!!
ESTRUTURAS DE DADOS
As estruturas de dados consistem em organizaes lgicas sobre o armazenamento e
manipulao dos dados que sero necessrios ao algoritmo e posteriormente ao
programa resultante de tal representao.
Declaraes
real ALUNO1,ALUNO2,ALUNO3,ALUNO4,ALUNO5;
Inicio
escreva("Informe a nota do 1 aluno: ");
leia (ALUNO1);
escreva("Informe a nota do 2 aluno: ");
leia (ALUNO2);
escreva("Informe a nota do 3 aluno: ");
leia (ALUNO3);
escreva("Informe a nota do 4 aluno: ");
leia (ALUNO4);
escreva("Informe a nota do 5 aluno: ");
leia (ALUNO5);
Fim
Por meio deste algoritmo seria possvel ler 5 notas de 5 alunos diferentes e armazenalas em 5 diferentes variveis. Uma instruo de repetio no melhoraria muito esta
lgica, pois os cinco valores precisaro estar disponveis independente dos outros
valores informados. Mas imagine se a leitura de todas as notas dos alunos do seu curso
tivessem quer ser lidas pelo seu algoritmo, o que faramos? E no prximo semestre
quantos alunos seriam?
Uma estrutura de dados composta homognea consiste em uma nica varivel que
pode armazenar vrios valores (por isso composta) do mesmo tipo (por isso
homognea). Suas principais caractersticas so:
Exemplo:
valores
ndices
10
11
Suponha que desejamos apresentar somente a idade do sexto indivduo. Como o ndice
da estrutura de dados sempre comea com zero, o sexto indivduo possui a sua idade
armazenada na 5 posio da estrutura, sendo o contedo desta posio (5) igual a 7
(idade do indivduo).
Exemplo:
real NOTA;
onde:
<tipo bsico> o tipo de dado que ser armazenado na estrutura;
<identificador> o nome atribudo a estrutura (vetor);
<tamanho> a quantidade de elementos que o vetor poder armazenar.
Exemplo:
real NOTAS[20];
IDADES
0
Exemplo:
{ manipulao de vetor }
Declaraes
inteiro AUX, IDADES[12];
Incio
AUX
4;
IDADES[1]
IDADES[AUX]
IDADES[AUX];
IDADES[ 2 * AUX ] / 2;
Fim
Soluo:
IDADES[1]
IDADES[4];
IDADES[4]
IDADES[8] / 2;
{ IDADES[1]
{ IDADES[4]
15 }
12/2 }
Exemplo:
10
11
Declaraes
real NOTA[30];
inteiro AUX;
Incio
para AUX de 1 at 30 passo 1 faa
escreva("Informe a nota do aluno :");
leia (NOTA[AUX]);
fim para;
Fim
Tipo Caracter
Quando declaramos uma varivel do tipo caracter, para armazenar um nome por
exemplo, estamos na verdade criando um vetor de caracteres, pois um nome consiste
de um conjunto de letras (ou smbolos alfabticos).
Exemplo:
Declaraes
caracter NOME[10];
inteiro AUX;
Incio
AUX
0;
AUX
Vamos praticar com outro exemplo que dever solicitar uma senha para um usurio e
verificar se ela foi informada corretamente ou no.
Declaraes
caracter SENHA[4], SENHA_USUARIO;
inteiro AUX;
lgico IGUAL;
Inicio
verdadeiro;
IGUAL
AUX
0;
"C";
SENHA[1]
"U";
SENHA[2]
"B";
SENHA[3]
"O";
leia(SENHA_USUARIO[AUX]);
AUX
AUX + 1;
falso;
fim se;
fim para;
se (IGUAL = verdadeiro) ento
escreva("Senha correta!");
seno
escreva("Senha incorreta!");
fim se;
Fim
Declarao de Tipos
A palavra reservada "tipo" indica a criao de um novo tipo de dado, criado pelo
algoritmo.
Quando criamos um tipo este s funciona dentro do algoritmo onde foi criado.
Exemplo:
Declaraes
tipo real VALORES[10];
VALORES NUMERO;
Incio
:
Fim
ATIVIDADE DE FIXAO
Uma empresa vai fornecer o credirio para um cliente efetuar o pagamento em vrias
parcelas, mas para isso ser necessrio efetivar um cadastro dos dados mais relevantes
para a localizao do cliente, caso algum problema venha a ocorrer com os
pagamentos.
A criao destas fichas cadastrais conter dados com tipos diferentes, no sendo
possvel usar uma varivel composta homognea para guardar todos eles. Apesar
disso, todos estes dados so relacionados, pois pertencem a uma mesma pessoa, ou
seja, cada ficha possuir diferentes dados (nome, endereo e CPF), mas todos eles so
de um mesmo cliente, sendo todos estes dados relacionados logicamente a este cliente.
Cada um dos dados que formam esta ficha chamado de componente ou elemento do
registro, sendo cada ficha completa identificada como um cdigo de registro. Portanto,
neste exemplo, s ser possvel conseguir um credirio aps a efetivao do registro do
cliente, sendo este registro formado pelos componentes nome, endereo e nmero do
CPF.
FICHA: 0
NOME
caracter
ENDEREO
caracter
CPF
04568715898
inteiro
componentes
dados armazenados
tipo de dados
Esta empresa tambm no far o credirio somente para um cliente, mas para os vrios
clientes que possurem um perfil interessante para a mesma. Assim, ser necessrio
criar uma estrutura de dados que possa armazenar vrios dados (composta) de tipos
diferentes (heterognea).
Exemplo:
Primeiro
Registro[0]
Segundo
Registro[1]
Observe o exemplo com dois registros cadastrados. A primeira ficha contm os dados
do Joo Carlos da Silva, enquanto que a segunda possui os dados da Maria Rita
Amaral.
Sintaxe:
registro = <identificador>
<componente> <tipo bsico>;
<componente> <tipo bsico>;
fim_registro;
onde:
registro uma palavra reservada;
<identificador> o nome do registro (segue as regras de nomenclatura);
<componente> o nome do componente que forma este registro;
<tipo bsico> o tipo de dado que ser armazenado em cada componente;
Vamos criar um registro para armazenar os trs componentes diferentes (SEXO, CPF,
PESO).
{ manipulao de registro }
Declaraes
registro = pessoa
inteiro CPF;
caracter SEXO;
real PESO;
fim_registro;
Incio
escreva ("Informe o seu CPF: ");
leia(cliente.CPF);
escreva ("Digite F para sexo feminino e M para masculino: ");
leia(cliente.SEXO);
escreva ("Informe o seu peso: ");
leia(cliente.PESO);
Fim
Supondo que este cadastro seja feito por uma empresa de publicidade, que esta
procurando alguns novos modelos. Ela no ira cadastrar somente um candidato a vaga
de modelo, mas todos os interessados, que podero ser vrios. Portanto ser criado um
vetor para este tipo de estrutura heterognea. Observe o exemplo a seguir que cria a
inteiro CPF;
caracter SEXO;
real PESO;
fim_registro;
constante inteiro TODOS
PESSOA FICHA[TODOS];
inteiro AUX;
Incio
Para AUX de 0 at 999 passo 1 faa
escreva ("informe o seu CPF: ");
leia(FICHA[AUX].CPF);
escreva ("Digite F para sexo feminino e M para masculino: ");
leia(FICHA[AUX].SEXO);
escreva ("informe o seu peso: ");
leia(FICHA[AUX].PESO);
fim_para;
Fim
ATIVIDADE DE FIXAO
Por se tratar de uma ferramenta free, o Dev-C++ pode ser conseguido, sem nenhum
nus financeiro, por meio da rede mundial de computadores (internet), podendo ser
instalado em qualquer equipamento de arquitetura e sistema operacional coerente com
as suas necessidades de instalao da ferramenta (arquitetura de equipamentos IBMPC com sistema operacional Windows).
Por esta facilidade, alm da eficincia e evoluo continua desta ferramenta, que a
equipe de professores da UCB decidiu utiliza-la no processo de ensino-aprendizagem
deste paradigma de programao, onde ainda possvel que todos os estudantes da
Universidade trabalhem com a mesma ferramenta usada no perodo de aula, assim
como em atividades de estudo e pesquisa fora de sala de aula ou mesmo da
Universidade Catlica.
dos itens referenciados abaixo, pois a inicializao errada do ambiente provocar muitos
problemas at que se alcance o sucesso do programa desejado.
5) Pressione o boto OK e a janela Create New Project (Novo Projeto) solicitar qual o
local onde este projeto dever ser criado e armazenado;
Neste momento ser criado um arquivo de projeto, com o nome descrito no campo
Name (Exer_1 na figura acima) e extenso DEV, no diretrio ou drive escolhido na
janela Create New Project.
A barra de menu:
opes e recursos disponveis neste ambiente de desenvolvimento de programas
computacionais na Linguagem C e C++;
B barra de botes:
botes de acionamento rpido de alguns dos recursos do ambiente;
C navegador de objetos:
situado na parte esquerda da janela, apresenta todos os objetos (arquivos,
funes, procedimentos, outros) que podem ser apresentados na rea de edio
dos programas fontes a serem elaborados;
D editor de programas:
rea de desenvolvimento dos cdigos fontes na Linguagem C e C++.
Algumas outras configuraes podem facilitar a edio dos cdigos fontes no ambiente
Dev-C++. Observe a seguir algumas delas:
OBSERVAO IMPORTANTE
No selecione a caixa de verificao Iniciar em Zero porque as instrues do
compilador Dev-C++ so feitas sobre as linhas existentes no cdigo fonte a partir
de um (primeira linha existente). Caso esta caixa seja selecionada a orientao
das linhas na tela ser iniciada em zero, mas o compilado continuar fornecendo
orientaes a partir de um, o que pode atrapalhar a sua utilizao.
A primeira parte a ser elaborada a Sntese, que consiste na sntese do problema a ser
solucionado pelo seu programa. Observe a sntese descrita abaixo, respeitando os
padres de desenvolvimento da UCB (template aluno), no desenvolvimento do primeiro
programa neste novo ambiente:
int main(void)
{
// DECLARAES
// INSTRUES
getch( );
return 0;
Agora que j esta elaborado o primeiro programa fonte na linguagem C ser necessrio
verificar se ele esta correto ou existe algum erro na sua elaborao. Para isso ser
acionado o compilador, que faz a traduo do programa fonte criado em um programa
objeto, ou seja, na traduo para linguagem que o computador realmente compreende linguagem de mquina ou binria. A seguir, se o compilador no encontrar nenhum
erro, ele permitir que seja realizada a linkedio do programa objeto para que o mesmo
possa ser transformado em um programa executvel e assim poder ser executado pelo
computador que est em uso e possui o ambiente Dev-C++ instalado ou no, no caso
de ser usado o programa executvel.
Ctrl + F9
e a opo Compilar ser acionada imediatamente.
Executar:
Ctrl + F10
e a opo Executar ser acionada imediatamente.
Compilar & Executar:
F9
e a opo Compilar & Executar ser acionada.
As opes das teclas de atalho consistem no caminho mais rpido para o acionamento
de um destes itens de compilao e execuo, mas para serem utilizadas precisam ser
memorizadas pelo(s) programador(es). Enquanto isso no acontece, pode ser usado
qualquer uma das outras duas opes (menu ou botes) abordadas anteriormente.
Acompanhe o resultado na tela de um computador, caso o primeiro programa no
possua nenhum erro e o compilador o traduza, gere seu programa objeto e por fim o
executvel acionando-o para que seja visualizado o seu resultado final.
Agora, por meio destas instrues fundamentais na manipulao deste ambiente, ser
possvel o desenvolvimento de outros programas mais complexos, assim como o
estudo, pesquisa e teste das outras opes disponveis no Dev-C++.
ATIVIDADE DE FIXAO
No intuito de fixar estes novos contedos abordados neste mdulo e verificar sua
compreenso sobre o mesmo sugerido alguns exerccios de fixao para serem
resolvidos. Clique sobre o diagrama e inicie a lista de exerccio sobre os contedos
estudados. Boa atividade de fixao!!
APLICAO DOS CONCEITOS FUNDAMENTAIS
Histrico da Linguagem de Programao C
Sistema
UNIX
Operacional
Banco de dados
Planilhas
Excel
eletrnicas
Aplicaes
grficas
BAIXO NIVEL
ALTO NIVEL
VELOCIDADE DO PROGRAMA
Assembler
Cobol
Basic
Pascal
Ada
Modula-2
Por meio desta declarao foi criada uma nica varivel, com o tipo de dado inteiro, que
recebeu o nome de identificao IDADE. Esta varivel seria completamente diferente
de outra que se chamasse idade ou iDaDe, pois as letras que compem o seu nome
esto diferentemente definidas em letras maisculas e minsculas. Sendo assim, estas
trs variveis poderiam ser declaradas em um mesmo programa, no ocasionando
nenhum tipo de erro de compilao, pois elas so completamente diferentes. Mas este
tipo de declarao no aconselhada porque pode dificultar a compreenso do
programador sobre a ao realizada pelo cdigo proposto.
inteiro IDADE, idade, iDaDe;
Palavras Reservadas
auto
break
case
char
const
continue
defaut
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
Comentrios
de comentrio como informaes que no sero usadas pelo compilador, mas que
auxiliam na correta compreenso do programador. O uso de // tambm insere um
comentrio no programa, sendo este iniciado a partir do cdigo (//) e se estendendo at
o final da linha onde ele se encontra, por exemplo:
/* SNTESE
Objetivo: saudar o usurio
Entrada: nenhuma
Sada:
mensagem de saudao
*/
#include <stdio.h>
// instruo da linguagem C
// instruo da linguagem C
// INSTRUES
printf(Ol usurio!!!);
// instruo da linguagem C
Incio de blocos
Assim como na elaborao do algoritmo, os programas em C tambm so
desenvolvidos por meio de alguns blocos lgicos principais (sntese, declaraes,
instrues), sendo todos eles destinados a uma organizao coerente na codificao
desejada. Respeitando esta organizao ser elaborado um cdigo eficiente por um
programador organizado que no tem dificuldades na manipulao e manuteno dos
seus programas.
SNTESE:
Este bloco representa um resumo lgico do que o programa dever fazer. A
confeco do mesmo identifica trs informaes relevantes que sintetizam as
atividades do programa, sendo elas: OBJETIVO (objetivo que este programa atende);
ENTRADA (as entradas de dados necessrias para atender este objetivo); SADA (os
dados de sada aps o processamento das entradas).
A construo da sntese deve ser cuidadosa, pois ela exatamente o algoritmo, ou
melhor, a sntese dele.
DECLARAES:
A criao dos recursos manipulados pelo programa ser efetuada neste bloco e
contribuir com a organizao no desenvolvimento do programa, pois facilitar a
compreenso no uso de cada recurso. Os recursos aqui citados consistem das
variveis, constantes e subprogramas.
INSTRUES:
Neste bloco so descritas as aes a serem realizadas por um programa que busca
atingir o objetivo almejado pelo programador que o elaborou. As instrues ou
comandos esto neste bloco.
Na construo dos algoritmos as palavras reservadas incio e fim representam o
comeo e o trmino deste bloco. Cada instruo tambm encerrada por meio de
uma pontuao especfica, sendo normalmente utilizado o ponto e vrgula (;).
O desenvolvimento dos programas em C possuem as mesmas regras, porm a grafia
ou os smbolos so diferentes. O bloco iniciado pelo smbolo de abertura de chaves
({) e encerrado pelo fechamento da mesma (}), enquanto cada instruo terminada
tambm pelo ponto e vrgula (;).
/* SNTESE
Objetivo: saudar o usurio
Entrada: nenhuma
Sada:
mensagem de saudao
*/
#include <stdio.h>
// instruo da linguagem C
// instruo da linguagem C
// INSTRUES
printf(Ol usurio!!!);
// instrues da linguagem C
printf(Seja bem vindo ao Curso de C);
}
Tipos de dados
Ao se declarar um objeto (constante, varivel, funo) necessrio identificar qual o tipo
de informao que ele manipular , pois atravs dessa declarao que o computador
poder verificar a existncia e a disponibilidade de espao suficiente para que o
programa possa ser executado com sucesso.
A Linguagem C possui cinco tipos de dados escalares, sendo eles determinantes nas possibilidades de manipulao de
informaes efetuadas pelo computador que estiver executando o programa em C.
Tipo
Caracter
Inteiro
Real
No definido
Sintaxe em C
char
int
float
double
void
Tamanho (byte)
1
2
4
8
0
Faixa
0 a 255
-32768 a 32767
3.4E-38 a 3.4E38
1.7E-308 a 1.7E308
sem valor
int VALOR;
long
short
signed
unsigned
Os modificadores no podem ser aplicados a qualquer tipo, por exemplo: em float no
se pode aplicar nenhum deles (no tem efeito algum), enquanto que o int aceita
qualquer um dos quatro.
No algoritmo a seguir, veja as instrues que criam uma constante inteira e duas
variveis (uma real e outra caracter).
Sntese
Objetivo: declarar uma constante e duas variveis
Entrada: nenhuma
Sada:
nenhuma
Declaraes
inteiro numero;
real money;
Incio
{ sem instrues }
Fim
/* SNTESE
Objetivo: declarar uma constante e duas variveis
Entrada: nenhuma
Sada:
nenhuma
*/
#include <stdio.h>
// instruo da linguagem C
// instruo da linguagem C
{
// DECLARAES
const int TUDO = 100; // declarao da constante inteira TUDO
char LETRA;
float SALARIO;
// INSTRUES
/* instrues a serem executadas pelo programa */
}
ESTRUTURA DE UM PROGRAMA
Sntese
/*SNTESE
objetivo: exemplificar a estrutura padro de um programa escrito em C
entrada: nenhuma
sada: mensagem de sucesso no primeiro programa
*/
#include <stdio.h> // incluso da biblioteca padro de entrada e sada
void main (void)
Instruo de Sada
# Funo printf()
A expresso de controle obrigatria e sempre estar entre aspas ("). Ela controla tudo
que ser apresentado ao usurio, usando de cdigos especiais para apresentar dados
de qualquer tipo, alm de algumas orientados sobre o posicionamento da informao na
tela. Para mostrar dados de qualquer tipo so utilizados os cdigos precedidos do
smbolo percentual (%), enquanto que as orientaes na tela tem um cdigo com o
precedente com a barra invertida (\).
Existem vrios cdigos % que referem-se a diferentes tipos de dados que podem ser
manipulados, mas os relacionados a seguir sero suficientes para a aprendizagem
inicial nesta linguagem de programao.
Cdigo
%d
%f
%c
%s
%o
%x
%lf
%%
Significado
Inteiro
Real (float)
Caractere
String
Octal
Hexadecimal
Real grande (double)
Mostra um %
# Funo scanf()
Esta funo faz a leitura dos dados informados pelo usurio. Ela possui a mesma
organizao da printf, mas fazendo a leitura dos dados, por isso sua manipulao ocorre
sobre os dispositivos de entrada de dados, sendo o teclado acionado por esta funo.
Observe a representao da forma geral desta funo:
A leitura de um dado deve ser armazenada em uma varivel, pois o valor informado
poder ser usado na realizao de algum processamento do programa. Para que ele
fique disponvel para o programa necessrio, primeiro, a declarao da varivel, que
deve ter o tipo de dado coerente com a leitura desejada.
Sntese
objetivo: ler e escrever dados
entrada: uma idade, um salrio e a letra inicial do sexo de uma pessoa
sada: a idade, o salrio e o sexo informado pelo usurio
Declarao
inteiro IDADE;
real SALARIO;
caractere SEXO;
Inicio
escreva(Informe a idade: );
leia(NUMERO);
escreva(Informe o salrio: );
leia(SALARIO);
escreva(Informe M para masculino ou F para feminino: );
leia(SEXO);
escreva(Sua idade = , IDADE, e seu salrio = ,SALARIO);
escreva(A letra inicial do seu sexo = ,SEXO);
Fim
/*SNTESE
objetivo: ler e escrever dados
entrada: uma idade, um salrio e a letra inicial do sexo de uma pessoa
sada: a idade, o salrio e o sexo informado pelo usurio
*/
#include <stdio.h>
#include <conio.h>
void main(void)
{
// DECLARAES
int IDADE;
float SALARIO;
char SEXO;
// INSTRUES
printf("Informe a idade: ");
scanf("%d",&IDADE);
printf("Informe o salrio: ");
scanf("%f",&SALARIO);
printf("Informe M para masculino ou F para feminino: ");
scanf("%c",&SEXO);
printf("\nSua idade = %d e seu salrio = %f ", IDADE, SALARIO);
printf("\nA letra inicial do seu sexo = %c,SEXO);
getch();
}
As duas ltimas instrues printf possuem um cdigo de barra invertida, que controla o
posicionamento na tela. Especificamente o cdigo \n leva o cursor para a prxima linha.
Este cursor identifica a posio onde sero apresentados os valores de sada
desejados.
# Funo getche()
void main ()
{
// DECLARAES
char LETRA;
// INSTRUES
LETRA = getche();
# Funo getch()
Similar a funo getche(), esta funo tambm l um caractere do teclado, sem usar o
buffer, mas ela no permiti a sua apresentao no dispositivo de sada padro (monitor).
void main ()
{
// DECLARAES
char TECLA;
// INSTRUES
TECLA = getch();
}
# Funo getchar()
A leitura de um nico caractere tambm realizada por esta funo, mas ela usa o
buffer para efetuar esta leitura, sendo necessrio pressionar a tecla ENTER aps digitar
a tecla desejada. A tecla digita permanece na memria temporria (buffer) at que o
ENTER seja pressionado, o que solicitar ao computador a copia dos dados do buffer
para a memria principal, memria esta que o computador utiliza para manipular os
dados enquanto so processados. Observe a sintaxe similar da getchar() com as
outras funes que fazem a leitura de um nico caractere.
void main ()
{
// DECLARAES
char TECLA;
// INSTRUES
TECLA = getchar(); /* retorna o valor lido na varivel TECLA
usando o buffer */
}
Operador em Algoritmo
Operador em C
Significado da Operao
>
>
Maior do que
>=
>=
Maior ou igual a
<
<
Menor do que
<=
<=
Menor ou igual a
==
Igual a
<>
!=
Diferente de
Exemplo em Algoritmo
Sintaxe do exemplo em C
VALOR == 0
MAX > 1
LETRA != 'A'
No terceiro exemplo (LETRA <> "A") esta se comparando um caractere com o contedo
da varivel LETRA, que tambm deve ser do tipo caractere. Porm a transformao
deste exemplo para a operao relacional respectiva em C usa o apostrofe aos invs
das aspas do algoritmo. A identificao de um nico caractere em C feita por
apostrofe (aspas simples), enquanto que as aspas (aspas duplas) so aplicadas
somente a um conjunto de caracteres (string).
Operador Lgico em C
&&
OU
||
NO
A
V
V
F
F
B
V
F
V
F
A && B
V
F
F
F
Operador OU Lgico em C
A
V
V
F
F
B
V
F
V
F
A || B
V
V
V
F
Operador
NO Lgico
em C
A
V
F
!A
F
V
((5 > 5) || ((2 != 3) && (1 < 3))) => o resultado desta expresso Verdadeiro
Sempre deve haver cuidado com a anlise da expresso proposta, pois os parnteses
interferem diretamente no resultado final, modificam a ordem da sequencia alcanada
por cada expresso, pois eles alteram a precedncia das operaes (prioridades), por
exemplo:
Operador de atribuio
Veja a diferena existente na sintaxe usado pelo algoritmo e sua respectiva traduo
para a Linguagem C:
Linguagem C
Algoritmo
VALOR
50;
Operadores Aritmticos
VALOR = 50;
SMBOLO DO OPERADOR
+
*
/
%
OPERAO
Adio
Subtrao
Multiplicao
Diviso
Mdulo (resto da diviso de inteiros)
5/2 =2
enquanto que
5.0 / 2 = 2.5
Sntese
Objetivo: somar duas variveis
Entrada: nenhuma
Sada: resultado da soma
Declaraes
inteiro VALOR_1, VALOR_2, RESULTADO;
Inicio
VALOR_1
35;
VALOR_2
42;
RESULTADO
VALOR_1 + VALOR_2;
/*SNTESE
Objetivo: somar duas variveis
Entrada: nenhuma
Sada: resultado da soma
*/
void main ()
{
// DECLARAES
int VALOR_1, VALOR_2, RESULTADO; // declaraes das variveis
// INSTRUES
VALOR_1 = 35;
// atribuio de 35 a VALOR_1
VALOR_2 = 42;
// atribuio de 42 a VALOR_2
Incremento e decremento
Os operadores de incremento ou decremento podem ser escritos de uma forma mais
simplificada na Linguagem C. O incremento representa um simples contador que
acrescenta um ao valor da varivel inteira utilizada na expresso. Por exemplo:
CONTADOR
CONTADOR + 1;
equivale a
CONTADOR++;
Y = 0;
Pr-incremento (pr-fixado)
depois X atribudo a Y.
Ps-incremento (ps-fixado)
Y = X++; equivale a Y = X;
primeiro X atribudo a Y.
Iniciando com os menos valores propostos acima, os valores finais para as operaes
de ps-incremento seriam de X igual a 11 e Y igual a 10.
As mesma lgica envolve os operadores de decremento em C:
Pr-decremento
depois X atribudo a Y.
Ps-decremento
Y = X--; equivale a Y = X;
primeiro X atribudo a Y.
Expresso Convencional
Expresso Equivalente em C
X = X + Y;
X += Y;
X = X - Y;
X -=Y;
X = X * Y;
X *= Y;
X = X / Y;
X /= Y;
X = X % Y;
X %= Y;
/*SNTESE
Objetivo: somar duas variveis
Entrada: valor das variaveis
Sada: resultado da soma
*/
void main( )
{
// DECLARAES
int NUMERO_1, NUMERO_2;
// INSTRUES
printf (Informe o primeiro valor: );
scanf(%d,&NUMERO_1);
ATIVIDADE DE FIXAO
No intuito de fixar os novos contedos abordados por este mdulo e verificar sua
compreenso sobre o mesmo sugerido alguns exerccios de fixao para serem
resolvidos. Clique sobre o diagrama abaixo para iniciar a lista de exerccio referente a
este contedo abordado. Bons estudos sobre os mesmos!!
PRTICA - ESTRUTURAS DE CONTROLE NA LINGUAGEM C
Como se sabe, controlar o fluxo do programa mais do que uma necessidade para
os programadores, mas agora voc ir estudar isso na prtica. Mas antes veja um
detalhe importante.
/* SNTESE
Objetivo: apresentar uma mensagem na tela
Entrada: nenhuma
Sada:
mensagem
*/
# include <stdio.h>
# include <conio.h>
void main ()
{ /*essa chave inicia o bloco do programa principal*/
printf(Os programas em C so divididos em blocos.);
getch();
} // essa chave fecha o bloco do programa principal
Nesse exemplo em particular s tivemos um bloco que foi a funo principal, mas
nos nossos prximos exemplos voc vai comear a observar mais blocos em um nico
programa.
Agora que voc j tem uma noo superficial de blocos vamos iniciar nossos estudos
prticos em estruturas de controle, onde voltaremos a tocar no assunto de blocos.
ESTRUTURA SEQUNCIAL
Por exemplo: Um universitrio necessita de passar por vrias etapas para conseguir
entrar na faculdade,ou seja, teve que respeitar uma seqncia de estudos para
conseguir. Isso...
Sntese
Objetivo: Calcular a media de duas notas
Entrada: duas notas
Sada: media aritmtica das duas notas
Declaraes
real NOTA_1, NOTA_2, MEDIA;
Inicio
escreva(Informe a primeira nota:);
leia(NOTA_1);
escreva(Informe a segunda nota:);
leia (NOTA_2);
MEDIA
(NOTA_1 + NOTA_2) / 2;
/* Sntese
Objetivo: Calcular a media de duas notas
Entrada: duas notas
Sada: media aritmtica das duas notas
*/
# include <stdio.h>
# include <conio.h>
// Declaraes
float NOTA_1, NOTA_2, MEDIA;
// Instrues
void main()
{
// Incio
printf(\nInforme a primeira nota: );
scanf(%f,&NOTA_1);
// Fim
Como voc pde observar a execuo desse programa no teve nenhuma variao do
seu fluxo. Vamos ver agora uma nova instruo, que efetua a alterao seqencial de
execuo de um programa.
ESTRUTURAS DE SELEO
Este teste condicional pode consistir em uma operao relacional simples ou em uma
expresso mais complexa. Existem algumas caractersticas importantes relacionadas as
estruturas de seleo, permitindo que elas sejam dividas ou classificadas em: simples,
composta, aninhada e de mltipla escolha.
Simples:
Observe o exemplo anterior que apresenta como resultado a mdia conseguida por um
aluno que obteve as notas anteriores de 7.5 e 9.5. Supondo que a mdia mnima para
aprovao seja 7.0 em uma escola, pode-se incluir na apresentao final a mensagem
que identifica a situao deste aluno, que ser APROVADO ou REPROVADO, de
acordo com a mdia alcanada. Sendo assim, ser necessria a incluso de um teste
condicional que possibilite a correta identificao da situao do aluno. Como estudado
Sntese
Objetivo: calcular a media aritmtica de duas notas e informar
somente a aprovao para media maior que 7.0.
Entrada: duas notas.
Sada: a media aritmtica e a situao
Declaraes
real NOTA_1, NOTA_2, MEDIA;
Inicio
escreva(Informe a primeira nota:);
leia(NOTA_1);
escreva(Informe a segunda nota:);
leia(NOTA_2);
MEDIA
(NOTA_1+ NOTA_2) / 2;
/*
Sntese
Objetivo: calcular a media aritmtica de duas notas e informar
somente a aprovao para media maior que 7.0.
Entrada: duas notas.
O if um comando que contm uma ou mais instrues, e como voc j viu, para
mais que uma instruo necessria a criao de bloco que ser aberto e fechado por
meio de chaves, mas isso s ser necessrio se dentro do if tiver mais de uma linha
de comando, como no exemplo anterior tinha apenas um comando printf, ento no foi
necessrio abrir e fechar chaves. Veja o exemplo da condio a seguir:
if(MEDIA>=7.0)
{ // abrindo um bloco de instruo do comando if
printf(\nAPROVADO);
printf(\nBom Aluno!);
} // fechando o bloco de instruo do comando if
Neste caso observe que foram retiradas as chaves e feita a endentao e o programa
ir escrever Bom aluno para qualquer condio, ou seja, mesmo que a mdia seja
menor que 7.0, porque ele est interpretando que o printf(Bom aluno) est fora do if e
realmente est, ento a concluso a seguinte: endentao e interpretadores de
blocos(chaves) precisam de cuidados ao serem usados.
Composta:
Essa estrutura vai ocorrer quando duas alternativas dependerem da mesma condio,
ou seja, uma a condio ser verdadeira e a outra da condio ser falsa. Em algoritmo
conhecemos o se e o seno, agora vamos conhecer em C a instruo condicional
composta que usa as palavras reservadas if (se) e else (seno), mas antes vamos a
um exemplo...
Se o sexo de uma pessoa no for masculino, ento a concluso bvia que ela seja do
sexo feminino e assim vice-versa... como voc pde observar dizer o sexo de uma
pessoa tambm depende de uma certa lgica, observe que s ser possvel dizer se
uma pessoa de um determinado sexo se ela no pertencer ao oposto ( se no for
masculino ento feminino).
Veja o exemplo:
/*
Sntese
Objetivo: calcular a media aritmtica de um aluno e informar
a situao (APROVADO ou REPROVADO).
Entrada: duas notas do aluno.
Sada: a mdia e a situao do aluno.
*/
# include <stdio.h>
# include <conio.h>
// Declaraes
float NOTA_1, NOTA_2, MEDIA;
// Instrues
void main()
{
printf("\nInforme a primeira nota: ");
scanf("%f",&NOTA_1); //lendo a primeira nota
printf("\nInforme a segunda nota: ");
scanf("%f",&NOTA_2); //lendo a segunda nota
MEDIA=(NOTA_1+NOTA_2)/2; //calculo da media
printf("\nMedia final:%.2f",MEDIA); //mostrando a media
if(MEDIA>=7.0)
{ //fazendo o teste condicional
printf("\nAPROVADO"); // escrevendo aprovado
printf("\nParabns");
}
else {
No nosso exemplo como teste da condio foi falso ento o programa deixa de
executar o bloco de instrues que estava dentro do if(mudou o fluxo) e executou o
bloco de instrues que estava dentro do else.
Como voc observou, o else tambm pode possuir a abertura e fechamento de blocos
(chaves), Se for necessria a execuo de vrias instrues. No entanto, se somente
uma instruo tiver que ser executada no ser necessria a abertura e o fechamento
do bloco.
Para voc se tornar um professor de faculdade no mnimo voc tem que ser formado, ter
uma ps-graduao, um mestrado e falar no mnimo duas lnguas. Voc percebeu que
para voc chegar a ser um professor universitrio existem condies e que as mesmas
tem que serem verdadeiras. Com a seleo aninhada a mesma coisa, o
agrupamento de vrias selees, tal agrupamento ocorre quando um determinado bloco
de instrues deve ser executado se um grupo de possibilidades ou combinaes for
satisfeito.
/*
Sntese
Objetivo: receber trs valores e escrever o maior deles.
Entrada: trs valores.
Sada: o maior deles.
*/
# include <stdio.h>
# include <conio.h>
//Declaraes
int A, B, C, MAIOR;
//Instrues
void main()
{
printf("Informe trs valores:\n");
scanf("%d%d%d",&A,&B,&C); //lendo os trs valores
if(A >= B)
if(A >= C) //s ser testado se o if de fora for //verdadeiro
MAIOR = A;
else
MAIOR = C;
else
if(B >= C)
MAIOR=B;
else
MAIOR=C;
printf("\nMaior = %2d",MAIOR);
getch();
}
Acompanhe como isso aconteceu. Como o primeiro valor no maior que o segundo, o
teste do primeiro if deu falso, automaticamente o programa executa o bloco de
instrues que existe dentro do else, mas dentro do else temos mais duas
possibilidades, do segundo ser maior que o terceiro ou o terceiro ser maior que o
segundo onde ocorre o teste do if que est dentro do else, que tambm falso e
automaticamente o programa executa o que tem dentro do outro else.
Alguns de seus questionamentos neste momento deve ser o seguinte:Por que no teve
nenhum bloco iniciado e fechado com chaves, sendo que tem blocos que tem um if e
Mltipla escolha:
Em algoritmo foi estudado a instruo escolha que ser abordada agora como mais uma
instruo de seleo possvel na linguagem C.
No tpico anterior foi falado sobre a seleo aninhada, mas ser que ela sempre a
melhor opo para selecionar instrues que dependem da mesma condio? e se
existirem inumeras condies para selecionar as instrues? caso existam muitas
condies aninhadas a melhor opo o escolha em C conhecido como switch,
onde o caso substitudo por case e o caso contrrio por default,mas lembre-se
para selecionar uma instruo no escolha a condio analisada dever ser um caracter
ou um inteiro.
Sntese
VALOR_1 * VALOR_2;
seno
se(OPERADOR=+) ento
RESULTADO
VALOR_1 + VALOR_2;
seno
se(OPERADOR=-) ento
RESULTADO
VALOR_1 - VALOR_2;
seno
se(OPERADOR=/) ento
RESULTADO
VALOR_1 / VALOR_2;
seno
escreva(Operador invlido);
fim_se;
fim_se;
fim_se;
fim_se;
Fim
Sntese
Objetivo: simular uma calculadora nas operaes convencionais
Entrada: dois operandos e um operador.
Sada: resultado de acordo com a operao.
Declaraes
real VALOR_1, VALOR_2, RESULTADO;
caracter OPERADOR;
Inicio
escreva(Informe o primeiro valor:);
leia(VALOR_1);
escreva(Informe o operador:);
leia(OPERADOR);
escreva(Informe o segundo valor:);
leia(VALOR_2);
escolha(OPERADOR)
caso "*" : RESULTADO
VALOR_1 * VALOR_2;
VALOR_1 + VALOR_2;
VALOR_1 - VALOR_2;
VALOR_1 / VALOR_2;
RESULTADO
0;
fim_escolha;
Fim
/*
Sntese
Objetivo: simular uma calculadora
Entrada: dois operandos e um operador
Sada: resultado de acordo com a operao
*/
# include <stdio.h>
# include <conio.h>
//Declaraes
float VALOR_1,VALOR_2,RESULTADO;
char OPERADOR;
//Instrues
void main()
{
printf("Informe o primeiro valor: ");
scanf("%f",&VALOR_1);
printf("Informe o operador: ");
scanf("%c",&OPERADOR);
printf("Informe o segundo valor: ");
scanf("%f",&VALOR_2);
switch (OPERADOR)
{
//selecionando o operador
case '*' : RESULTADO=VALOR_1*VALOR_2;
break;
O comando break que voc viu logo aps a linha de comando do case, chamado
de comando de desvio, onde ele realiza um desvio incondicional.O case ser
executado at que o comando break ou o fim do switch seja alcanado.
Quando o comando break alcanado salta para linha de cdigo seguinte ao final do
switch. Caso no tivssemos inserido o break o programa continuaria testando os
outros cases e poderia causar um erro em seu programa.
Se voc tem alguma dvida sobre o switch vamos tentar tir-las agora. H trs coisas
importantes que voc tem que saber sobre o comando switch:
ESTRUTURAS DE REPETIO
Voc j deve ter alguma intimidade com as estruturas de repetio, mas antes de
comearmos logo na prtica vamos relembrar alguns conceitos bsicos.
Fazer um programa para calcular a mdia de duas notas de um aluno voc j sabe
fazer. Simples, no ? Agora imagine calcular a mdia de notas de 50 alunos. Ser que
s escrever o algoritmo 50 vezes? pode at dar certo, porm nada vivel.
Outro modo de resolver essa questo seria utilizar a mesma seqncia de comandos
novamente, ou seja, fazer um retrocesso ao incio dos comandos para cada aluno,
fazendo, portanto com que o fluxo de execuo repetisse certo trecho do programa, o
que nesta aplicao corresponderia escrever o mesmo trecho 50 vezes.
Vamos comear pelo o for que uma estrutura de repetio finita, ou seja, possui
limites fixos e uma varivel de controle dentro desse limite.
Importante: observe que estas trs sees so separadas por meio de ponto-e-vrgula
(;).
Visando uma melhor fixao do contedo, vamos primeiro fazer um algoritmo para
calcular a media de uma turma de 50 alunos em uma prova de algoritmo, usando a
estrutura de repetio para.
Sntese
Objetivo: calcular a mdia de uma turma de 50 alunos em
uma Prova de algoritmo usando para
Entrada: nota de cada aluno
Sada: a media geral da turma
Declaraes
real NOTA, ACUMULADOR, MEDIA;
inteiro CONT;
Inicio
ACUMULADOR 0;
para CONT de 1 ate 50 passo 1 faca
escreva(Informe a ,CONT, nota:);
leia(NOTA);
ACUMULADOR ACUMULADOR + NOTA;
fim_para;
MEDIA ACUMULADOR / 50;
escreva(Media geral:,MEDIA);
Fim
/*
Sntese
A mdia como s necessita ser calculada uma vez, ela tem que esta fora do bloco de
comandos do for.
ATENO: Como voc observou foi necessrio acumular as 50 notas, ento nuca se
esquea de inicializar a varivel(zero).
Observao: Como o lao for um bloco de comando e como dentro do lao tem
mais de uma linha de comando, ele tambm necessita de chaves.
Continuando com o lao for... Vamos imprimir na tela os nmero pares de 1 at 100.
Para resolvermos esse problema existem vrias formas, vamos resolver de algumas
maneiras diferentes para treinarmos as versatilidades do lao for.
/*
Sntese
Objetivo: imprimir na tela os nmeros pares entre 1 e 100
Entrada: nenhuma
Sada: os nmeros pares entre 1 e 100.
*/
# include <stdio.h>
# include <conio.h>
//Declaraes
int CONT;
//Instrues
void main()
{
for(CONT=1;CONT<=100;CONT++)
if(CONT%2==0) // testando para ver se par
printf("%1d-",CONT);
getch();
}
Como voc pde observar foi usada a varivel de controle para obtermos os nmeros
pares, ou seja, podemos usar a varivel de controle para fazermos o que quisermos,
mas temos que tomar cuidado para no mudar a ordem do lao(incrementando ou
decrementando a varivel dentro do bloco tambm) a no ser que voc use uma lgica
para isso.
Vamos ver outra forma de mostrar os nmeros pares mas s que agora em ordem
decrescente de 100 at 2...
/*
Sntese
Objetivo: imprimir na tela os nmeros pares entre 1 e
100 em ordem decrescente.
Entrada: nenhuma
Sada: os nmeros pares entre 1 e 100.
*/
# include <stdio.h>
# include <conio.h>
//Declaraes
int CONT;
//Instrues
void main()
{
for(CONT=100;CONT<=2;CONT=CONT-2)
printf("%1d-",CONT);
getch();
}
Desta vez mudamos a inicializao e a cada vez que a repetio ocorrer a varivel ser
decrementada com 2. Com isso s basta escrever a varivel de controle na tela.
while (<condio>)
{
<instrues>;
}
/*
Sntese
Objetivo: calcular a mdia de uma turma de 50 alunos em uma
*/
# include <stdio.h>
# include <conio.h>
void main()
{
// Declaraes
float NOTA, ACUMULADOR=0 , MEDIA;
int CONTADOR=1 ;
// Instrues
while(contador<=50)
// teste da condio
{
printf("Informe a %d nota: ",contador);
scanf("%f",&NOTA);
//lendo a nota
ACUMULADOR=ACUMULADOR+NOTA; //acumulando as 50
CONTADOR++;
//incrementando o contador
}
Media=ACUMULADOR / 50;
printf("\nMedia = :%2.1f",MEDIA);
getch();
}
//calculando a mdia
//mostrando a media
Observe que o lao ir repetir enquanto o contador estiver com um valor menor ou
igual a 50.
/*
Sntese
Objetivo: calcular a mdia de uma turma de X alunos em
uma Prova de algoritmo usando a estrutura "while"
*/
# include <stdio.h>
# include <conio.h>
void main()
{
// Declaraes
float NOTA, ACUMULADOR=0 ,MEDIA;
int CONTADOR=0 ;
// Instrues
printf("Informe a %d nota:",CONTADOR+1); //no altera o contador
scanf("%f",&Nota);
while(Nota>0)
{
acumulador=acumulador+Nota; //acumulando as notas
contador++; //incrementando o contador
printf("Informe a %d nota:",contador+1);
scanf("%f",&Nota);
}
Media=acumulador/contador;
//calculando a mdia
printf("\n\nMedia = %2.1f",Media);
printf("\nQuantidade = %2d",contador); //mostrando a qde.
getch();
}
Nesse caso o usurio poder calcular quantas notas ele quiser, e para encerrar a
repetio basta digitar uma nota negativa.
Vamos agora comear nossos estudos com a ltima estrutura de repetio a ser vista o
do...while que em partes a mesma coisa do repita. O do...while se diferencia do
repita no que se diz respeito a condio de sada. Por exemplo: o repita em algoritmo
executa o lao at que a condio se torne verdadeira, ou seja, enquanto falso, j em
C o do...while, executa enquanto verdadeiro assim como o for e o enquanto.
Lembrando que o do...while tambm pode ser executado com flag(finalizador) de
sada.
/*
Sntese
Objetivo: calcular a mdia de uma turma de 30 alunos em uma
prova de algoritmo usando a estrutura do..while
Entrada: nota de cada aluno.
Sada:
*/
# include <stdio.h>
# include <conio.h>
void main()
{
// Declaraes
float NOTA, ACUMULADOR=0 ,MEDIA;
int CONTADOR=1 ;
// Instrues
do{
printf("Informe a %d nota:",CONTADOR);
scanf("%f",&NOTA);
ACUMULADOR=ACUMULADOR+NOTA; //acumulando notas
CONTADOR++;
//incrementando o contador
} while(CONTADOR<=30);
MEDIA=ACUMULADOR/CONTADOR;
printf("\n\nMedia = %2.1f",MEDIA);
// mostrando a media
No exemplo anterior tivemos que inicializar o contador que controla o lao do..while
com o valor 1, porque como j havamos comentado ele executa todos os comandos
antes de testar, ento quando ele fizer o primeiro teste ele j vai ter executado o bloco
uma vez. E na hora de escrever a quantidade de execues, ou seja, as notas recebidas
ele iria escrever uma execuo a mais se no estivesse sido decrementado, porque o
contador incrementado antes do teste.
Seguindo o exemplo no qual admitimos como flag uma nota negativa, vamos faze-lo
novamente mas agora com o do..while, para voc ver a diferena entre o while e o
do...while
/*
Sntese
Objetivo: calcular a mdia de uma turma de X alunos em uma
Prova de algoritmo usando a estrutura do while
Entrada: nota de cada aluno e o flag como nota negativa.
Sada: a media geral da turma.
*/
# include <stdio.h>
# include <conio.h>
void main()
{
// Declaraes
float NOTA, ACUMULADOR=0 ,MEDIA;
int CONTADOR=0;
// Instrues
do{
printf("Informe a %d nota:",CONTADOR+1);
scanf("%f",&NOTA);
ACUMULADOR=ACUMULADOR + NOTA;
CONTADOR++;
} while(NOTA>0);
MEDIA=ACUMULADOR/CONTADOR;
printf("\nMedia = %3.2f",MEDIA);
//mostrando a media
Como voc pode observar o resultado no foi o esperado, porque como ele primeiro
executou depois testou. Quando foi digitado o valor negativo, alm de contar a nota
negativa como uma nota vlida e acumular o valor negativo tambm contou a nota como
um calculo vlido.
/*
Sntese
*/
# include <stdio.h>
# include <conio.h>
void main()
{
// Declaraes
float NOTA, ACUMUMULADOR=0 ,MEDIA;
int CONTADOR=0 ;
//Instrues
printf("Informe a %d nota:",contador+1);
scanf("%f",&NOTA);
do {
ACUMULADOR=ACUMULADOR+NOTA;
CONTADOR++;
printf("Informe a %d nota:",CONTADOR+1);
scanf("%f",&NOTA);
} while(NOTA>0);
MEDIA=ACUMULADOR/CONTADOR;
printf("\nMedia = %2.1f",MEDIA); //mostrando a media
printf("\nQuantidade = %2d",CONTADOR); //mostrando a qtde.
getch();
}
Concluso:
O comando do...while no indicado para executar tarefas que necessitam serem
testadas antes de executar.
ATIVIDADE DE FIXAO
No intuito de fixar os contedos abordados neste mdulo e verificar qual foi sua
aprendizagem sobre o mesmo sugerido alguns exerccios de fixao para serem
resolvidos. Clique sobre o diagrama a seguir e comece a solucionar a lista de exerccio
proposta.
1-Tipo de dado: especifica o tipo de valor que o comando return devolve funo,
consistindo do seu nico valor de retorno. Quando este campo no foi informado, o
compilador interpreta como seu tipo de dado padro int (inteiro).
(<tipo de dados><identificador>,.....);
) - fechar.
float MEDIA (float NOTA1,float NOTA2); // funo float com 2 parmetros float
int SOMA (int VALOR1, int VALOR2); // funo int com 2 parmetros int
char MOSTRA ( ); // funo char sem nenhum parmetro
POTENCIA (int EXP, float BASE, char RESP);
/* funo POTENCIA sem definio explcita do seu tipo assumi o tipo de dado
padro da linguagem C (int) com trs parmetros, sendo o primeiro int, o segundo
float e o terceiro char, independentemente do seu tipo de dado de retorno */
A funo deve ser declarada no incio do programa a ser elaborado por meio do seu
prottipo. Aps a criao da funo principal (funo main), o corpo da funo
desejada, e j declarada pelo seu prottipo, deve ser definido, consistindo ele na cpia
de sua declarao (prottipo), sem o ponto e vrgula (;) no final. Em seguida, similar a
funo principal, e o corpo da nova funo comea a ser definido, sempre entre chaves:
{ - abrir
} - fechar.
Exemplo - observe o corpo da funo MEDIA que teve seu prottipo (declarao)
realizado no exemplo anterior:
// Instrues
RESULTADO = (NOTA1 + NOTA2) / 2;
return (RESULTADO);
}
Este exemplo mostra uma funo que calcula a mdia entre duas notas e retorna o
resultado deste clculo. Observe qual seria o algoritmo desta funo e veja a
similaridade da criao de ambos.
incio
RESULTADO = (NOTA1 + NOTA2) / 2;
returna (RESULTADO);
fim_funo;
FUNO MAIN
Existem duas maneiras de se passar dados para dentro de uma funo, sendo elas
conhecidas como:passagem por VALOR ou por REFERNCIA.
Quando uma funo chamada, a mesma funo faz cpias dos valores enviados
como parmetros, dessa forma os valores originais no so alterados, pois a funo
manipula apenas as cpias dos mesmos.
Os valores existentes na funo que foi chamada no podem ser acessados por
outras funes, a menos que estes valores sejam enviados por parmetros para outras
funes, a partir da mesma, ou ainda retornado por ela. Todos os valores de uma
funo so apagados com o trmino da execuo da mesma.
Ao invs de se fazer uma cpia dos valores existentes na funo principal, a funo
que chamada leva como parmetro o endereo de memria original das variveis que
ela manipular durante sua execuo, por meio dos parmetros enviados a ela.
Neste tipo de passagem de parmetros, o valor original da varivel pode ser alterado,
j que a funo tem acesso ao seu endereo original, onde o dado manipulado esta
realmente armazenado na memria do computador. Quando esta funo encerrada, o
contedo enviado para ela no destrudo, pois ela somente recebeu o endereo
original pertencente a outra funo, normalmente o funo principal, que s permitir
sua destruio quando ela for encerrada. Porm, quando uma funo principal
encerrada o programa termina.
Exemplo:
int CALCULO (int &VALOR);
COMANDO RETURN
ser executado realmente, pois aps a sua execuo ele encerra a funo em execuo
e retorna para funo chamadora, imediatamente.
PROCEDIMENTO X FUNO
O procedimento corresponde a uma funo do tipo void (tipo de dado indefinido) que
no possui o comando return devolvendo algum valor para a funo chamadora. Desta
forma se for preciso armazenar os dados coletados durante a execuo da funo pode
-se recorrer a passagem de parmetros por referncia, uso de variveis globais ou ainda
alguns outros mtodos que sero estudados mais adiante sobre esta linguagem de
programao computacional.
Exemplo:
/*
Sntese
Objetivo:Determinar se um estudante foi aprovado ou reprovado
Entrada: Mdia
Sada: Mensagem informativa de "Aprovado" ou "Reprovado"
*/
#include <stdio.h>
#include <conio.h> // de acordo com a verso do Dev-C pode ser usada <conio.c>
// funo principal
{
// Declaracoes
float MEDIA;
int VERIFICA;
int SITUACAO (float VAL);
// Instrucoes
// l a mdia do aluno
// Instrucoes
if(VAL >= 7)
AUXILIAR=1;
else
AUXILIAR=2;
return(AUXILIAR); // valor de AUXILIAR retornado para funo chamadora
}
/* Aps a execuo do comando return a varivel AUXILIAR e o parmetro
VAL so apagados da memria, ou seja, so destruidos */
Supondo uma execuo, onde o usurio tenha informado o valor 8.9 para a varivel
MEDIA, observe o resultado do programa acima na tela a seguir:
Exemplo:
/*
Sntese
Objetivo: Ler o nome e pas de uma pessoa
#include <stdio.h>
#include <conio.h>
// Instrues
puts("Informe o seu nome:");
gets(NOME); // l o nome da pessoa
puts("Informe o seu pas:");
gets(PAIS);
// l o pas da pessoa
Exemplo:
/*
Sntese
Objetivo: Calcular o ndice de Massa Corporal (IMC) de uma pessoa.
Entrada: peso e altura.
Sada: Valor do IMC e sua situao (abaixo, acima ou no peso correto).
*/
include <stdio.h>
include <stdlib.h>
int main(void)
{
//Declaraes
float PESO, ALTURA;
int OPCAO;
//Instrues
printf(Informe o peso e a altura:);
scanf(%f%f,&PESO,&ALTURA);
OPCAO = SITUACAO (PESO, ALTURA);
switch(OPCAO)
{
case 1:
printf(Voc est abaixo do peso.);
break;
case 2:
printf(Voc est com o peso adequado para sua altura.);
break;
case 3:
printf(Voc est acima do peso.);
break;
case 4:
printf(Voc est obeso.);
}
getch();
return(0);
}
// Corpo da funo
int SITUACAO (float VALOR1, float VALOR2)
{
//Declaraes
float RESULTADO;
float IMC(float PESO1, float ALT); // declarao de outra funo local
//Instrues
RESULTADO = IMC(VALOR1,VALOR2);
if(RESULTADO <=18.5)
return(1);
else
if(RESULTADO <= 24.9)
return(2);
else
if(RESULTADO <= 29.9)
return(3);
else
return(4);
}
float IMC(float PESO1, float ALT)
{
//Declaraes
float TOTAL;
// Instrues
TOTAL = PESO1 / (ALT * ALT);
return(TOTAL);
ATIVIDADE DE FIXAO
No intuito de fixar os contedos abordados neste mdulo e verificar qual foi sua
aprendizagem sobre o mesmo sugerido alguns exerccios de fixao para serem
resolvidos. Clique sobre o diagrama que inicia a lista de exerccio e boa prtica com os
mesmo!!