Buscar

Aula2_TT214_Linguagem e Técnica de Programação I

Prévia do material em texto

TT214 – Linguagem e Técnica de 
Programação I 
1º Semestre – 2013 
Prof. Suelen Mapa de Paula 
 
1 
Aula 2 
Contatos 
 Suelen Mapa de Paula 
 suelenmapa@gmail.com 
 suelen@dca.fee.unicamp.br 
 
 Monitor: ??? 
2 
Ementa da aula 
 Algoritmos e Programas de Computador: 
 Revisão; 
 Linguagens de Programação; 
 Compiladores e Interpretadores; 
 Introdução à Linguagem C: 
 Introdução; 
 Primeiro programa em C; 
 Aspectos Fundamentais da Linguagem C; 
 Exercícios; 
 Referências. 
 
** Este material foi baseado nas aulas do professor Guilherme Coelho, sob a 
autorização do mesmo. 
 
 
3 
Algoritmos e Programas de 
Computador: 
4 
Etapas para desenvolvimento de um 
programa. 
 O desenvolvimento de um programa de computador 
obrigatoriamente deve passar por três etapas: 
1. Análise: nesta etapa estuda-se o enunciado do problema que 
se quer resolver para que sejam definidos: 
 Os dados de entrada; 
 O processamento que deverá ser feito; 
 Os dados de saída; 
2. Elaboração do algoritmo: definição da sequência de passos 
que deverá ser realizada para que o objetivo seja atingido; 
3. Codificação: consiste na transformação do algoritmo em 
códigos de uma linguagem de programação escolhida. 
 
5 
Etapas para desenvolvimento de um 
programa. 
 
 
6 
1) Análise do problema 
 
 Dados de entrada: N1 e N2 
 Processamento: soma ( + ) 
 Dados de saída: resultado 
 
2) Algoritmo: Fluxograma 
 
 
 
 
 
 
 
 
 
 
 
 
 
Início 
Resultado = N1+ N2 
Resultado 
N1, N2 
Recebe os 
valores de 
entrada 
Exibe o 
resultado 
Fim 
 Problema: “Precisamos realizar a soma de dois números 
quaisquer”. 
3) Codificação em Linguagem C 
 
 
 
 
 
 
 
 
 
Problema: “Precisamos realizar a soma 
de dois números quaisquer”. 
7 
#include<stdio.h> 
 int main (){ 
 int N1, N2, Resultado; 
 printf("Informe os valores de N1 e N2"); 
 scanf("%d %d", &N1,&N2); 
 Resultado = N1 + N2; 
 printf("O resultado da soma eh: %d",Resultado); 
 } 
 
 
 
 
 
 
Como transformar um algoritmo em um 
programa de computador? 
 É preciso usar uma linguagem que o computador entenda; 
 Tal linguagem deve ser capaz de expressar tudo que o 
computador pode fazer; 
 Não pode ser ambígua. 
 
8 
Linguagem de Programação 
Programas 
 Linguagem de máquina: conjunto de instruções que 
podem ser interpretadas e executadas diretamente pela CPU 
(códigos binários);  O que o computador entende 
 Linguagem de Programação: sintaxe e semântica utilizada 
para escrever um programa.  o que o programador usa 
 Linguagem de baixo nível (assembly): linguagem de 
programação baseada em mnemônicos, dependente do tipo de 
máquina e de fácil tradução para a linguagem de máquina. 
 Linguagem de alto nível: linguagem de programação que 
independe do conjunto básico de instruções da linguagem de 
máquina (C, Java, Python,...); 
 
9 
Programas 
 Um computador só executa programas em linguagem 
de máquina; 
 Como um programa em linguagem de alto nível (ou 
de montagem) poderia ser executado? 
 
 
 Isto é feito por: 
 Compiladores; ou 
 Interpretadores. 
 
10 
É preciso convertê-lo! 
Compiladores 
 Compilador: programa que traduz os programas 
escritos em uma dada linguagem de programação para 
linguagem de máquina; 
 
 
11 
Programa 
Fonte 
Compilador 
Programa 
Executável 
Sistema 
Operacional 
CPU 
Geração do Programa 
Executável: 
Programa 
Executável 
Sistema 
Operacional 
CPU 
Execução do Programa: 
Interpretadores 
 Interpretador: programa que executa diretamente os 
programas escritos em uma dada linguagem de 
programação; 
 
12 
Execução do Programa: 
Programa 
Fonte 
Interpretador 
Sistema 
Operacional 
CPU 
• Programas interpretados tendem a ser mais lentos; 
• Por outro lado, podem ser alterados durante a execução. 
Introdução a linguagem C 
13 
A linguagem C 
 Composta por instruções, que 
consistem em termos semelhantes 
a expressões algébricas, com 
palavras chaves em inglês. 
 
 Desenvolvida a partir de duas 
linguagens anteriores, a BCPL e B, 
criadas no final da década de 60. 
 
 Criada por Dennis Ritchie e Brian 
W. Kernighan, em 1972, no centro 
de pesquisa da Bell Laboratories. 
 
14 
A linguagem C 
 C é uma linguagem de programação estruturada: 
 Um programa em C é composto por blocos elementares que 
são interligados através de três mecanismos básicos: 
 Sequência: implementa os passos necessários para descrever 
qualquer programa; 
 
 Seleção: especifica a possibilidade de selecionar o fluxo de execução 
a partir de ocorrências lógicas. 
 
 Iteração: permite a execução repetitiva de segmentos do programa. 
 
15 
Primeiro programa em C 
 Um programa em C é um arquivo texto, chamado 
código-fonte, que contém a tradução de um algoritmo 
para a linguagem C; 
 Este arquivo contém as declarações e as instruções do 
programa, escritas conforme a sintaxe da linguagem. 
 
16 
/*Meu primeiro programa em C*/ 
#include <stdio.h> 
 
int main() { 
 printf(“Hello, world!\n”); 
 return 0; 
} 
Salvo no arquivo hello.c 
Primeiro programa em C 
17 
/*Meu primeiro programa em C*/ 
#include <stdio.h> 
 
int main() { 
 printf(“Hello, world!\n”); 
 return 0; 
} 
Salvo no arquivo hello.c 
Comentário 
Função principal 
do programa 
Informa o compilador para 
incluir a biblioteca padrão 
de entrada/saída (stdio.h) 
Função que imprime 
texto na tela 
Primeiro programa em C 
18 
 Todas as instruções devem estar dentro das chaves que iniciam e 
encerram a função (“{“ e “}”); 
 São executadas na ordem em que são escritas. 
 As instruções em C sempre são encerradas com ponto-e-vírgula (“;”); 
 Os parâmetros ou argumentos de uma instrução são passados 
dentro dos parêntesis (vide printf()). 
/*Meu primeiro programa em C*/ 
#include <stdio.h> 
 
int main() { 
 printf(“Hello, world!\n”); 
 return 0; 
} 
Caractere especial que 
Indica uma 
“quebra de linha” 
Primeiro programa em C 
19 
 Comentários em um programa correspondem a 
porções de texto que são desconsideradas pelo 
compilador ou interpretador; 
 Servem para documentar o código-fonte; 
 A linguagem C prevê dois tipos de comentários; 
 Comentários de múltiplas linhas (entre /* e */): 
/* Este comentário 
pode ocupar mais de uma linha 
do arquivo-fonte. */ 
 Comentários de uma única linha (iniciados com //): 
// Este comentário deve estar contido em uma única 
linha 
Primeiro programa em C 
 Para executar o programa hello.c, o primeiro passo é 
compilar o código-fonte, para que o executável seja 
gerado; 
 O compilador é executado como qualquer outro programa; 
 Supondo um ambiente Linux/Unix e o compilador gcc 
(GNU C Compiler), o programa anterior seria compilado e 
executado com os seguintes comandos: 
$ gcc hello.c –o hello 
$ ./hello 
Hello, world! 
Chamada do compilador 
Nome do arquivo-fonte 
(entrada) 
Nome do arquivo executável 
(saída), indicado pela opção -o 
Execução do programa 
Saída do programa 
Primeiro programa em C 
 O compilador C para o ambiente Windowns é o MinGw. 
(É a versão gcc para windowns). 
 Para este caso, o processo de compilação é muito similar: 
 
 
21 
Diretorio> gcc hello.c –o helloDiretorio> hello 
Hello, world! 
Chamada do 
 compilador 
Nome do arquivo-fonte 
(entrada) 
Execução do programa 
Nome do arquivo executável 
(saída), indicado pela opção -o 
Saída do programa 
Primeiro programa em C 
 Informações de como instalar e configurar os compiladores 
podem ser encontrados em: 
 
 MinGW:http://www.franciscosouza.com.br/2009/04/07/instaland
o-um-compilador-cc-no-windows/ 
 
 GCC : http://gcc.gnu.org/wiki/InstallingGCC 
 
 
 
22 
 Apesar de não ser mandatório o uso desses softwares, recomendo que os 
mesmos sejam utilizados, para que vocês tenham um ambiente semelhante ao que 
teremos nas aulas práticas, e que será utilizado para a correção de trabalhos e 
exercícios. 
 
 Vocês podem utilizar outras ferramentas de edição de programas (por exemplo: 
Code::Blocks, Visual C/C++, Borland C/C++, Eclipse, Xcode, Emacs, Vim, ....), mas o 
ideal é que o compilador utilizado seja o GCC. 
Problemas: erros de compilação 
23 
 Quando o programa não está de acordo com as regras da 
linguagem, o compilador retornará uma lista de erros e 
não gerará o arquivo executável; 
 É importante compreender as mensagens de erro e 
fazer as correções no código-fonte. 
/*Meu primeiro programa em C*/ 
#include <stdio.h> 
 
int main() { 
 printf(“Hello, 
world!\n”); 
 return 0; 
 
C:\Aula 2\Programas> gcc hello.c -o hello 
hello.c: In function 'main': 
hello.c:6:2: error: expected declaration or statement at end of input 
Problemas: erro de execução 
24 
 Quando o programa não apresenta o comportamento 
esperado, mesmo que a compilação não tenha resultado em 
erros, diz-se que ocorreu um erro de execução; 
 Alguns tipos de erros de execução: 
 A saída retornada não é a saída correta; 
 A execução do programa é encerrada abruptamente; 
 A execução não termina nunca (loop infinito); 
 ... 
 Para auxiliar na localização de fontes de erros de execução, 
existem os depuradores (debuggers), que executam o 
programa passo a passo. 
Exercícios 
25 
1. Escreva o programa exemplo1.c apresentado abaixo em 
um editor de textos (puro), compile-o usando o gcc e 
execute-o. 
/*Meu primeiro programa em C*/ 
#include <stdio.h> 
 
int main() { 
 printf(“Bem-vindo à disciplina TT214!\n”); 
 return 0; 
} 
Salvo no arquivo exemplo1.c 
Exercícios 
26 
2. Modifique o programa anterior de forma a 
escrever cada palavra da frase “Bem-vindo à 
disciplina TT214!” usando uma chamada para a 
função printf(). 
3. Modifique o programa anterior para que cada 
palavra da frase “Bem-vindo à disciplina TT214!” 
seja escrita em uma linha. 
4. Modifique o programa anterior para que cada letra 
da frase “Bem-vindo à disciplina TT214!” seja escrita 
em uma linha. Utilize apenas um comando 
printf(). 
Aspectos fundamentais da 
linguagem C 
27 
Variáveis 
 Variável: é um local na memória principal ou um nome 
que se dá a endereços de memória. 
 
 Contêm um nome para referenciar o seu conteúdo; 
 Armazenam um valor por vez, mas podem assumir vários 
valores ao longo do tempo; 
 O conteúdo de uma variável pode ser de vários tipos: 
inteiro, real, caracter, lógico e entre outros. 
 
 Declarando uma variável em C 
 
 
 Atribuindo valor a variável num: 
 28 
tipo da variável nome da variável; 
int num; 
Declara uma variável 
chamada “num”, que 
armazena valores do 
tipo inteiro (números 
inteiros) 
num = 3; 
Variáveis 
 Quando for dar nomes às variáveis, se faz necessário: 
1. O 1º caractere é uma letra; 
2. Se houver mais de uma caractere, só podemos usar: letra, 
algarismos ou sublinhado (_). 
3. Nomes de variáveis escritas com letras maiúsculas serão 
diferentes de letras minúsculas. 
4. não são permitidos espaços em branco e caracteres 
especiais (@, $, +, -, %, !, etc). 
5. Nenhuma palavra reservada (ou nome de uma função 
declarada pelo programador) poderá ser nome de uma 
variável  
 
29 
Palavras reservadas em C 
30 
Exercícios 
31 
5. Dentre os nomes de variáveis abaixo, indique quais 
são aceitos pelo compilador da linguagem C e quais 
não são: 
 3ab 
 ab3 
 a3b 
 FIM 
 sim 
 int 
 \meu 
 A 
 nao 
 A123 
 papel-branco 
 a* 
 c++ 
 *nova_variavel 
Variáveis 
 Exemplo de programa: 
32 
#include <stdio.h> 
 
int main(){ 
 int num; 
 num = 10; 
 printf("O programa B imprime o número %d\n”, num); 
 
 return 0; 
} 
• A saída deste programa será: 
 O Programa B imprime o número 10 
Tipos de Variáveis 
33 
 A linguagem C possui os seguintes tipos básicos de 
variáveis: 
 char: guarda um caractere; 
 int: guarda um número inteiro; 
 float: guarda um valor real com certa precisão; 
 double: guarda um valor real com precisão maior que a de 
float; 
 void: tipo vazio (sem valor). 
 
Tipos de variáveis 
34 
 Além dos 5 tipos básicos listados no slide anterior, 
existem também algumas variações: 
 unsigned char: caractere sem sinal (lembrar que um 
caractere pode ser interpretado como um número); 
 long int: número inteiro com domínio ampliado; 
 unsigned int: número inteiro sem sinal (positivo); 
 unsigned long int: número inteiro sem sinal com 
domínio ampliado; 
 short int: número inteiro com domínio reduzido; 
 unsigned short int: número inteiro sem sinal com 
domínio reduzido. 
 
 
 
 
Tipos de variáveis 
35 
 Todos os tipos de dados definidos pelo padrão ANSI 
Tipos de variáveis 
 As especificações de cada tipo de variáveis dependem da 
arquitetura do computador; 
 Exemplo para um processador Pentium IV: 
 
36 
Variáveis de ponto flutuante 
37 
 Números em ponto flutuante (float, double) são usados 
para representar “números reais”; 
 No computador, números em ponto flutuante são 
representados de forma similar à notação científica: 
 Ex.: +31.600.000 = +0,316 × 108 
 Números em ponto flutuante são divididos em três 
partes: 
+ ,3160000 8 
Sinal Fração (ou mantissa) Expoente 
3 bytes 1 byte Supondo 4 bytes: 
Variáveis ponto flutuante 
38 
 Como o número de bits disponível para representar a 
mantissa é finito, a precisão que se consegue representar 
em computador também é limitada. 
 São feitos “arredondamentos” em operações aritméticas; 
#include <stdio.h> 
 
int main(){ 
 float a = 1000.43; 
 float b = 1000.0; 
 printf("%f\n",a - b); 
 return 0; 
} 
• A saída deste programa será: 
 0.429993 
Inicialização de variáveis 
39 
 A inicialização de uma variável pode ser feita tanto 
através de uma atribuição (após a sua declaração) 
quanto em sua própria declaração: 
#include <stdio.h> 
 
int main(){ 
 int evento ; 
 char corrida; 
 float tempo = 27.25; 
 evento = 5; 
 corrida = ’C’; 
 printf("O tempo vitorioso na eliminatória %c",corrida); 
 printf("\nda competição %d foi %f.\n", evento, tempo); 
 return 0; 
} 
O tempo vitorioso na eliminatória C 
da competição 5 foi 27.250000. 
A importância dos nomes das variáveis 
40 
#include <stdio.h> 
 
int main(){ 
 int abacaxi = 783; 
 float acerola = 2500.00; 
 float pitanga = 3750.00; 
 float melancia = acerola + pitanga; 
 
 printf(“O valor calculado é: %f\n”, melancia); 
 return0; 
} 
 O que faz o programa abaixo? 
A importância dos nomes das variáveis 
41 
#include <stdio.h> 
 
int main(){ 
 int codigoDoFuncionario = 783;float salarioBase = 2500.00; 
 float comissoesRecebidas = 3750.00; 
 float salarioDoMes = salarioBase + 
comissoesRecebidas; 
 
 printf(“O valor calculado é: %f\n”, salarioDoMes); 
 return0; } 
 O que faz o programa abaixo? 
O nome de cada variável deve indicar claramente sua função! 
Exercícios 
42 
6. Corrija o seguinte programa: 
 
 
 
7. Compile o programa abaixo, veja as mensagens de 
erro geradas e corrija-o. 
#include <stdio.h> 
int main{}( 
 printf(Existem %d semanas no ano., 56) 
 return0; 
) 
#include <stdio.h> 
int Main(void){ 
 int a=1; b=2; c=3; 
 printf("Os números são: %d, %d e %d\n, a, b, c, d) 
} 
Constantes 
43 
 Uma constante, como o próprio nome diz, tem 
valor fixo e inalterável. 
 Ex.: 
 ‘c’ – é um caractere simples; 
 8 – número inteiro de valor 8; 
 ‘8’ – corresponde ao caractere 8 (e não ao número inteiro); 
 “Primeiro programa” – cadeia de caracteres (string); 
 
Constantes 
44 
 Exemplo de programa: 
 #include <stdio.h> 
 
int main(){ 
 printf("O programa A imprime o número 2\n"); 
 printf("O programa %c imprime o número 2\n",’A’); 
 printf("O programa A imprime o número %d\n",2); 
 printf("O programa %c imprime o número %d\n",’A’,2); 
 printf("O programa %c %s %d\n",’A’,"imprime o 
número",2); 
 
 return 0; 
} 
• A saída será: 
 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
Constantes 
45 
 Exemplo de programa: 
 #include <stdio.h> 
 
int main(){ 
 printf("O programa A imprime o número 2\n"); 
 printf("O programa %c imprime o número 2\n",’A’); 
 printf("O programa A imprime o número %d\n",2); 
 printf("O programa %c imprime o número %d\n",’A’,2); 
 printf("O programa %c %s %d\n",’A’,"imprime o 
número",2); 
 
 return 0; 
} 
• A saída será: 
 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
Constantes 
46 
 Exemplo de programa: 
 #include <stdio.h> 
 
int main(){ 
 printf("O programa A imprime o número 2\n"); 
 printf("O programa %c imprime o número 2\n",’A’); 
 printf("O programa A imprime o número %d\n",2); 
 printf("O programa %c imprime o número %d\n",’A’,2); 
 printf("O programa %c %s %d\n",’A’,"imprime o 
número",2); 
 
 return 0; 
} 
• A saída será: 
 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
Constantes 
47 
 Exemplo de programa: 
 #include <stdio.h> 
 
int main(){ 
 printf("O programa A imprime o número 2\n"); 
 printf("O programa %c imprime o número 2\n",’A’); 
 printf("O programa A imprime o número %d\n",2); 
 printf("O programa %c imprime o número %d\n",’A’,2); 
 printf("O programa %c %s %d\n",’A’,"imprime o 
número",2); 
 
 return 0; 
} 
• A saída será: 
 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
Constantes 
48 
 Exemplo de programa: 
 #include <stdio.h> 
 
int main(){ 
 printf("O programa A imprime o número 2\n"); 
 printf("O programa %c imprime o número 2\n",’A’); 
 printf("O programa A imprime o número %d\n",2); 
 printf("O programa %c imprime o número %d\n",’A’,2); 
 printf("O programa %c %s %d\n",’A’,"imprime o 
número",2); 
 
 return 0; 
} 
• A saída será: 
 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
Constantes 
49 
#include <stdio.h> 
 
int main(){ 
 printf("O programa A imprime o número 2\n"); 
 printf("O programa %c imprime o número 2\n",’A’); 
 printf("O programa A imprime o número %d\n",2); 
 printf("O programa %c imprime o número %d\n",’A’,2); 
 printf("O programa %c %s %d\n",’A’,"imprime o 
número",2); 
 
 return 0; 
} 
• A saída será: 
 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
O Programa A imprime o número 2 
O programa A imprime o número 2 
 Exemplo de programa: 
 
A função printf() 
50 
 Como já vimos, a função printf() permite, dentre outras 
coisas, imprimir informações na tela; 
 Faz parte da biblioteca padrão de C (stdio.h); 
 Pode receber um ou mais parâmetros, separados por vírgulas; 
 Permite o uso de caracteres especiais; 
 Ex.: \n (insere uma quebra de linha) 
 Também chamados de caracteres de escape; 
 Permite o uso de códigos para impressão formatada 
(códigos que são substituídos por valores com uma dada 
formatação); 
 Ex.: %d (é substituído por um valor inteiro). 
A função printf() 
51 
 Caracteres especiais da função printf(): 
Caractere Significado 
\a Caractere de alerta (emite som no computador) 
\b Retrocesso (backspace) 
\f Alimentação de formulário 
\n Nova linha 
\r Retorno de carro (volta para o início da linha) 
\t Tabulação horizontal 
\v Tabulação vertical 
\\ Barra invertida 
\? Ponto de interrogação 
\’ Aspas simples (apóstrofo) 
\” Aspas duplas 
A função printf() 
52 
 Códigos de impressão formatada printf(): 
Código Formato 
%c Caractere simples 
%d Número inteiro com sinal 
%e Número em notação científica 
%f Número em ponto flutuante 
%o Número octal (base 8) 
%x Número hexadecimal (base 16) 
%s Cadeia de caracteres (string) 
%u Número inteiro sem sinal 
%ld Número inteiro longo com sinal 
%lf Número em ponto flutuante longo (double) 
A função printf() 
53 
 Através dos códigos de impressão formatada, é 
possível definir também: 
 O tamanho mínimo para impressão de um campo; 
 A precisão e o arredondamento em campos de ponto 
flutuante; 
 O alinhamento à direita ou à esquerda; 
 A complementação com zeros à esquerda. 
A função printf() 
54 
#include <stdio.h> 
int main(){ 
 printf("Os alunos são %d.\n",350); 
 printf("Os alunos são %6d.\n",350); 
 printf("Os alunos são %06d.\n",350); 
 printf("%f\n%f\n", 3456.78, 6.78); 
 printf("%10.1f\n%10.1f\n", 3456.78, 6.78); 
 printf("%-10.3f\n%-10.3f\n", 3456.78, 6.78); 
 return 0; 
} 
Os alunos são 350. 
Os alunos são 350. 
Os alunos são 000350. 
3456.780000 
6.780000 
 3456.8 
 6.8 
3456.780 
6.780 
A função printf()- caracteres 
55 
 Em C, um caractere pode ser representado de diversas 
maneiras: 
 O próprio caractere, entre aspas simples; ou 
 Sua representação numérica (código ASCII) em decimal (base 10), 
hexadcecimal (base 16) ou octal (base 8); 
 Valor hexadecimal: sempre começa com 0x  Ex.: 0x41 
 Valor octal: sempre começa com 0  Ex.: 0701 
 O código ASCII (American Standard Code for Information 
Interchange) é um padrão internacional que associa um código 
numérico a cada caractere: 
 Codifica 256 caracteres diferentes; 
 http://www.asciitable.com/ 
 
A função printf()- caracteres 
56 
 Exemplo: 
#include <stdio.h> 
int main(){ 
 printf(“%d %c %x %o\n", ’A’ , ’A’ , ’A’ , ’A’); 
 printf(“%c %c %c %c\n", ’A’ , 65 , 0x41 , 0101); 
 return 0; 
} 
65 A 41 101 
A A A A 
• Saída: 
A função scanf() 
57 
 A função scanf()é uma função de leitura: 
 Permite a leitura de dados formatados da entrada padrão 
(teclado); 
 Também faz parte da biblioteca padrão de C (stdio.h); 
 Aguarda a digitação dos dados pelo usuário e atribui o valor 
digitado a uma variável; 
#include <stdio.h> 
int main(){ 
 int n; 
 printf("Digite um número e pressione Enter: "); 
 scanf("%d",&n); 
 printf("O valor digitado foi %d\n",n); 
 
 return 0; 
} 
A função scanf() 
58 
 A função scanf() usa os mesmos códigos de formatação de printf(); 
Código Formato 
%c Caractere simples 
%d Número inteiro com sinal 
%e Número em notação científica 
%f Número em ponto flutuante 
%o Número octal (base 8) 
%x Número hexadecimal (base 16) 
%s Cadeia de caracteres (string) 
%u Número inteiro sem sinal 
%ld Número inteiro longo com sinal 
%lf Número em ponto flutuante longo (double) 
A função scanf() 
59 
 A função scanf() prevê os seguintes parâmetros: 
 Uma expressão de controle (no formato de cadeia de 
caracteres); 
 Usando os mesmos códigos de formatação de printf(); 
 Um ou mais argumentos separados por vírgula; 
 Estes argumentos correspondem aos endereços das variáveis onde 
serão salvos os dados; 
Endereço de uma variável = endereço da posição de memória a ela 
associada. 
Endereço de uma variável: dado pelo operador & (address-of). 
Exemplo: scanf("%d",&n); 
O operador address-of (&) 
60 
 Exemplo: 
#include <stdio.h> 
 
int main(){ 
 int n = 8; 
 printf(“Valor: %d, Endereço: %u\n",n, &n); 
 
 return 0; 
} 
Valor: 8, Endereço: 3221217828 
• Saída (o endereço pode mudar a cada execução): 
Exemplo: scanf() e address-of (&) 
61 
 Exemplo: 
#include <stdio.h> 
 
int main(){ 
 float anos, dias; 
 printf(“Digite sua idade em anos: "); 
 scanf("%f",&anos); 
 dias = anos * 365; 
 printf("Sua idade em dias é %.0f.\n", dias); 
 
 return 0; 
} 
Digite sua idade em anos: 22.13 
Sua idade em dias é 8077. 
• Saída: 
Outras funções de entrada e saída (E/S) 
62 
 Tarefa para casa: 
 Estude o funcionamento das seguintes funções de E/S da 
linguagem C: 
 getchar(); 
 putchar(); 
 Entenda como cada uma funciona, quais são as diferenças 
entre elas e o que foi visto anteriormente e implemente 
alguns pequenos programas de teste. 
Operadores aritméticos 
63 
 Como o próprio nome sugere, operadores 
aritméticos são responsáveis pela execução de 
operações aritméticas entre constantes e variáveis; 
 A linguagem C oferece 06 operadores aritméticos 
binários (que operam sobre dois operandos) e 01 
operador aritmético unário (opera sobre um único 
operando): 
Operadores aritméticos - exemplo 
64 
#include <stdio.h> 
 
int main(){ 
 int a, b, c; 
 a = 4; 
 b = 3; 
 c = (a * b)/2; 
 printf("Variável \'a\' tem valor: %d\n", a); 
 printf("Variável \'b\' tem valor: %d\n", b); 
 printf("Variável \'c\' tem valor: %d\n", c); 
 printf(”Resto da div. entre a e b é: %d\n", a % b); 
 printf("O valor de \'-b\' é: %d\n", -b); 
 return 0; 
} 
Variável 'a' tem valor: 4 
Variável 'b' tem valor: 3 
Variável 'c' tem valor: 6 
Resto da div. Entre a e b é: 1 
O valor de '-b' é: -3 
Operadores de incremento/decremento 
65 
 C possui também dois operadores unários que 
permitem incrementar ou decrementar seus 
operandos: 
 Operador de incremento: ++; 
 Operador de decremento: --; 
 Estes operadores podem funcionar em dois modos: 
 Pré-fixado: são colocados antes do operando; 
 Ex.: ++n (neste caso a variável n é incrementada antes do seu valor 
ser usado); 
 Pós-fixado: são colocados depois do operando; 
 Ex.: n-- (neste caso a variável n é decrementada depois do seu valor 
ter sido usado); 
 
 
Operadores de incremento/decremento 
66 
#include <stdio.h> 
 
int main(){ 
 int a, b; 
 b = 3; 
 
 a = b++; 
 printf("Pós-incremento: \'a\' tem valor: %d\n", a); 
 printf("Variável \'b\' tem valor: %d\n", b); 
 
 a = ++b; 
 printf("Pré-incremento: \'a\' tem valor: %d\n", a); 
 printf("Variável \'b\' tem valor: %d\n", b); 
 
 return 0; 
} 
Pós-incremento: 'a' tem valor: 3 
Variável 'b' tem valor: 4 
Pré-incremento: 'a' tem valor: 5 
Variável 'b' tem valor: 5 
Precedência de operadores aritméticos 
67 
 Uma expressão aritmética em C como a+b*c será 
avaliada como a + (b*c), pois existe uma 
precedência entre os operadores; 
 Esta precedência é definida na seguinte ordem: 
 *, / (maior precedência) 
 % 
 +, - (menor precedência) 
 Operadores de incremento/decremento têm 
precedência maior que operadores aritméticos: 
 Ex.: a*++b é avaliado como (a)*(++b); 
Precedência de operadores aritméticos 
68 
#include <stdio.h> 
 
int main(){ 
 int a = 2; 
 int b = 3; 
 int c = a-++b*3; 
 
 printf(”c=%d\n", c); 
 printf(”b=%d\n", b); 
 
 return 0; 
} 
c=-10 
b=4 
Operadores relacionais 
69 
 Operadores relacionais são usados para fazer 
comparações; 
 São eles: 
 
 
 
 
 
 Operadores relacionais retornam valores inteiros com 
significado lógico: 
 1 = “verdadeiro”; 
 0 = “falso”; 
Cuidado para não 
usar “=“ ao invés 
de “==“! 
Operadores relacionais 
70 
#include <stdio.h> 
 
int main(){ 
 int verdad, falso; 
 verdad = ( 15 < 20 ); 
 falso = ( 15 == 20 ); 
 printf("Verdadeiro = %d, falso = %d\n",verdad, falso); 
 
 return 0; 
} 
Verdadeiro = 1, falso = 0 
Precedência de operadores relacionais 
71 
 A precedência de um operador relacional é mais 
baixa que a dos operadores aritméticos; 
 Ou seja, eles são avaliados após os operadores 
aritméticos; 
 Ex.: 
 3+5==5 é avaliado como (3+5) == 5 
Exercícios 
72 
8. Segundo o plano da disciplina TT214, a média final de um aluno é 
dada por: (P1 + P2 + T)/3. Implemente um programa que leia as 
notas de P1, P2 e T de um dado aluno e imprima sua média final. 
Atenção: cuidado para que a divisão por 3 seja feita na soma 
das notas, e não apenas em um dos termos. 
9. Faça um programa que leia um caractere do teclado e imprima o 
caractere seguinte (posterior) na tela. Dica: veja o que acontece 
ao se adicionar um valor numérico inteiro a uma variável do tipo 
caractere. 
 Ex.: entrada = a, saída = b 
10. Escreva um programa que recebe como entrada uma temperatura 
(número real) em graus Celsius e a transforme para Farenheit. 
Lembre-se que TFarenheit = TCelsius ∗1.8 + 32. 
Exercícios 
73 
11. Faça o inverso do exercício 10, ou seja, escreva um programa que 
recebe como entrada uma temperatura (número real) em graus 
Farenheit e a transforme para Celsius. 
12. Escreva um programa em C que receba a idade do usuário em 
anos e imprima na tela sua idade em minutos (desconsidere a 
existência de anos bissextos). 
 
 
Referências 
74 
 Coelho, Guilherme Palermo . Notas de Aula de Algoritmos e 
Programação de Computadores I, Faculdade de Tecnologia, 
Unicamp, 2013, Tópico I. 
 
 Mizrahi, V. V., Treinamento em Linguagem C – Módulo 1, 
Makron Books, São Paulo, 1995.

Continue navegando