Professional Documents
Culture Documents
Compiladores e Interpretadores
Criar um Programa
DEVC++
Clique no botão para criar um novo projeto, conforme figura 1(a). Selecione o tipo
de aplicação a ser desenvolvida, Console Application, a linguagem de programação, C
Project, e o nome do projeto, conforme figura 1(b). Finalmente, escolha o diretório onde os
arquivos do projeto serão armazenados.
(a) Criação do projeto.
1
O Dev-C++ preenche já um código que normalmente você vai precisar para
testar/rodar o seu programa em consoles do MS Windows. Como indica a figura 2.
Compilação e execução
2
programa, execute o programa e feche a janela depois que o programa terminou. Na
maioria dos computadores novos, isto se passa tão rápido que você pode nem perceber que
ele rodou. É por esta razão que o Dev-C++ já incluiu no código de novos projetos a
chamada da função system() com o argumento "PAUSE" que provoca uma parada antes do
término do programa para que o usuário do sistema de janelas possa ver o resultado do
programa. Se você quiser, use o system("PAUSE"). Mas lembre-se de contar para o
compilador onde estão as definições necessárias para usar esta função:
Insira um #include <stdlib.h>.
Code::Blocks
3
Clique em Next para as duas próximas janelas, em especial para a segunda janela a
seguir, se certifique que linguagem selecionada é a C.
Na janela a seguir, digite um nome para o arquivo de programa a ser digitado. Para
tanto, clique no quadrado com ... que aparece ao lado da caixa com título Filename with full
path: e digite um nome de arquivo.
4
Clique agora em Salvar e depois em Finish. Na janela que foi criada você vai digitar,
compilar e executar seu primeiro programa em C.
5
se tudo der certo, na janela de log abaixo do programa, haverá a indicação de que o
programa foi compilado com sucesso: 0 errors, 0 warnings
Com o programa compilado sem erros, a pasta onde foi salvo o arquivo contém
agora o programa executável ".exe." Para executar o programa clique no botão
da janela principal do Code::Blocks. Deverá surgir uma nova janela, de DOS, mostrando a
execução de seu programa, como pode ser visto na figura abaixo.
6
Pressione qualquer tecla para continuar . . .
Depois de conferir o resultado, pressione qualquer tecla para que a janela do DOS
desapareça. Se a janela do DOS não desaparecer, para fechá-la clique no X, no canto
superior direito da mesma.
main( ): deve existir em algum lugar do programa, pois marca o início do programa.
Primeiro Programa
main ( )
{
printf(“Primeiro Programa”);
}
onde:
- “printf(“Primeiro Programa”);” é uma instrução e as instruções em
devem ser encerradas por “;”.
- printf( ) é uma função de E/S (Entrada e Saída), em que no interior dos
parenteses estão as informações passadas pelo programa, neste caso
main( ), a função printf ( ), isto é, “Primeiro Programa”, que chamamos
de argumento.
Quando o programa encontra a linha “printf(“Primeiro Programa”);”, ele passa o
controle para a função printf ( ), que irá imprimir na tela do computador e quando encerra a
execução volta novamente para o programa.
Sintaxe:
printf(“expressão de controle”,lista de argumentos);
Exemplo:
main( )
{
printf(“Este e o numero dois: %d”,2);
}
Saída: Este e o numero dois: 2
7
Esta função printf ( ), ilustrada acima possui 2 argumetos, onde o primeiro é “Este e
o numero dois: %d” e o segundo o “2”, mas ela pode possuir vários argumentos, que devem
ser separados por “,”.
A expressão de controle pode conter caracteres que serão exibidos na tela e códigos
de formatação que indicam o formato em que os argumentos devem ser impressos. Na
função printf ( ), acima a expressão de controle é o %d, que solicita a printf ( ) que imprima
o segundo argumento em formato decimal.
Abaixo está listado algumas expressões de controle de printf ( ):
%c Caractere simples
%d Decimal
%f Ponto flutuante
%s Cadeia de caracteres
\n Nova linha
\” Aspas
\\ Barra
/* Comentários
%% %
Constantes e Variáveis
Exemplo:
main ( )
{
int num;
num = 2;
printf(“Este e o numero dois: %d”,num);
}
8
Tipo Descrição
char equivale ao tipo caractere
int equivale ao tipo inteiro
float equivale ao tipo real
void tipo nenhum
Exemplo: evento.c
main ( )
{
int evento;
char corrida;
float tempo;
evento = 5;
corrida = ‘c’;
tempo = 27.25;
printf("O tempo vitorioso na eliminatoria %c",corrida);
printf("\n da competicao %d foi %f.",evento,tempo);
}
Palavras-Chaves
Exercícios
9
Função scanf( )
Função de E/S, que permite ler dados formatados da entrada padrão (teclado).
Sintaxe:
scanf (“expressão de controle”, lista de argumentos);
onde os argumentos devem ser endereços de variáveis. A expressão de controle
deve conter códigos de formatação, precedidos por um sinal %. A lista de argumentos deve
consistir somente nos endereços das variáveis.
O operador de endereços “&”, é o endereço do operando. Exemplo:
int n; /* variável n, do tipo inteiro
n = 2; /* n recebe o valor 2
n /*se for referenciado assim retorna o valor 2
&n /*se for referenciado assim retorna o endereço
onde n está guardado.*/
main()
{
int num;
num = 2;
printf(“Valor = %d, Endereço = %u”, num, &num);
}
Saída: Valor = 2, Endereço = 1370.
A seguir estão alguns códigos de formatação da função scanf ( ):
Código Função
%c Leia um único caractere.
%d Leia um inteiro decimal.
%s Leia uma série de caracteres
%f Leia um número em ponto flutuante.
Exemplo: idade.c
main()
{
float anos, dias;
printf(“Digite a sua idade em anos:”);
/*Necessário que digite [enter] para terminar a leitura*/
scanf(“%f”,&anos);
dias = anos * 365;;
printf (“Sua idade em dias e: %.0f.\n”,dias);
}
Em algumas situações a função scanf ( ) não se adapta perfeitamente pois você
precisa pressionar [enter] depois de sua entrada para que scanf ( ) termine a leitura. Neste
caso existem outras funções:
10
Operadores Aritméticos
Os operadores aritméticos binários, ilustrados abaixo, são aqueles que operam sobre
dois operandos:
= Atribuição
+ Soma
- Subtração
* Multiplicação
/ Divisão
% Módulo (devolve o resto da divisão)
- Menos unário
Exemplo:
num = -1;
num1 = - num; /* então, num1 = 1
Outro exemplo:
main()
{
int ftemp, ctemp;
printf (“Digite a temperatura em graus Fahrenheit:");
scanf (“%d”,&ftemp);
ctemp = (ftemp – 32) *5/9;
printf(“Temperatura em graus Celsius: %d”,ctemp);
}
11
Exemplos:
n=5
x = n++;
printf (“x = %d n = %d”,x,n);
Saída: x = 5 n = 6
n=5
x = ++n;
printf (“x = %d n = %d”,x,n);
Saída: x = 6 n = 6
Exemplos:
i+ = 2 i=i+2
x* = y + 1 x = x * (y+1)
t/=2.5 t = t / 2.5
p% =5 p = p%5
d - =3 d=d–3
Operadores Relacionais
> Maior
>= Maior ou igual
< Menor
<= Menor ou igual
== Igualdade
!= Diferente
Observação:
Variável booleana: assume V (verdadeiro) ou F (falso), ou seja, 1 se verdadeiro e 0
se falso.
12
Exemplo:
main()
{
int verdade, falso;
verdade = (15<20);
falso = (15==20);
printf(“Verdadeiro = %d, Falso = %d”, verdade, falso);
}
Saída
Verdadeiro = 1, Falso = 0
Comentários
/*Comentários
ou
/*Comentários
Comentários*/
Exercícios
1. Escreva um programa no qual você digita o ano de nascimento e ele te informa quantos
anos você tem ou vai fazer neste ano.
2. Escreva um programa que solicite 3 números em ponto flutuante e imprima a média
aritmética.
3. Escreva um programa que receba 4 números inteiros, calcule e mostre a soma desses
números.
4. Faça um programa que receba 3 notas, calcule e mostre a média aritmética entre elas.
5. Faça um programa que receba o salário de um funcionário, calcule e mostre o novo
salário, sabendo-se que este sofreu um aumento de 25%.
6. Faça um programa que calcule e mostre a área de um triângulo.
Sabe-se que: Área = (base * altura)/2
7. Faça um programa que calcule e mostre a área de um círculo.
Sabe-se que: A = R2 e = 3,1415
8. Faça um programa que receba o custo de um espetáculo teatral e o preço do convite
desse espetáculo. Esse programa deve calcular e mostrar a quantidade de convites que
devem ser vendidos para que pelo menos o custo do espetáculo seja alcançado.
9. Faça um programa que receba o preço de um produto, calcule e mostre o novo preço,
sabendo-se que este sofreu um desconto de 10%.
10. Faça um programa que calcule e mostre a área de um quadrado.
Sabe-se que: A = lado * lado.
13
Operadores Lógicos
Comando if
Sintaxe:
if(condição)
comando1;
else
comando2;
Exemplos:
/* Exemplo 1 */
#include <stdio.h>
main()
{
int num;
printf("Digite um numero: ");
scanf("%d", &num);
if(num>0)
printf("%d eh positivo", num);
else
printf("%d eh negativo", num);
}
/* Exemplo 2 */
#include <stdio.h>
int main(void)
{
int num;
printf("Digite um numero: ");
14
scanf("%d", &num);
if(num%2==0){
printf("%d e' par\n", num);
printf("A metade e' %d\n", num/2);
}
else
printf("%d e' impar\n", num);
}
Exercício: Faça um programa que teste se um número lido é positivo ou negativo, e ainda,
que verifique se é par ou ímpar.
Comando else if
O comando else if é utilizado quando existem mais que duas condições a serem
testadas para diferentes saídas.
Sintaxe:
if(condição1)
comando1;
else if (condiçao2)
comando2;
else
comando3;
Comando switch
Este é um comando de seleção útil para ser utilizado quando a mesma variável é
comparada diversas vezes com valores diferentes. Um switch pode substituir muitos
comandos if.
Sintaxe:
switch(variável){
case valor1:
comandos a serem executados se
variável==valor1
break;
case valor2:
comandos a serem executados se
variável==valor12
break;
...
case valorn:
comandos a serem executados se
variável==valorn
15
break;
default:
comandos a serem executados se o valor não foi
encontrado
}
/* Exemplo3: */
#include <stdio.h>
main()
{
int dia;
printf("Informe o dia da semana (1-7): ");
scanf("%d" , &dia);
switch(dia){
case 1:
printf("Domingo\n");
break;
case 2:
printf("Segunda-feira\n");
break;
case 3:
printf("Terça-feira\n");
break;
case 4:
printf("Quarta-feira\n");
break;
case 5:
printf("Quinta-feira\n");
break;
case 6:
printf("Sexta-feira\n");
break;
case 7:
printf("Sábado\n");
break;
default:
printf("Dia inválido\n");
}
}
16
Exercícios
main ()
{
int x = 3;
if (x > 4)
x = 2 *x;
x = x + 1;
}
Pontos Conceito
0 a 49 D
50 a 69 C
70 a 89 B
90 a 100 A
17
Laços
O Laço for
Sintaxe:
for (inicialização; condição; incremento)
{
comandos;
}
Onde:
- inicialização: instrução de atribuição, que é executada uma única vez antes
do laço ser inicializado;
- condição: instrução de teste que controla o laço, é avaliada como verdadeira
ou falsa toda vez que o laço for iniciado ou reiniciado. Se verdadeira o corpo
do laço é executado e se for falsa o laço é terminado e o programa passa para
a instrução seguinte do programa.
- incremento: define como a variável de controle do laço será alterada cada
vez que o laço é repetido. Esta instrução é executada, toda vez,
imediatamente após a execução do corpo do laço. Pode ser feito tanto
incremento quanto decremento da variável de controle.
Exemplo1: lacofor.c
Saída do programa:
Conta = 0
Conta = 1
Conta = 2
Conta = 3
Conta = 4
18
Exemplo2:
main()
{
int conta, total;
total = 0;
for (conta = 0; conta < 10; conta++)
{
total =total+conta;
printf(“Conta = %d, Total = %d \n”,conta,
total);
}
}
}
}
}
Exercícios
1. Modifique o programa lacofor.c, para as seguintes situações:
a. Imprima os números de 9 a 0.
b. Imprima os números múltiplos de 3 contidos no intervalo de 0 a 9.
2. Escreva um programa que imprima o quadrado de todos os inteiros de 1 ao 20,
utilizando o laço for.
3. Escreva um programa, utilizando o laço for, para ler e determinar a média de 4 notas.
4. Faça um programa para calcular o fatorial de n, sabendo que o fatorial de um inteiro
não negativo n é o produto de todos os inteiros de 1 até n.
n! = 1, se n = 1 ou n = 0
19
n! = 1 * 2 * 3 * ... * n-1 * n
5. A seqüência de Fibbonaci é a seqüência (1,1,2,3,5,8,13,...) definida por:
An = 1, se n =1 ou n = 2
An = An - 1 + An - 2, se n >2
Escreva um programa que determine o n-ésimo termo desta seqüência, sabendo que n é
fornecido pelo usuário.
O Laço while
Sintaxe:
while (condição)
{
comandos;
}
Exemplo:
main(){
int conta = 0;
while (conta < 10)
{
printf(“Conta = %d\n”,conta);
conta++;
} }
Este laço é mais utilizado em situações em que o laço pode ser terminado
inesperadamente por condições desenvolvidas dentro do próprio laço. Como o laço for ele
pode possuir múltiplas instruções dentro de um laço e pode ser utilizado também aninhado.
Exercícios
6. Escreva um programa que leia n notas e calcule a média, sabendo que ele deve mostrar
a média quando a nota lida for –1.
a-) b-)
int cont = 0, x = 2; int i = 0, x = 3;
while (cont < 5) while (i <= 6)
{ {
x = x + 10; x = x + 3;
cont++; i +=2;
} }
20
O Laço do-while
Bastante similar ao laço while, mas a diferença entre os dois é que no do-while o
teste de condição é avaliado depois do laço ser executado. Assim este laço é sempre
executado uma vez.
Sintaxe:
do
{
comandos;
} while(condição);
Exemplo:
main()
{
float nota, soma, media;
int cont = 0;
soma=0;
do{
printf("Digite a nota:");
scanf("%f",¬a);
soma =soma + nota;
cont++;
} while(nota!=-1);
media = soma/(cont-1);
printf("Media = %.2f",media);
}
Exercícios
21
Vetores
Vetor é um tipo de dado usado para representar uma certa quantidade de variáveis
de valores homogêneos (do mesmo tipo).
Imagine o seguinte problema: calcular a média das notas da prova de 5 alunos. Você
poderia declarar:
int notas[5];
Esta declaração aloca memória para armazenar 5 inteiros e anuncia que “notas” é
um vetor de 5 elementos de inteiros. A palavra “int” declara que todo elemento do vetor é
do tipo “int”. “notas” é o nome dado ao vetor e “[5]” indica que o vetor terá 5 elementos.
Em C, os vetores precisam ser declarados, como quaisquer outras variáveis, para
que o compilador conheça o tipo do vetor e reserve espaço de memória suficiente para
armazená-la.
Os elementos de um vetor são guardados numa seqüência contínua de memória, isto
é, um seguido ao outro.
Na declaração de um vetor, deve-se colocar entre [ ] o tamanho o do vetor (quantos
elementos ele poderá armazenar).
22
Referenciando um elemento do vetor
vetor
conteúdo
0 1 2 3 4 posição
notas[2]
Este não é o segundo elemento do vetor e sim o terceiro, pois a numeração começa
em 0. Assim o último elemento do vetor possui um índice menor que o tamanho do vetor.
Exemplo 1: Faça uma programa que declare um vetor para armazenar 5 notas, leia
as 5 notas e calcule a média.
#include <stdio.h>
main()
{
int notas[5];
int i, soma = 0;
23
Armazenando dados no vetor
O laço for causa um processo de solicitação ao usuário e leitura das notas, repetido
5 vezes. Na instrução scanf( ), nós usamos o operador (&) junto da variável notas[i], que é
uma variável como outra qualquer.
Exemplo 2: Faça um programa que leia notas até que a nota seja menor ou igual a
0. Calcule e apresente a média das notas.
#include<stdio.h>
#define tamanho 40
main(){
float notas[40], soma = 0.0;
int i;
do
{
printf(“Digite a nota do aluno %d: ”, i);
scanf(“%f”, ¬as[i]);
if (notas[i] > 0)
soma = soma + notas[i];
i++;
} while(notas[i] > 0);
printf(“media das notas = %.2f”, soma/(i-1) );
}
24
No exemplo2, a diretiva define foi utilizada para criar uma constante chamada
“tamanho” e que contém o valor 40. O uso de constantes para dimensionar vetores é
comum em C, pois, se com o passar do tempo quisermos aumentar ou diminuir este valor,
precisamos somente trocar o 40 pelo número desejado e a troca refletirá em qualquer parte
do programa onde a palavra “tamanho” aparece.
A variável notas foi definida com o tamanho máximo de 40 elementos reais,
utilizando a palavra “tamanho”.
No exemplo 2, o laço do-while repete a solicitação da nota ao usuário,
armazenando-a no vetor “notas”, até que seja fornecido um valor menor ou igual à zero (0).
Quando o último item for digitado, a variável i terá alcançado um valor acima do valor total
de itens. Portanto, para encontrar o número de itens válidos devemos subtrair 1 do valor
contido em i.
O ideal no exemplo 2 é verificar se o limite máximo do vetor não foi ultrapassado e
isso é de responsabilidade do programador. Sendo assim, poderíamos embutir o seguinte
trecho no código:
do
{
if (i > = tamanho)
{
printf(“capacidade máxima do vetor
preenchida\n”);
break;
}
Inicializando vetores
Um vetor pode ser inicializado na instrução de sua declaração, para que possamos
especificar valores prefixados. Para sua inicialização devemos colocar os valores separados
por vírgulas e todos eles entre { }. A quantidade de valores definidos não pode ser superior
ao tamanho máximo do vetor. Se há menos inicializadores que a dimensão especificada, os
outros serão zero.
25
Exemplo 3:
#include<stdio.h>
main()
{
float soma = 0.0 , notas[5] = {5.0, 6.0, 7.0, 8.0,
9.0};
int i;
Exercícios
26
Matrizes
Matriz é um conjunto de dados com o mesmo tipo, referenciado por um nome e que
necessita de mais de um índice para armazenar seus elementos.
float nota[5][3];
27
Exemplo1: armazenando dados na matriz “nota”
#include<stdio.h>
main(){
float nota[5][3];
int i,j;
Exemplo:
float nota[2][3] = { {8.0, 3.0, 5.0},
{8.5, 3.5, 5.5}};
28
Declarando e armazenando dados em uma matriz de strings
#include <stdio.h>
main()
{char aluno[5][30];
int i;
for (i=0; i<5; i++)
{
printf(“Entre com o nome do aluno %d”, i);
scanf(“%s”, aluno[i]);
}
}
OBS: É importante notar que para a leitura de uma string, usando scanf, não é necessário
usar o símbolo & antes do nome da variável.
Exercícios:
1) Faça um programa que leia 200 números inteiros e armazená-los por linha em uma
matriz de 20 linhas e 10 colunas.
2) Faça um programa onde os seguintes números devem ser lidos para uma matriz de 4
linhas e 3 colunas: 21, -3, 55, 788, 5, 93, 4, 45, 595, 666, 5 e 88. A saída do programa
deve ter o seguinte formato.
21 5 595
-3 93 666
55 4 5
788 45 88
3) Faça um programa que leia os dados de uma matriz de 4 linhas e 4 colunas, composta
de elementos reais, e calcule a soma dos elementos da diagonal principal da matriz.
4) Faça um programa que leia os valores de uma matriz 10x10 de elementos reais, e crie a
matriz transposta da matriz fornecida.
5) Faça um programa que leia uma matriz 20x20 de elementos reais e gere um vetor de 20
elementos reais, onde cada elemento do vetor seja a soma de cada linha da matriz.
6) Faça um programa que receba uma matriz 10x10 de elementos inteiros, e localize a
posição (linha e coluna) do maior elemento da matriz.
7) Faça um programa que calcule a média das notas por aluno e a média geral de 5 alunos,
sabendo que cada um fez 3 provas.
Bibliografia
29