Buscar

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 98 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 98 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 98 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

Continue navegando


Prévia do material em texto

Laboratório de Programação I 
APRESENTAÇÃO 
25/07/2013 Prof. Jair Alves Barbosa 
25/07/2013 Laboratório de Programação I 2 
Apresentação 
• Conteúdo programático 
• Recursos e metodologia de ensino 
• Bibliografia 
• Cronograma das atividades 
• Avaliação 
25/07/2013 Laboratório de Programação I 3 
Conteúdo Programático 
• Revisão -Estrutura de Dados Homogênea (vetor e 
matriz) 
• Revisão- Manipulação de Strings 
• Tipos de dados definidos pelo usuário 
• Apontadores (ponteiros) 
• Estrutura de Dados Heterogênea (estrutura) 
• Arquivos 
• Alocação Dinâmica 
• Pesquisa e Ordenação 
25/07/2013 Laboratório de Programação I 4 
Recursos e Metodologia de ensino 
• Aulas expositivas teóricas 
• Aulas práticas em laboratório 
• Exercícios de fixação usando exemplos reais 
• Desenvolvimento de atividades extra-classe 
• Diversificação dos métodos de exposição do 
conteúdo disciplinar de acordo com a 
necessidade da abordagem explicativa 
25/07/2013 Laboratório de Programação I 5 
Bibliografia 
• Básica 
SCHILDT, H., C Completo e Total, Editora Makron Books 
do Brasil Editora Ltda, 1996. 
 
• Complementar 
EVARISTO, J., Aprendendo a programar programando em 
linguagem C, Book Express, 2001. 
 
MIZRAHI, V. V., Treinamento em Linguagem C, Curso 
Completo, Módulos 1 e 2, Makron Books do Brasil 
Editora Ltda,1990. 
 
DEITEL, H. M. e Deitel, P. J., C++ Como Programar, 
2001. 
25/07/2013 Laboratório de Programação I 6 
Cronograma das Atividades 
• O período letivo é de 26/07 até 06/12/2013. 
• Todas as aulas utilizarão o laboratório em 
período integral 
• Existem 36 encontros previstos para as 
turmas, onde diversas atividades estão 
prevista para serem realizadas neste plano 
• A última aula deste semestre corresponde a 
aula síntese de cada turma 
25/07/2013 Laboratório de Programação I 7 
AVALIAÇÃO 
• Consiste em três avaliações (P1,P2,P3) Cada uma destas 
avaliações consiste no resultado obtido pelo aluno na 
avaliação presencial (AP) e de uma avaliação virtual (AV) 
que corresponde a um prêmio de 10% da mesma nota. 
 Existirá ainda mais uma quarta avaliação de recuperação 
(PR), em caráter de recuperação/aprovação na disciplina, 
para substituição da menor nota entre P1, P2 e P3 
 
Onde: 
P1=(AP1)+(AV1x 0,1) 
P2=(AP2)+(AV2 x 0,1) 
P3=(AP3)+(AV3 x 0,1) 
Obs.: P1, P2 e P3 estão limitados ao máximo de 10 
pontos. 
 
 
25/07/2013 Laboratório de Programação I 8 
AVALIAÇÃO 
 
• As notas inferiores a 4.0, em qualquer uma destas avaliações 
(AP1, AP2 ou AP3), obrigam o estudante a cumprir a 
atividade de reforço, conforme plano elaborado com o 
professor/monitor 
 
• A avaliação desta disciplina também é baseada no 
acompanhamento de atividades realizadas durante todo o 
semestre, tendo cada uma o seu respectivo peso: 
– 45% - corresponde as avaliações P1, P2 e P3; 
– 10% - desenvolver e entregar o estudo dirigido (D); 
– 10% - elaborar e entregar exercícios e tarefas solicitadas 
(EX); 
– 35% - desenvolver e apresentar o projeto final (PF). 
 
Média Final=(1,5xP1+1,5xP2 + 1,5xP3 + EX x 1 + D x 1+ PF x 3,5) 
 10 
25/07/2013 Laboratório de Programação I 9 
AVALIAÇÃO - continuação 
• Para os que não atingirem sete (7,0) será realizada a 
avaliação de recuperação, que poderá substituir a menor 
nota ente P1, P2 ou P3 e o calculo da Média será refeito. 
 
 
• PR poderá ser usada como exame final onde são 
abandonadas todas as outras notas e seu resultado será 
considerado unicamente na avaliação do estudante, sendo 
esta avaliação o indicador que mostrará se o estudante está 
apto ou não para continuar na próxima disciplina desta 
subárea. Neste caso serão desprezadas todas as notas 
anteriores, ficando ainda a média do aluno na disciplina 
limitada a nota 7,0 (sete), o que indica a aprovação do 
mesmo. 
25/07/2013 Laboratório de Programação I 10 
• A atividade de reforço será obrigatória quando o estudante 
não obtiver nota superior a 4,0 em qualquer uma das 
provas, sendo a mesma realizada semanalmente até a 
próxima avaliação (prova). Alcançando nota superior a 
quatro esta atividade deixa de ser obrigatória. Caso sua 
nota seja igual ou inferior a 4.0 na nova avaliação, o 
estudante permanece em atividade de reforço até a 
próxima avaliação (prova). 
 
• A falta na atividade de reforço deverá ser justificada 
diretamente ao professor da disciplina 
AVALIAÇÃO - continuação 
25/07/2013 Laboratório de Programação I 11 
APOIO À DISCIPLINA 
• Apoio virtual: 
• e-mail professor: jairab@yahoo.com.br 
• Moodle: http://moodle.catolicavirtual.br 
• SAE : http://sae.ucb.br 
• Siteprogramar : http://cae.ucb.br/conteudo/programar/ 
 programação computacional laboratórios LAB I 
• Servidor de arquivos: ftp://materias.ucb.br 
Login: aljair  turma022013/Lab1BCC 
Senha:alunoftp 
• Monitores 
• Grupo de Estudos 
• Biblioteca 
• Softwares: 
• devC++ 
 
 
25/07/2013 Laboratório de Programação I 12 
Considerações ... 
25/07/2013 Laboratório de Programação I 13 
• Utilizar Lógica ==> colocar Ordem no Pensamento 
Para objetivo 
específico 
Algoritmo 
• Ex.: receita de um bolo, manual de instruções, etc. 
Algoritmo 
Revisão 
25/07/2013 Laboratório de Programação I 14 
• Mover os três discos de uma haste para outra 
• Regras: 
c 
b 
a 
1 2 3 
Solução 
move o disco a para a haste 2 
move o disco b para a haste 3 
move o disco a para a haste 3 
move o disco c para a haste 2 
move o disco a para a haste 1 
move o disco b para a haste 2 
move o disco a para a haste 2 
Torre de Hanói 
– pode-se mover apenas um 
disco de cada vez 
 
– nunca pode ser colocado um 
disco maior sobre um menor 
Revisão 
25/07/2013 Laboratório de Programação I 15 
Algoritmo 
Programa 
Linguagem de 
computação 
Algoritmo X computador 
Revisão 
25/07/2013 Laboratório de Programação I 16 
Representação ou descrição do Algoritmo 
Revisão 
• Português Estruturado (Portugol) 
 
• Diagrama de Chapin (Nassi e Schneider) 
 
• Fluxograma 
25/07/2013 Laboratório de Programação I 17 
Revisão 
• Inteiro: toda informação numérica inteira (não fracionária) 
negativa, nula ou positiva. Ex: 100, 0, -3 
• Real: toda informação numérica pertencente ao conjunto dos 
números reais (inteiras ou fracionárias), (negativa, nula ou 
positiva). Ex: 100, 0, -3, 1,7, 1000,50. 
• Caractere: sequência contendo letras, números e símbolos 
especiais (caracteres alfanuméricos) 
– essa sequência deve ser indicada entre aspas (“ “) 
– Ex.: “Taguatinga - DF”, “356-9025”, “Desconto 10%” 
– também chamado de string ou cadeia 
• Lógico: conjunto de valores falso ou verdadeiro. 
– Esse tipo só apresenta um desses valores 
– também chamado de booleano 
Tipos primitivos ou escalares de informação processada 
 pelo computador: 
25/07/2013 Laboratório de Programação I 18 
01) Qual o resultado produzido pelo algoritmo: 
Exercícios de Revisão 
algoritmo “revisao” 
//Síntese: ? 
//Declarações 
var 
a,b,c:logico 
x,y:real 
v,z:inteiro 
inicio 
b verdadeiro 
a  falso 
c  falso 
x 1.5 
y  3.2 
x  x + 1 
se ((c) ou (( x+y) > 5) ou (nao a e b)) entao 
 z  0 
senao 
 z  0 
fimse 
escreva (z) 
fimalgoritmo 
25/07/2013 Laboratório de Programação I 19 
Exercícios de Revisão 
02) Qual o resultado produzido pelo algoritmo: 
algoritmo “revisao” 
//Síntese: ? 
//Declarações 
var 
resultado:real 
num: inteiro 
inicio 
 escreva(“ Numero =“) 
leia (num) 
se (num > 0) entao 
 resultado  num* 10 
senao 
 resultado  num * 100 
fimse 
escreva (resultado) 
fimalgoritmo 
Valores para teste: 
10, -10 e –1000001 
Verificar precisão? 
25/07/2013 Laboratório de Programação I 20 
Exercícios de Revisão 
03) Faça um algoritmo que leia o número do DDD e 
informe a qual cidade pertence, considerando as 
seguintes localidades: 
– 61 - Brasília 
– 71 - Salvador 
– 11 - São Paulo 
– 21 - Riode Janeiro 
– 32 - Juiz de Fora 
– 19 - Campinas 
– 27 - Vitória 
– 31 - Belo Horizonte 
– Ligação NÃO pode ser feita por esta operadora telefônica (MSG) 
=> Após elaborar o algoritmo faça o teste (chinês) na 
solução proposta. 
=> Se você ainda não pensou 
nisso, o seu usuário pode 
querer fazer mais que uma 
ligação para mais que um lugar. 
Corrija o algoritmo proposto 
para realizar ligações enquanto 
o usuário desejar 
25/07/2013 Laboratório de Programação I 21 
04) Elabore um algoritmo que permita a escolha das 
frutas especificadas abaixo, sendo elas identificadas por 
meio do seu valor correspondente. 
 1 => ABACAXI 
 2 => MAÇA 
 3 => PERA 
Usando a instrução repita...até identifique quais as 
frutas desejadas por seu usuário, lembrando que ele pode 
desejar somente um tipo de fruta, ou mais que um. 
Porém deve existir o cuidado na identificação correta das 
frutas, pois o feirante só possui estes três tipos. Sendo 
assim o usuário que escolher uma fruta não existente 
deve ser notificado que a fruta não esta disponível e a 
solicitação deve ser feita novamente sobre qual fruta ele 
deseja. 
Exercícios de Revisão 
25/07/2013 Laboratório de Programação I 22 
Exercícios de Revisão 
05) Sendo H = 1+1/2+1/3+ ... +1/N. Prepare uma algoritmo, 
usando PARA, para calcular H, sendo N fornecido pelo 
usuário. 
Algoritmo “ revisao” 
//Síntese: objetivo: calcular o valor final da sequencia 
// entrada: um número (n) 
// saída: o valor da sequencia (h) 
//Declarações 
var 
 contador, n: inteiro 
 total : real 
inicio 
 total  0 
 escreva(“ Qtde de termos = “) 
 leia(n) 
 para contador de 1 ate n passo 1 faca 
 total  total + 1 / contador 
 fimpara 
 escreva(“Resultado = ”, total) 
fimalgoritmo 
25/07/2013 Laboratório de Programação I 23 
Programa (ou código) 
 
 Conjunto de instruções seqüenciais que solicita que o 
computador execute alguma ação (ou atividade) por 
meio de uma comunicação, no nosso caso, usando 
uma linguagem de programação 
 
Fonte - escrito na linguagem desejada - no caso „.C‟ ou „.CPP‟ 
 
Objeto - fonte traduzido em linguagem de máquina - „.OBJ‟ 
 
Executável - agrega ao código objeto algumas rotinas por 
meio da linkedição, gerando um programa „.EXE‟ 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 24 
Qualquer linguagem de programação pode ser 
interpretada ou compilada, onde a interpretação ou a 
compilação trabalham sobre o programa/código fonte 
 
Compilador X Interpretador 
 
• O ser humano compreende a linguagem natural 
(português, chinês, ...), enquanto que o computador 
entende a linguagem de máquina (binária – 0 e 1) 
tradutor 
Ser humano computador 
Interpretando ou compilando 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 25 
• Combina elementos de linguagens de alto nível (Basic, 
Pascal, ...) com a funcionalidade da linguagem de baixo 
nível (Assembler, ...) 
• Linguagem Portável (portabilidade) 
• Não efetua nenhuma verificação em tempo de execução 
(responsabilidade do programador) Ex. tamanho de 
vetores e matrizes 
• O padrão ANSI implementa o conceito de protótipo de 
função 
Alto 
 
Baixo 
Intermediário Nível de linguagem 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 26 
• A função é o principal componente estrutural em C 
• Programa em C consiste em uma ou várias funções (o 
termo programa e função se confundem em C) 
• A função pode ter qualquer nome(padrão de um 
identificador), mas a função main é obrigatória, pois é a 
partir dela que inicia a execução de um programa em C 
• Esta presente em C o conceito de bloco de instruções 
(que é um grupo de comandos de programa conectado 
logicamente e tratado como uma unidade) 
• 32 palavras reservadas (27 originais e 5 ANSI) 
Revisão de Programação 
Estrutura de programa na linguagem C 
25/07/2013 Laboratório de Programação I 27 
CUIDADOS na Elaboração de Programas em C 
 
• A linguagem é case sensitive (maiúscula/minúscula) 
• Uso de texto estruturado na elaboração do programa 
• A função main( ) é obrigatória em cada programa 
• Constantes do tipo string são entre aspas duplas ("), 
enquanto que um único caractere é entre aspas simples(') 
• Comentário é /* no início e */ no fim ou // resto linha 
• Identificadores usam letras, números e sublinha ´_´ 
• Toda instrução deve estar entre as chaves ´{´, ´}` e 
encerrar-se com um ´;´ que é parte da instrução 
 
 Parênteses certificam uma função e „;‟ uma instrução 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 28 
Palavras Reservadas 
auto double int struct 
 break else long switch 
 case enum * register typedef 
 char extern return union 
 const * float short unsigned 
 continue for signed * void * 
 default goto!! sizeof volatile* 
 do if static while 
 * ANSI 
Continuação dos cuidados com programas em C 
•Não usar palavras reservadas como identificadores 
(nome de funções, variáveis, entre outros nomes) 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 29 
Linguagem C X Linguagem C ++ 
 
• A linguagem C++ é um superconjunto da linguagem 
C, consistindo em uma versão estendida e melhorada 
de C, projetada para suportar programação orientada 
a objetos (OOP - Oriented Object Programming) 
• Como C++ é construído sobre os fundamentos de C, 
não será possível programar em C++ sem conhecer C 
• Compiladores C++ também são compiladores C 
padrão ANSI completo 
C C++ 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 30 
Tipo de Dados Básicos (escalares) 
Tipo Tamanho em bits Faixa 
char 8 -128 a 127 
int 32 -2147483648 a 2147483647 
float 32 3.4E-38 a 3.4E38 
seis dígitos de precisão 
double 64 1.7E-308 a 1.7E308 
dez dígitos de precisão 
void 0 sem valor 
• Todos os outros tipos de dados em C são baseados em 
um desses cinco tipos 
• A definição do tipo de dados permite que o computador 
aloque e mantenha livre um espaço exato de memória 
que vai ser utilizado pelo “programa” 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 31 
Modificadores de Tipo de Dados 
• signed • long 
• unsigned • short 
 
Por exemplo: short int (16 bits) faixa ( -32768 a 32767) 
 unsigned char (8 bits) faixa de 0 a 255 
• Todo modificador pode ser aplicado aos tipos char e int 
• O tipo long pode ser aplicado a double (long float tem o 
mesmo significado que double) 
• O signed com int é redundante 
Revisão de Programação 
25/07/2013 Algoritmo e Programação 32 
IDENTIFICADORES 
• São alguns objetos definidos pelos usuários (nome de 
variáveis, constantes, funções, etc.) 
• Na criação de nomes para estes objetos usar somente 
letras, números e sublinhado („_‟) 
• Não usar caracteres especiais no nome destes objetos 
• O primeiro caractere do nome deve ser letra (podendo ser 
sublinhado, mas deve ser evitado (reduz a portabilidade) 
• Letras maiúsculas são diferentes de minúsculas 
• Não pode ser igual a uma palavra reserva em C 
• Devem ser de fácil reconhecimento (auto explicativo) 
 
Exemplos: nroFunc, soma_total, totalAlunos (correto) 
 1x, jul!o, &teste, ácido (incorreto) 
 _total, _mes_5 (evitar) 
Iniciando a Programação 
25/07/2013 Algoritmo e Programação 33 
OPERADOR DE ATRIBUIÇÃO 
 
 Realiza o armazenamento de um determinado 
valor, representado a direita do símbolo de igual (=), a 
um local de armazenamento representado por um 
identificador a esquerda do símbolo (=). 
 
 Este valor a ser armazenado no identificador a 
esquerda do símbolo poder ser: 
• um valor único  teste = 5 
• o resultado de uma expressão  total = 10 + 20 
 
Forma Geral 
 <identificador> = <expressão> 
Pode ser usado em atribuições múltiplas : 
x = y = z = 2 
Iniciando a Programação 
à direita à esquerda 
símbolo 
25/07/2013 Laboratóriode Programação I 34 
CONSTANTE 
• Posição nomeada de memória usada para guardar um 
único valor que não pode ser modificado pelo programa 
• Todas constantes em C devem ser declaradas antes de 
serem usadas 
• Forma geral de definição de constate 
const <tipo de dado> <identificador> = <valor>; 
onde 
 <tipo de dado> - é qualquer tipo de dado válido em C 
 <identificador> - nome do identificador 
 const -palavra reservada que identifica a criação de uma constante 
 <valor> - valor atribuído a constante 
 
Exemplo: const int valor = 30; 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 35 
ATRIBUINDO VALORES A CONSTANTES 
• Recebe apenas um valor inicial não podendo ser 
alterado pelo programa (valor fixo e inalterável) 
 const int contador = 100; 
 
• Protege os valores passados como parâmetros de uma 
função 
 int calculaProduto (const int a, const int b) 
{ 
 a += b; /* não pode ser efetuada - erro de sintaxe */ 
 return (a*b); 
} 
 
• Muitas funções da biblioteca C padrão usam const em 
suas declarações de parâmetros 
 size_t strlen (const char *str) 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 36 
VARIÁVEL 
• Posição nomeada de memória usada para guardar um 
valor que pode ser modificado pelo programa 
• Todas variáveis em C devem ser declaradas antes de 
serem usadas 
• Forma geral da definição de variável 
<tipo de dado> <identificador>; 
onde 
 <tipo de dado> é qualquer tipo válido mais qualquer modificador 
 <identificador> um ou mais nomes de identificadores separados por „,‟ 
 
Exemplos: short int contador, idProcesso; 
 unsigned int empregados; 
 double balancoAtual; 
Revisão de Programação 
25/07/2013 Algoritmo e Programação 37 
Operadores Binários 
= atribuição 
+ adição 
- subtração 
* multiplicação 
/ divisão (resultado depende 
 dos operandos) 
% módulo (mod-resto da divisão) 
 
Operadores Unário 
+ - menos (troca de sinal) 
EXPRESSÕES - Operadores Aritméticos 
Incremento e Decremento 
++ incremento 
-- decremento 
 
Prefixo a++ ou a-- 
Sufixo ++a ou --a 
 
Precedência 
1 ++ -- 
2 * / % 
3 + - 
4 = 
Iniciando a Programação 
25/07/2013 Algoritmo e Programação 38 
EXPRESSÕES - Operadores Aritméticos de Atribuição 
 
Estes operadores (+= , -= , *= , /= , %= ) são usados com uma 
variável a sua esquerda e uma expressão a sua direita. A operação 
consiste em atribuir um novo valor à variável que dependerá do 
operador e da expressão à direita 
 
<variável> <operador> = <expressão> 
 
Exemplos: i + = 2; equivale i = i + 2; 
 x * = y + 1; equivale x = x * (y + 1); 
 t / = 2.5; equivale t = t / 2.5; 
 p % = 5; equivale p = p % 5; 
 d - = 3; equivale d = d – 3; 
Iniciando a Programação 
25/07/2013 Algoritmo e Programação 39 
EXPRESSÕES - Operadores Relacionais 
 
Todas as expressões relacionais retornam true ou false 
(verdadeiro ou falso respectivamente) 
 
Operadores . 
igualdade = = 
diferente ! = 
maior que > 
menor que < 
maior ou igual > = 
menor ou igual < = 
 
IMPORTANTE 
 
O valor zero (0) é considerado 
FALSO e qualquer valor 
diferente de zero é 
considerado VERDADEIRO, 
sendo representado pelo valor 
inteiro um (1), normalmente. 
Iniciando a Programação 
25/07/2013 Algoritmo e Programação 40 
EXPRESSÕES - Operadores Lógicos 
 
 Operador Símbolo 
 E (and) && 
 OU (or) || 
 NÃO (not) ! 
Exemplos: 
 
 (E) se ((x = 5) e (y = 5)) entao 
 if ((x = = 5) && (y = = 5))  em programação 
 
 (OU) se ((x = 5) ou (y = 5)) entao 
 if((x==5)||(y==5))  em programação 
 
 (NÃO) se (nao (x = 5)) entao 
 if ( ! (x = = 5))  em programação 
  que seria o mesmo que: se ( x <> 5) entao ou if ( x != 5 ) 
Iniciando a Programação 
25/07/2013 Algoritmo e Programação 41 
Exercício Proposto 
1.) Elabore um algoritmo que armazene as três notas de 
um aluno, 5.5, 7.2 e 8.3 em três variáveis diferentes. 
Após o armazenamento, realize o cálculo da média 
aritmética das notas informadas e o apresente. 
2) Depois que o algoritmo estiver pronto e funcionando 
corretamente, faça a sua tradução para a linguagem 
que começamos a estudar, onde as declarações e a 
expressão do cálculo deverão ser escritas baseadas 
nesta linguagem. 
25/07/2013 Laboratório de Programação I 42 
Os programas na linguagem C constituem-se em uma ou 
várias funções. 
FUNÇÃO main() 
 
• A função main é obrigatória em um programa na linguagem 
C, e marca o ponto de início da execução do programa 
• Se um programa consistir em apenas uma função esta será 
main() 
• Todas as instruções devem estar dentro das chaves que 
iniciam e terminam a função (bloco de instrução) e são 
executadas na ordem seqüencial de escrita no programa 
• Instruções em C sempre encerram com „;‟ , pois ele faz 
parte da instrução e não é somente um simples separador 
Revisão de Programação 
25/07/2013 Algoritmo e Programação 43 
DIRETIVA include 
 
Provoca a inclusão de um programa fonte em outro, instruindo 
ao compilador a ler e agregar o arquivo no programa que tiver a 
diretiva include 
 
 #include <arq> arquivo na pasta(diretório) padrão 
 ou 
#include “arq” arquivo na pasta (diretório) especificado 
 
arq - esta representando o nome do arquivo a ser incluído 
 
O símbolo de sustenido „#‟, antes da diretiva include, é um 
sinal para o pré-processador, que têm a função de examinar o 
programa fonte em C e executar certas modificações, baseadas 
nas instruções das diretivas 
Elaborando um Programa 
25/07/2013 Algoritmo e Programação 44 
DIRETIVA define 
Usada para melhorar o entendimento de um programa através da 
substituição de constantes simbólicas por nomes mais 
apropriados. Ela não tem nenhum tipo específico (int, char, ...), 
mas simplesmente faz a substituição de texto. 
Como o pré-processador é executado antes da compilação, seu 
compilador somente vê os valores trocados e nunca as constantes. 
 
#define <identificador> <texto> 
Elaborando um Programa 
valor a ser substituído nome atribuído a constante (letras maiúsculas) 
Exemplo: #define PI 3.14159 
 #define ERRO printf(“Encontrado um erro.\n ”) 
 
Observações 
 Não existe „;‟ nas diretivas de pré-processador 
 Nunca deve existir espaço em branco no identificador, pois 
será interpretado como o fim do identificador e o início do texto 
25/07/2013 Algoritmo e Programação 45 
FUNÇÃO printf() 
 
• Uma das funções de saída que pode ser usada em C 
• A <expressão_controle> pode conter caracteres que serão 
exibidos na tela e códigos de formatação dos argumentos 
• A <lista_de_argumentos> é formada pelos argumentos que serão 
usados pela função (constantes, variáveis,expressões,etc.) 
• Faz parte da biblioteca padrão da linguagem C e tem seu protótipo 
definido em (stdio.h) e pode receber um número variável de 
argumentos (separados por „,‟) 
 printf(“<expressão_controle>”,<lista_de_argumentos>); 
 
Exemplo: printf(“Elaborando um programa”); 
 printf(“Esta é a letra %c”, „C‟); 
 printf(“Escreva o valor %d \n %s”,2, “por extenso”); 
Elaborando um Programa 
25/07/2013 Laboratório de Programação I 46 
FUNÇÃO printf() 
Alguns caracteres não podem ser obtidos diretamente do teclado 
(como mudança de linha), por isso tem a sua representação feita 
por códigos especiais usando um controlador („\‟) com a 
combinação de outro caractere. 
 
Código Significado Código Formato 
\n nova linha %c caractere simples 
\r retorno do cursor %d decimal 
\t tab %e notação científica 
\b retrocesso %f ponto flutuante 
\” aspas %g %e ou %f (o mais curto) 
\\ barra %o octal 
\f salta página de formulário %s cadeia de caracteres 
\0 nulo %u decimal sem sinal 
\x caractere gráfico (este símbolo %x hexadecimal 
 escreve códigos acima de 127 %ld decimal longo 
 decimal) \xdd onde dd é hexad. %lf ponto flutuante longo 
Revisão deProgramação 
25/07/2013 Laboratório de Programação I 47 
FUNÇÃO printf() 
• Para a impressão do caractere % são usados dois % (%d %%) 
• É possível estabelecer o tamanho mínimo de saída em printf 
• A formatação com „-‟ à frente alinha a saída a esquerda, 
enquanto que a direita consegue-se pela especificação coerente 
dos tamanhos 
• A saída formatada pode ser completada com zeros a esquerda 
 
Exemplos: 1) printf(“Reajuste = %d %%”,valor); saída Reajuste = 5 % 
 2) printf(“Tem %4d alunos”, 50); saída Tem 50 alunos 
 2) printf(“Gasolina= %3.2f ltr.”, 1.629); saída Gasolina=1.63 ltr. 
 3) printf(“%5.2f %5.2f ”,8.0, 15.32); saída 8.00 15.32 
 3) printf(“%5.2f %5.2f ”,15.8, 0.7); saída 15.80 0.70 
 3) printf(“%-5.2f %-5.2f ”,8.0, 15.32); saída 8.00 15.32 
 3) printf(“%-5.2f %-5.2f ”,15.8, 0.7); saída 15.80 0.70 
 4) printf(“%06d”, 25); saída 000025 
Revisão de Programação 
25/07/2013 Algoritmo e Programação 48 
FUNÇÃO scanf() 
• Permite ler dados formatados da entrada padrão (teclado) 
• A <expressão_controle> deve conter os códigos compatíveis 
com a formatação dos argumentos (similar ao printf) 
• A <lista_de_argumentos> nesta função deve conter os 
endereços das variáveis (usar operador de endereço (&) em C) 
• O símbolo %* indica que será lido um valor do tipo 
especificado, mas não será atribuído a nenhuma variável (não 
devendo ter parâmetros na lista de argumentos) 
• Faz parte da biblioteca padrão da linguagem C, necessita dos 
protótipos definidos em (stdio.h) e pode receber um número 
variável de argumentos (separados por „,‟) 
 
scanf(“<expressão_controle>”,<lista_de_argumentos>); 
 
Exemplo: scanf(“%f ”, &valor); 
Elaborando um Programa 
endereços 
25/07/2013 Algoritmo e Programação 49 
FUNÇÃO scanf() 
O endereço de uma variável é o local onde ela localiza-se na 
memória. O endereço representa o primeiro byte ocupado por ela 
 
Código Formatação da Função 
%c leia um único caractere 
%d leia um inteiro decimal 
%e leia um número em notação científica 
%f leia um número em ponto flutuante 
%o leia um inteiro octal 
%s leia uma série de caracteres 
%u leia um decimal sem sinal 
%x leia um número hexadecimal 
%l leia um inteiro longo 
%lf leia um double 
Exemplo: 
 
int main(void) 
{ 
int num; 
num = 5; 
printf(“Valor= %d\n”, num); 
printf(“Endereço=%u,&num ); 
} 
 
Possível saída em tela 
Valor=5 
Endereço=2293620 
Elaborando um Programa 
25/07/2013 Laboratório de Programação I 50 
FUNÇÃO clrscr() 
 
Esta função efetua a limpeza de toda a tela (ou janela). Esta 
limpeza consiste em apagar todos os símbolos (ou caracteres) que 
estavam sendo apresentados em instruções anteriores em uma tela 
de no máximo 24 linhas e 80 colunas. 
Com a limpeza de toda a tela o cursor fica posicionado na 
primeira posição dela, ou seja, no canto superior esquerdo. 
 
Exemplo: 
 : 
 printf(“Qual o valor agregado: \n”); 
 scanf(“%f”,&valor); 
 clrscr( ); 
 printf(“O resultado %f”, total); 
 : 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 51 
FUNÇÃO getche() 
Esta função lê um caractere do teclado, no instante em que foi 
pressionado, apresentando-o na tela 
 int main (void) 
 { char tecla; 
 tecla = getche(); 
 } 
FUNÇÃO getch() 
Esta função lê um caractere do teclado, no instante em que foi 
pressionado, não apresentando-o na tela 
 int main (void) 
 { char tecla; 
 tecla = getch(); 
 } 
 
Estas duas funções não aceitam argumentos e retornam o valor lido 
após serem acionadas 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 52 
FUNÇÃO getchar() 
Lê um caractere da console após pressionada a tecla “enter”, e 
retorna „-1‟ se nada foi lido. 
Exemplo: : 
 c = getchar( ); 
 : 
FUNÇÃO putchar() 
Escreve o valor passado pelo argumento da função, que pode ser 
uma outra função. 
Exemplo: : : 
 c = getchar( ); ou como putchar(getchar()); 
 putchar(c); : 
 : 
Revisão de Programação 
25/07/2013 Algoritmo e Programação 53 
TELA DE SAÍDA OU DE EXECUÇÃO 
 A execução de um programa elaborado no compilador 
C abre uma nova janela que possui um tamanho padrão. 
Este tamanho permanece o mesmo do ambiente DOS, 
mas agora fazendo a rolagem da janela, quando ela é 
necessária (extrapola o tamanho padrão). 
 Para aproveitar melhor toda janela, sem usar a 
rolagem, trabalha-se com uma dimensão de 24 linhas, por 
80 colunas (tamanho padrão do DOS).. 
Linhas (1 => 24) 
Colunas (1 => 80) 
Informe sua idade 
25 
 
Sua fase é adulta 
Obs.: A função 
clrscr() limpa só 
o que estiver 
contido na tela 
padrão(24x80) 
25/07/2013 Laboratório de Programação I 54 
 Conhecendo as medidas da janela de saída pode-se 
trabalhar melhor a execução de um programa. 
 Com este intuito, é usada a função gotoxy que permite 
o posicionamento correto na janela de execução. 
 
FUNÇÃO gotoxy() 
 Esta função oferece o posicionamento exato do cursor, 
possibilitando uma apresentação mais amigável na 
execução de qualquer programa em C. 
gotoxy(<coluna> , <linha>); 
 
Exemplo: 
 : 
 gotoxy(24,11); 
 printf("Aula de Laboratorio de Programacao"); 
 : 
REVISÃO - TELA DE SAÍDA OU DE EXECUÇÃO 
25/07/2013 Laboratório de Programação I 55 
03) Elabore um programa que solicite ao usuário 
um valor percentual a ser calculado. Este cálculo 
deverá ocorrer sobre um valor constante igual a 
555. O programa deverá calcular o percentual 
desejado e apresentar o resultado calculado deste 
percentual. O programa deverá acionar o notepad, 
calculadora e terminar dando uma mensagem no 
meio da tela 
Exercício Proposto 
25/07/2013 Algoritmo e Programação 56 
Estrutura Condicional 
Estrutura if – else – if 
if (<condição 1>) 
 instrução 1; 
else if (<condição 2>) 
 instrução 2; 
else if (<condição 3>) 
 instrução 3; 
else 
 <instrução padrão>; 
 
uma instrução será executada 
quando uma condição for 
verdadeira. A instrução padrão é 
opcional e só é executada quando 
todas as outras condições forem 
falsas 
Simples 
if (<condição>) 
 instrução; 
a instrução será executada se a 
expressão for verdadeira 
 
Composta 
if (<condição>) 
 instrução 1; 
else 
 instrução 2; 
a instrução 1 será executada se 
a expressão for verdadeira, senão 
a instrução 2 será executada 
Elaborando um Programa 
25/07/2013 Algoritmo e Programação 57 
Estrutura Condicional Aninhada 
if (<condição 1>) 
{ 
 if (<condição 2>) 
 instrução 1; 
 else 
 instrução 2; 
} 
else 
{ 
 if (<condição 3>) 
 instrução 3; 
 else 
 instrução 4; 
} 
•Um condicional aninhado é 
simplesmente um if dentro de 
outro if externo 
 
•O único cuidado que deve-se 
ter é com a identificação de 
qual else pertence a 
determinado if 
 
•O emprego de técnicas de 
texto estruturado facilitam a 
correta identificação da 
estrutura condicional aninhada 
Elaborando um Programa 
25/07/2013 Algoritmo e Programação 58 
ESTRUTURA CONDICIONAL 
Usando o Operador Condicional Ternário (?) 
Este operador não atende a uma gama grande de casos, mas pode 
ser usado para simplificar expressões ou comandos se simples. 
 
<condição> ? <expressão 1> : <expressão 2>; 
 
Exemplo: Com a expressão Posso simplificar para 
 if (a > 0) 
 b = -50; b = a > 0 ? -50 : 100; 
 else 
 b = 100; 
 várias podem ser as formas de se combinarem (aninharem) as 
estruturas condicionais, as demais serão abordadas no decorrer 
deste curso 
Elaborando um Programa 
25/07/2013 Laboratório de Programação I 59 
COMANDO switch 
É um comando de tomada de decisão mais apropriado no teste de 
uma variável em relação a diversos valores pré-estabelecidos 
 
•Similiar ao if – else – if, onde a diferença fundamental é que ele 
não aceita expressões, apenas constantes inteiras ou caracteres. 
•A declaração default é opcional e somente será executada se a 
variáveltestada não for igual a nenhuma das constantes 
 
Exemplo: scanf(“%d”, &valor); 
 switch (valor) 
 { 
 case 1: printf(“Valor = 1”); 
 case 2: printf(“Valor = 2”); 
 default: printf(“Valores diferente de 1 ou 2”); 
 } 
Revisão de Programação 
Analisar a saída do 
programa para valor = 1 
25/07/2013 Laboratório de Programação I 60 
COMANDO break 
•Este comando causa a interrupção (parada ou quebra) imediata 
de algumas estruturas dentro da seqüência de execução. 
•A utilização dentro do comando switch interrompe a 
continuidade das verificações (testes) de valores constantes, 
tornando-se um comando interessante dentro deste tipo de 
estrutura, pois salta para o final do bloco e continua a execução 
 
Exemplo: scanf(“%d”, &valor); 
 switch (valor) 
 { 
 case 1: printf(“Valor = 1”); 
 break; 
 case 2: printf(“Valor = 2”); 
 break; 
 default: printf(“Valores diferente de 1 ou 2”); 
 } 
Revisão de Programação 
Verificar a 
saída deste 
programa 
para valor =1 
25/07/2013 Laboratório de Programação I 61 
FUNÇÃO fflush(stdin) 
 
 A leitura dos dados procura ser realizada de forma que 
evite inconvenientes e desperdícios de tempos, porém nem 
sempre ela ocorre diretamente na memória indicada pelo 
programa, e sim em uma parte separada denominada buffer. 
 
 Diversas são as razões para o uso de buffer: 
• leitura de um disco com recuperação de todo um 
setor que possui várias informações, mas só um 
registro é desejado pela instrução em execução 
 
• liberação do processador para a execução de um 
outro programa enquanto os dados estão sendo lidos 
e disponibilizados. 
 
Revisão de Programação – cuidados na leitura 
25/07/2013 Laboratório de Programação I 62 
Revisão de Programação – cuidados na leitura 
FUNÇÃO fflush(stdin) 
 
 Os valores obtidos através da leitura dos dados são levados 
a memória do programa no momento em que são necessários. 
Porém quando a leitura de alguns tipos de dados que manipulam 
caracteres são realizados usando as funções scanf e gets 
intercalados, o buffer é descarregado na memória do programa de 
uma forma que não condiz com o esperado . 
 
 Para evitar este tipo de ocorrência utiliza-se a função 
fflush(stdin), cujo protótipo está na stdio.h, que simplesmente 
limpa o buffer de teclado antes do uso da função gets. 
 stdin  dispositivo de entrada padrão (teclado) 
 
 
25/07/2013 Laboratório de Programação I 63 
04) Faça um programa que leia três valores numéricos e 
os mostre em ordem crescente no centro de uma 
janela limpa envoltos por uma moldura. 
 
05) Elabore um programa que desenhe uma moldura de 
10 caracteres de altura e 20 de largura. Use os 
caracteres hexadecimais BA ||, CD =, C9 , BB , 
 C8 e BC . 
Exercícios de Revisão 
25/07/2013 Laboratório de Programação I 64 
Em C existem três comandos de repetição que são empregados de 
maneira mais apropriada a determinadas situações, onde as 
características de cada um possam ser melhor aproveitadas. 
 for(<inicialização>;<condição>;<incremento>) 
 <instrução>; 
 
A inicialização é executada uma única vez antes do laço ser 
iniciado 
 
A seqüência de comandos será repetida enquanto a condição 
for verdadeira. Quando ela for falsa os comandos após o laço 
são executados 
 
O incremento define como será alterada a variável de controle 
do laço, cada vez que ele for repetido, sendo executado logo 
após o fim do corpo do laço 
Revisão de Programação - repetição 
25/07/2013 Algoritmo e Programação 65 
Exemplos: 
int main(void) 
{ 
 int x,y; 
 for(x=0,y=0;x+y<10;x=x+1,y=y+1) 
 printf(“%d”,x+y); 
} 
Estrutura de Repetição 
 
 
int main(void) 
{ 
 int c; 
 for(c=getch();c!=´X´;c=getch()) 
 printf(“%c”,c+1); 
} 
int main(void) 
{ 
 int c; 
 for(c=´a´; c<=´z´; c++) 
 printf(“%c ASCII= %d\n”,c,c); 
} 
int main(void) 
{ 
 int c; 
 for( ; (c=getch())!=´X´; ) 
 printf(“%c”, c); 
} 
A <inicialização>, <condição> e <incremento>, podem conter compostas por qualquer 
instrução válida em C 
 
 A <inicialização>, <condição> e <incremento>, podem conter várias instruções 
separadas por „,‟ e qualquer uma delas pode ser omitida, mantendo sempre os „;‟ que as 
separam 
 
 A <inicialização>, <condição> e <incremento>, podem chamar funções 
25/07/2013 Algoritmo e Programação 66 
Instruções Múltiplas no Corpo do for 
Estrutura de Repetição 
Duas ou mais instruções podem fazer parte do corpo do laço 
„for‟. Quando isso for necessário abra um bloco de instrução ({), 
coloque as instruções desejadas e feche o bloco (}). Não se 
esqueça do „;‟ para encerrar cada uma destas instruções. 
 
Laço for Aninhados 
Quando tem-se um laço dentro de outro, diz-se que o laço interior 
esta aninhado 
 for (<inicialização>;<condição>;<incremento>) 
 { 
 for (<inicialização>;<condição>;<incremento>) 
 instrução 1; 
 instrução 2; 
 } 
25/07/2013 Laboratório de Programação I 67 
Exercício Extra = 
 Apresentar a tabela ASCII, avisando ao usuário 
quando for encontrado os caracteres a ou A, C ou c, f 
ou F e w ou W, dentro de uma moldura construída 
usando os caracteres especiais: BA ||, CD =, C9 , 
 BB , C8 e BC . 
 
 A Cada 15 caracteres da tabela ASCII a saída deverá 
ser interrompida até o usuário pressionar qualquer 
tecla. 
 
 
Exercícios de Revisão 
25/07/2013 Laboratório de Programação I 68 
A segunda estrutura de repetição usa os mesmos elementos do 
laço „for‟, mas eles estão distribuídos de forma diferente. 
 while (<condição>) 
 <instrução>; 
Revisão de Programação - repetição 
Se a condição for verdadeira (!=0) o corpo do laço é executado 
e a condição é novamente avaliada. Esta operação se repete até 
que a condição se torne falsa (=|=0), encerrando o laço e 
continuando a executar o programa depois do corpo do laço. 
 
• O laço while é mais apropriado para situações que a repetição 
possa ser encerrada inesperadamente, enquanto que o „for‟ é 
mais empregado em quantidades de repetições mais 
conhecidas. 
 
• O while também pode ser aninhado, ou seja, possuir um while 
dentro de outro while. 
25/07/2013 Laboratório de Programação I 69 
A última estrutura de repetição cria um ciclo repetitivo até a 
condição ser falsa (=|=0). A condição neste laço é avaliada depois 
do laço ser executado, ou seja, seu bloco é executado ao menos 
uma vez para que a condição seja verificada. 
 do { 
 <instruções>; 
 } while (<condição>); 
Revisão de Programação - repetição 
 
Exemplo: 
 : 
 do { 
 total += valor; 
 printf(“O total seria %5.2f”, total); 
 } while (total < 8000); 
 : 
25/07/2013 Laboratório de Programação I 70 
COMANDO break 
Conhecendo as estruturas de repetição será possível agregar mais algumas 
funcionalidades para o comando break. Dentro de um laço, este comando 
causa a saída imediata da repetição e passa a execução do programa para a 
próxima instrução depois do bloco. 
break; 
 Em estruturas aninhadas o break só afetará o laço que o 
contém e os laços internos a ele. 
COMANDO continue 
 
Este comando permite que se retorne ao início do laço (loop) na parte de 
incremento da variável de controle e verificação da condição novamente. Em 
alguns casos que não exista a necessidade de continuar até o final do bloco de 
instruções do laço, pode-se usar o continue. 
continue; 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 71 
Exercícios de Revisão 
06) Tem-se um conjunto de dados contendo a altura e o sexo 
(masculino, feminino) de até 100 pessoas. Fazer um 
programa que calcule e escreva: a maior e a menor altura 
do grupo, a média de altura das mulheres e o número de 
homens. 
Desafio : apresentar as alturas e sexos lidos 
 
07) Fazer um programa que calcule e escreva a soma dos n 
primeiros termos da série: 480 – 475 + 470 – 465 +... 
 10 11 12 13 
 
25/07/2013 Laboratóriode Programação I 72 
FUNÇÕES 
 Uma função consiste em um subprograma que pode atuar 
sobre dados e retornar ou não um valor. Todo programa em C 
tem pelo menos uma função (a main) que pode chamar outras 
funções, algumas das quais, podem ainda chamar outras e assim 
por diante. 
 
 Toda função tem seu próprio nome, e quando este nome é 
encontrado, a execução do programa é desviado para o corpo da 
função. Quando ela retorna, a execução recomeça na linha 
seguinte a chamada da função. 
main( ) 
{ 
 instrução; 
 função1( ); 
 instrução; 
 função2( ); 
} 
função1 
{ 
 instrução; 
 return; 
} 
função2 
{ 
 instrução; 
 função3( ); 
 return; 
} 
função3 
{ 
 instrução; 
 return; 
} 
Programa 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 73 
 As tarefas devem ser divididas em múltiplas funções para 
que possam ser chamadas uma a uma. 
 
 Isso faz com que: 
• a solução de um problema complexo se torne mais 
simples, pois a soma da complexidade de pequenas 
partes de um problema é menor que a complexidade do 
problema. 
• Possibilita o trabalho em equipe. 
• Possibilita o reaproveitamento de códigos. 
• Facilita manutenções posteriores 
 
 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 74 
 Uma função bem elaborada efetua uma tarefa específica, 
conclui corretamente a execução e depois retorna ao programa. 
 Para usar uma função é preciso primeiro declará-la e depois 
defini-la. Nenhuma função pode ser chamada por outra função se 
não tiver sido primeiro declarada. A declaração, denominada 
protótipo da função, informa ao compilador qual o seu tipo de 
retorno, seu nome e os seus parâmetros, enquanto que a sua 
definição diz o que ela executa (faz). 
 O protótipo da função é uma instrução, o que significa que 
ele é encerrado com um „;‟. 
 
<tipo retorno> <identificador> (<lista parâmetros>); 
 
 A <lista parâmetros> é uma lista de todos os parâmetros e 
seus respectivos tipos separados por „,‟. Entre os parâmetros, o 
nome e o tipo de retorno devem ter compatibilidade entre a 
definição e a declaração da função. 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 75 
 A definição de uma função é iniciada pelo seu cabeçalho, 
que consiste no protótipo da função, com nome(s), 
obrigatoriamente, para o(s) parâmetro(s) e sem o „;‟ no final. 
Iniciasse o corpo da função com a abertura de „{„ e encerrasse 
com o fechamento „}‟. 
 Não é necessário que uma função apresente parâmetros, 
porém os parênteses tem que existirem . 
 
Exemplo: 
 
 int calculaArea (int largura, int altura); //protótipo (declaração) 
 
 int calculaArea (int largura, int altura) // definição (corpo) 
 { 
 return (largura *altura); 
 } 
Tem que ter „;‟ 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 76 
Declaração de Variáveis 
• Variáveis locais são internas as funções ou blocos 
• Parâmetros formais são parâmetros de funções 
• Variáveis globais estão fora de todas as funções 
Variáveis Locais 
• Só podem ser referenciadas dentro da função ou no 
bloco onde foram declaradas 
• Só existem dentro do bloco de instrução onde foram 
declaradas, quando este estiver sendo executado (pilha) 
• Elas podem ser declaradas no início de qualquer bloco 
de instrução e não somente no início das funções 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 77 
Parâmetros Formais 
• São variáveis que recebem os valores dos argumentos 
das funções e devem ser do mesmo tipo 
• Comportam-se como qualquer outra variável local 
dentro de uma função 
Variáveis Globais 
• São reconhecidas dentro de todo o contexto onde 
foram declaradas 
• Estão declaradas fora das funções 
• São armazenadas em área específica da memória (não 
podem ser usadas nesta disciplina) 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 78 
 Pode-se passar variáveis para a função, assim como também 
pode-se declarar variáveis locais dentro do corpo da função. 
Estas variáveis recebem esta denominação porque só existem 
dentro da função, pois quando a função retorna (ou termina) elas 
deixam de estar disponíveis. 
 Os parâmetros passados para a função também são 
considerados variáveis locais. Por exemplo: 
#include<stdio.h> 
 float converter(float f); // protótipo 
 int main( ) 
 { float tempFar, tempCel; 
 printf(“Temp.em Fahrenheit: ”); 
 scanf(“%f”,&tempFar); 
 tempCel = converter(tempFar); 
 printf(“Em Celsius %f”,tempCel); 
 return 0; 
 } 
// Definição do corpo da função 
float converter(float tempFar) 
{ 
 float tempCel; 
 tempCel = ((tempFar – 32) *5) / 9; 
 return tempCel; 
} 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 79 
Função como parâmetro de outra Função 
 
 Embora seja possível, isto pode dificultar a leitura e a 
depuração do código. Por exemplo: 
resposta = (dobro(quadrado(raiz(valor))); 
 
 Mudanças feitas nos argumentos não afetam os valores da 
função de chamada, pois é feita uma cópia local para cada 
argumento. Essa cópia é tratada como uma outra variável 
qualquer. Esta forma de passagem de parâmetro recebe o nome 
de “argumento por valor” (ou passagem por valor). 
 
 O argumento por referência acontece quando é copiado o 
endereço do argumento para o parâmetro (passando um ponteiro 
para o argumento). Com isso, as alterações efetuadas sobre o 
parâmetro afetarão também o valor da variável usada na 
chamada da função. Será visto mais a frente quando for estudado 
ponteiros. 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 80 
PARÂMETROS PADRÃO 
 Quando uma função possui algum parâmetro (na sua 
definição ou no protótipo) a função de chamada deve passar um 
valor quando a chamar, a menos que ela tenha um valor padrão. 
Um valor padrão é um valor a ser usado caso nenhum valor seja 
fornecido (informado). 
Exemplo: int testar(int x = 10); // protótipo 
 
 O cabeçalho da função não é alterado pela definição padrão. 
 Quando uma função possui um valor padrão todos os 
parâmetros posteriores desta função deverão ter parâmetros 
padrões definidos. 
Exemplo: int testar(int par_1,int par_2 = 9,int par_3 = 7); 
 int testar(int par_1= 3,int par_2=5,int par_3=7); 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 81 
SOBRECARREGANDO FUNÇÕES 
 
 Em C++ é permitido criar uma função com o mesmo nome, 
sobrecarregando-a. Isto é permitido diferenciando a lista de 
parâmetros em relação aos seus tipos ou quantidades (ou ambos). 
 
Exemplo: int testar(int p1,int p2); 
 int testar(int p1,long int p2); 
 int testar(int p1); 
 
 Os tipos de retorno podem ser iguais ou diferentes em uma 
função sobrecarregada, desde que a lista de parâmetros seja 
diferente. 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 82 
COMANDO return 
 
 As funções retornam um valor ou void (nenhum valor). Para 
que elas retornem um valor escreva a palavra reservada return 
seguida pelo valor que se deseja retornar. 
 
Exemplo: 
 return 5; 
 return (x > 5); 
 return (outra( ) ); 
 
 Com return a execução do programa retorna imediatamente 
para a função responsável pela chamada, e qualquer instrução 
que esteja após o return não é executada. 
 É permitido mais que um return em uma função, mas uma vez 
que um deles seja executado a função é encerrada. 
Revisão de Programação 
Deve sempre retornar um valor 
compatível para uma função que não seja 
do tipo void. As funções void caracterizam 
os procedimento (função sem retorno) 
25/07/2013 Laboratório de Programação I 83 
Exemplo: 
 
#include<stdio.h> 
 
 // Declarações 
 float converter(float f); // protótipo 
 
 int main( ) 
 { 
 float tempFar; 
 float tempCel; 
 printf(“Temp.em Fahrenheit: ”); 
 scanf(“%f”,&tempFar); 
 tempCel=converter(tempFar); 
 printf(“Em Celsius %f”,tempCel); 
 return 0; 
 } 
float converter(floatfar) 
{ 
 float cel; 
 cel = ((far – 32) *5) 9; 
 return cel; 
} 
 
 
A variável passada por parâmetro 
possui um endereço diferente e 
somente vai existir enquanto a 
função estiver sendo executada. É 
feita uma cópia da variável e a 
cópia é usada pela função. 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 84 
PROCEDIMENTO 
 Um procedimento consiste em uma função, porém sem 
retorno algum. 
 
 O desenvolvimento de um procedimento na linguagem C 
é realizado seguindo todas as regras de criação e uso de 
funções, porém o tipo de retorno é sempre definido como 
void (tipo de dado não definido ou vazio). 
 
 Até se pode usar o comando return, mas não se deve 
retornar nada, ficando somente a instruções return seguida 
do ponto e vírgula. 
 
Exemplo: 
 Observe um simples procedimento que calcula e já 
 apresenta a média aritmética de dois valores apenas. 
 void calculaMedia(int valor1, int valor2); // protótipo 
Revisão de Programação 
25/07/2013 Laboratório de Programação I 85 
Exercício de Revisão 
08) Elabore um programa que acione uma função que apresente as 
opções de menu com as seguintes concessionárias de veículos: 
FIAT, CHEVROLET e FORD. Solicite ao usuário qual das 
opções ele deseja verificar os carros disponíveis. Identifique qual 
a opção escolhida e apresente as respectivas opções dos carros 
disponíveis, conforme as listas descritas abaixo. A concessionária 
escolhida deverá acionar outra função que apresentará somente os 
veículos disponíveis da marca especificada. Para cada 
concessionária deverá existir uma função específica com os carros 
disponíveis. Após identificar o carro escolhido pelo usuário, 
apresente no centro de uma janela limpa uma mensagem de 
agradecimento e o nome do carro escolhido. ESQUEMA 
FIAT CHEVROLET FORD 
Uno Vectra Escort 
Tempra Astra Pampa 
 - Silverado Ranger 
25/07/2013 Laboratório de Programação I 86 
•Existem quatro tipos de especificadores de classe de 
armazenamento 
auto 
extern 
static 
register 
 
•Esses especificadores servem para informar ao compilador 
como a variável deve ser armazenada. 
 
•O especificador de armazenamento precede a declaração da 
variável: 
 
 especificador_de_armazenamento tipo nome_da_variável 
Revisão de Programação – Classes Armazen. 
25/07/2013 Laboratório de Programação I 87 
 
•Especificador auto: serve para definir variáveis automáticas 
que é uma referência para as variáveis locais. Como em C as 
variáveis são , por definição, locais ao bloco em que ela é 
declarada o uso de auto não tem nenhum significado, sendo 
portanto raramente utilizado. 
 
•Especificador extern: permite informar a vários arquivos fontes 
(.cpp, .c,.h ou .hpp) as variáveis globais que serão 
compartilhadas pelos mesmos . As variáveis globais devem ser 
declaradas em apenas um arquivo e usadas como extern nos 
outros. 
Revisão de Programação – Auto e Extern 
25/07/2013 Laboratório de Programação I 88 
Revisão de Programação – Extern. 
#include <stdio.h> 
#include <conio.h> 
int x = 1; /* variável global */ 
float Maior (float a, float b); 
void imprimeX( void); 
void main (void) 
{ 
 float c ,d; /******* principal.c ****/ 
 c= 2.3; d=4.5; 
 printf(“maior entre %f e %f e %f\n”, 
 c, d, Maior (c, d)); 
 printf(“valor de x antes chamada 
%d\n”, x); 
 imprimeX(); 
 printf(“valor de x apos chamada 
%d\n”, x); 
 getch();} 
 
#include <stdio.h> 
extern int x; /* variável global */ 
float Maior (float a1, float a2) 
{ 
 if (a1>a2) 
 return a1; 
 else 
 return a2; 
} 
void imprimeX() /***** funcao.c**/ 
{ 
 x+= 10; 
 printf (“ x= %d\n”, x); 
} 
 
25/07/2013 Laboratório de Programação I 89 
 
•Os especificador static possibilita a definição de variáveis 
permanentes dentro de funções ou dentro de arquivos (.cpp, .c, .h 
ou .hpp) 
 static tipo_da_variável nome_da_variável 
 
•As variáveis declaradas como static não são reconhecidas fora 
do escopo da função ou arquivo, mas mantém seus valores entre 
chamadas. 
 
•As variáveis estáticas tem comportamento diferentes para 
variáveis locais e globais. 
Revisão de Programação – Static 
25/07/2013 Laboratório de Programação I 90 
 
 
•O compilador cria um armazenamento permanente para as 
variáveis análogo ao armazenamento das variáveis globais . 
 
•A diferença entre as variáveis static locais e as variáveis globais 
é que as variáveis static locais são reconhecidas apenas no 
contexto em que são declaradas. 
 
•Uma variável static local é uma variável que retém seu valor 
entre chamadas de uma função 
 
•São muito usadas em bibliotecas de funções. 
 
 
Revisão de Programação – Static local 
25/07/2013 Laboratório de Programação I 91 
 
 
•Exemplo 
#include <stdio.h> 
#include <conio.h> 
int incrementaDez( void ); 
int main (void){ 
 printf(“ 1 - numero gerado (%d)\n”, incrementaDez()); 
 printf(“ 2 - numero gerado (%d)\n”, incrementaDez()); 
 printf(“ 3 - numero gerado (%d)\n”, incrementaDez()); 
 getch(); 
 return 0; 
} 
int incrementaDez( void ){ 
 /* a declaração e inicialização só é executada uma única vez */ 
 static int numero = 0; 
 numero += 10; 
 return (numero);} 
} 
 
 
Revisão de Programação – Static local 
25/07/2013 Laboratório de Programação I 92 
 
•Informa ao compilador para criar uma variável global que é 
reconhecida apenas no arquivo onde é declarada. 
 
•Isto significa que, apesar da variável ser global , rotinas em 
outros arquivos não podem reconhecer ou alterar seu conteúdo 
diretamente, diminuindo com isto os efeitos colaterais das 
variáveis globais. 
 
•As funções da bilioteca ramdomize() (inicializa o gerador de 
números aleatórios) e rand() (gera um número aleatório) usam o 
conceito de variáveis estáticas globais. 
 
 
 
Revisão de Programação – Static global 
25/07/2013 Laboratório de Programação I 93 
Revisão de Programação – Static global 
 Arquivo 1 : principal.c 
#include <stdio.h> 
#include <conio.h> 
int incrementaDez( void ); 
void inicializaIncremento(int 
valorInicial); 
int main (void){ 
 inicializaIncremento(200); 
 printf(“ 1 - numero gerado (%d)\n”, 
incrementaDez()); 
 printf(“ 2 - numero gerado (%d)\n”, 
incrementaDez()); 
 printf(“ 3 - numero gerado (%d)\n”, 
incrementaDez()); 
 getch(); 
 return 0;} 
Arquivo: funcao.c 
#include <stdio.h> 
#include <conio.h> 
static int numero; 
int incrementaDez( void ) 
{ 
 numero += 10; 
 return (numero); 
} 
void inicializaIncremento (int 
valorInicial) 
{ 
 numero = valorInicial; 
} 
 
25/07/2013 Laboratório de Programação I 94 
 
•Determina que o acesso a variável declarada como register seja 
o mais rápido possível. 
 
•Variável register do tipo caracteres ou inteiros são colocadas 
diretamente nos registradores da CPU, variáveis maiores, como 
por exemplo matrizes, não podem ser colocadas nos 
registradores da CPU mas elas ainda assim receberão um 
tratamento diferenciado, embora para estas variáveis o aumento 
de performance não seja substancial. 
 
•O especificador register só pode ser aplicado a variáveis locais 
e a parâmetros formais de funções. Não permitido o uso do 
especificador register para as variáveis globais. 
 
 
Revisão de Programação – Register 
25/07/2013 Laboratório de Programação I 95 
•Como uma variável do tipo register pode ser armazenada em 
um registrador da CPU, ela não tem endereço. Não deve ser 
utilizado o operador & para estas variáveis. 
 
•O número de variáveis em registradores é determinado pelo 
Sistema operacional e pela implementação específica do 
compilador. Caso o limite seja alcançado, variáveis do tipo 
register são automaticamente transformadas em variáveis 
comuns. 
 
•Exemplo: 
int main(void){ 
register int i;for (i =0; i<1000;i++){ 
 ........}} 
 
Revisão de Programação – Register 
25/07/2013 Laboratório de Programação I 96 
 Sempre que duas variáveis possuírem o mesmo nome, mas 
endereços de memórias diferentes, elas não são as mesmas 
variáveis. 
 
 Este conceito também se estende a blocos dentro de uma 
mesma função. Se duas variáveis possuem o mesmo nome, a que 
foi declarada no bloco atual tem precedência. 
Exemplo: 
 void outra(void); 
 int main ( ) 
 { int x = 10; 
 printf(“\n1 - Em main( ) X = %d”,x); 
 outra( ); 
 printf(“\n2 - Em main( ) X = %d”,x);return 0;} 
 void outra() { 
 int x= 50; 
 printf(“\nEm outra( ) X = %d”,X);} 
Revisão - Conflitos de Nomes em Variáveis 
Saída em tela 
 
1 Em main( ) X = 10 
Em outra( ) X = 50 
2 Em main( ) X = 10 
25/07/2013 Laboratório de Programação I 97 
Exercícios de Fixação 
09)Elabore duas funções, além da função principal 
(main) que calcule duas operações aritméticas 
consecutivas, envolvendo três valores ineiros 
informados pelo usuário, com duas operações, lidas 
na função principal. Em outra função verifique se o 
resultado das operações produziram um número par 
ou impar. 
 
10)Faça um programa que calcule, por meio de uma 
função, o valor de x (real) elevado a n (inteiro). 
 
11)Desenvolva um programa que efetue os cálculos 
relacionados a avaliação final desta disciplina neste 
ano e semestre, onde a média final deverá ser 
calculada por outra função denominada 
calculaMedia. 
ATENÇÃO! Todos os exercícios a seguir não poderão usar 
variáveis globais 
25/07/2013 Laboratório de Programação I 98 
Referência de Criação e Apoio ao Estudo 
Material para Consulta e Apoio ao Conteúdo 
• Universidade Federal de Minas Gerais - site 
ead1.eee.ufmg.br/cursos (escolha a opção „C‟) 
 
• SCHILDT, H., C Completo e Total, Editora Makron 
Books do Brasil Editora Ltda, 1996. 
 Capítulo 3 e 6 
 
• EVARISTO, J., Aprendendo a programar programando 
em C, Book Express, 205 p., 2001. 
 Capítulo 2, 3, 4 e 5 
 
• MIZRAHI, V. V., Treinamento em Linguagem C, Curso 
Completo, Módulo 1, Makron Books do Brasil Editora 
Ltda,1990. 
 Capítulo 2, 3, 4 e 5