View
103
Download
0
Category
Preview:
Citation preview
Curso de Linguagem C
Wellington Felix
Criada por Brian Kernighan e Denis Ritchie, na década de 1970, para uso em um computador DEC PDP-11 em Unix
C++ é uma extensão da linguagem C
Histórico
Apostila: Curso de Linguagem C – UFMG, http://www.inf.ufsc.br/~fernando/ine5412/C_UFMG.pdf
Kernighan, Brian W. – C, A Linguagem de Programação Padrão Ansi, Editora Campus
Bibliografia
Compilador utilizado para converter código fonte em código de maquina executável
Pode ser baixado em: http://www.bloodshed.net/devcpp.html
Devcpp
Estruturação de um programa em Cdiretivas para o pré-processador
declaração de variáveis globais
int main (int argc, char * argv[]){
declaração de variáveis locais da função main
comandos da função main}
Diretiva #include permite incluir uma biblioteca
Bibliotecas contêm funções pré-definidas, utilizadas nos programas
Diretivas para o processadorTambém chamada de biblioteca
Biblioteca Usos
#include <stdio.h> Funções de entrada e saída
#include <stdlib.h> Funções padrões
#include <math.h> Funções matemáticas
#include <string.h> Funções de texto
“Hello world” é referência ao programa mais simples a ser desenvolvido em uma linguagem de programação.
Normalmente, sua função é imprimir a mensagem “Hello World” (“Ola Mundo”) na tela do seu computador.
Primeiro Programa“Hello World”
#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){ printf (“Hello World!”); system(“PAUSE”);}
Termine todos os comandos com ; Quando ocorrer um erro de compilação, dê um
duplo clique sobre a mensagem de erro para destacar o comando errado no programa
Verifique também a linha anterior, que pode ser a responsável pelo erro, especialmente se faltar o ;
Use comentários. Eles são iniciados por // ou entre /* */◦ /* isto é um comentário */◦ // isto também é um comentário
Dicas
Usando comentários no“Hello World”
/* Meu primeiro programa em C */#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){ printf (“Hello World!”); // Imprime system(“PAUSE”); // Fica parado}
Variáveis são utilizadas para armazenamento de informações durante a execução do programa.◦ Cada variável pode armazenar um único tipo de
informação Toda variável precisa ser declarada antes de
ser utilizada. Os principais tipos de variáveis são: int,
float, double e char Uma variável pode ser inicializada durante
sua declaração.
Declaração de Variáveis
Exemplo de declaração de variáveis em C
#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
int idade;float altura;int x, y=1, z;double a = 1.5;char letra = ‘c’;
...}
Atribui o valor da direita à variável da esquerda
O valor pode ser:◦ uma constante◦ uma variável ◦ uma expressão
Atribuição
idade = 22; // idade recebe 22altura = 1.8; // altura recebe 1.8x = 4; // x recebe 4a = 1.5 + x; // a recebe 1.5 + xx = x + 1; // Incrementa x de 1letra = ‘c’; // letra recebe c
Função scanf ()scanf ("formatos", &var1, &var2,...);
Exemplos:int i, j;
float x;
char c;
scanf("%d", &i);
scanf("%d %f", &j, &x);
scanf("%c", &c);
scanf("%s", &nome);
Leitura de dados
%d inteiro decimal%f float%lf double%c char%s string
Operador
Exemplo Comentário
+ b + c Adição
- b – c Subtração
* b * c Multiplicação
/ b / c Divisão
% b % c Resto da divisão
++ b++ Incrementa de 1
-- b-- Decrementa de 1
Operadores Matemáticos
Operação de AtribuiçãoOperador
Exemplo Comentário
= a = b Atribuição
+= a += b Equivalente “a = a + b”
-= a -= b Equivalente “a = a - b”
*= a *= b Equivalente “a = a * b”
/= a /= b Equivalente “a = a / b”
% a %= b Equivalente “a = a % b”
Impressão de dados
Função printf()printf ("formatos", var1, var2,...);
Exemplos:int i, j;
float x;
char c;
printf("%d", i);
printf("%d %f", j, x);
printf("%c", c);
printf("%s", nome);
%d inteiro%f float%lf double%c char%s string
Exemplo#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
// declaracao de variaveisint idade;float altura, imc;
// leitura de dadosprintf(“Digite sua idade: “);scanf(“%d”, &idade);printf(“Digite sua altura: “);scanf(“%f”, &altura);
// processamentoimc = idade / (altura * altura);
// saida de dadosprintf(“IMC = %f”, imc); system(“PAUSE”);
}
Funções MatemáticasFunção Exemplo Comentário
ceil Arredonda para cima
cos Cosseno
exp Exponencial
fabs Absoluto
floor Arredonda para baixo
log Logaritmo natural
log10 Logaritmo decimal
pow Potência
sin Seno
sqrt Raiz quadrada
tan Tangente
Os comandos de controle de fluxo são a essência de qualquer linguagem, porque governam o fluxo da execução do programa
Estrutura de Decisão ou Controle de Fluxo
O comando IF é responsável por oferecer duas opções de fluxo de processamento, uma caso a condição avaliada der verdadeiro e outra caso ela der falso.
Comando IF
inicio
fim
instruções
condição?sim não
instruções
Comando IF
Se...Então...Se NãoSe <condição> então
<instruções>
Se não
<instruções> Em Linguagem Cif (<condição>) {
<instruções>
}
else {
<instruções>
}
Exemplo#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
// declaracao de variaveisint var;
// processamentoscanf(“%d”, &var);
if (var < 100){printf(“%d eh menor que 100“, var);
else {printf(“%d eh maior ou igual a 100“,
var);}
system(“PAUSE”);}
Leia dois números e imprima a diferença entre o número maior e o menor.
Exercício
O comando IF pode oferecer um processamento diferenciado apenas quando, a condição avaliada der verdadeiro.
Comando IF (caso degenerado)
inicio
fim
condição?sim
instruções
Comando IF
Se...EntãoSe <condição> então
<instruções>
Em Linguagem Cif (<condição>) {
<instruções>
}
Exemplo#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
// declaracao de variaveisint var;
// processamentoscanf(“%d”, &var);
if (var < 100){printf(“%d eh menor que 100“, var);
}
system(“PAUSE”);}
Faça um programa que sorteia um número (use a função rand()) de 0 a 10 e solicite para o usuário advinha-lo. Imprima “acertou” caso o número seja descoberto, e “errou” caso tenha escolhido o numero errado.
Faça um programa que calcule o Índice de Massa Corpórea (IMC) e classifique se a pessoa está com subpeso, normal, sobrepeso ou obesa.
Exercício
O propósito do comando SWITCH-CASE é oferecer uma forma mais direta de obter um mecanismo de seleção para múltiplas opções.
Comando SWITCH - CASE
inicio
fim
opção?
caso opção 1 caso opção 2 caso opção 3nenhuma das
anteriores...
Comando Switch-Case
Comute...casoComute <condição>
caso valor1
<instruções>
caso valor2
<instruções>
...
caso nenhuma dela
<instruções>
Em Linguagem Cswitch (<condição>) {
case valor1:
<instruções>
break;
case valor2:
<instruções>
break;
...
default:
<instruções>
}
Exemplo#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
// declaracao de variaveisint opcao;
// processamentoscanf(“%d”, &opcao);
switch (opcao){case 1:
printf(“Voce escolheu a opcao 1”);break;
case 2:printf(“Voce escolheu a opcao 2”);break;
case 3:printf(“Voce escolheu a opcao 3”);break;
default:printf(“Outra opcao”);break;
}
system(“PAUSE”);}
Fazer uma calculadora que realize as operações de adição, subtração, multiplicação, divisão, potência.
Exercícios
Se uma ação se repete em um algoritmo, em vez de escrevê-la várias vezes, em certos casos podemos resumir anotando uma vez só e solicitando que ela se repita, usando uma das estruturas de repetição.
Podemos executar uma ação (ou um conjunto de ações) um número definido ou indefinido de vezes, ou enquanto um estado permanecer ou até que um estado seja atingido
Estruturas de Repetição
Comando FOR
Para...até...repetirPara <var> = <inicio> até <fim> repetir
<instruções>
Em Linguagem Cfor ( var=inicio; var<=fim; var++) {
<instruções>
}
inicio
fim
var = inicio
operação a ser repetida
var++;
var <= fim
simnão
Exemplo/* contando de 1 a 10 */#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
// declaracao de variaveisint var;
// processamentofor ( var = 1; var <= 10; var++) {
printf(“%d “, var);}
system(“PAUSE”);}
Comando WHILE
Enquanto...Repetir
enquanto (condição) repetir
<instruções>
Em Linguagem C while (<condição>) {
<instruções>
}
inicio
fim
condição inicial
operação a ser repetida
atualiza condição
condição final ?
nãosim
Exemplo/* contando de 1 a 10 */#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
// declaracao de variaveisint contador;
// processamentocontador = 1;while (contador <= 10) {
printf(“%d “, contador);contador++;
}
system(“PAUSE”);}
Comando DO - WHILE
inicio
fim
contador inicial
operação a ser repetida
atualiza condição
condição final ?
não
sim
Em Linguagem C do {
<instruções>
} while (<condição>);
Repetir ... Enquanto
repita
<instruções>
enquanto (condição)
Exemplo/* contando de 1 a 10 */#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
// declaracao de variaveisint contador;
// processamentocontador = 1;do {
printf(“%d “, contador);} while (contador < 10);
system(“PAUSE”);}
Faça um programa para calcular e escrever o valor de S:
Faça um programa para calcular os 20 primeiros termos da série de Fibonacci
Faça um programa para calcular os números primos menores que 100
Exercícios
199
100...
5
3
3
2
1
1S
,...13,8,5,3,2,1,1,0Fibonacci
Uma unidade autônoma de código do programa é desenhada para cumprir uma tarefa particular.◦ Geralmente os programas em C consistem em várias
pequenas funções◦ A diretiva return é usada para terminar uma função e
retornar um valor a função que a chamou
Funções
Em Linguagem C tipoDeRetorno nomeDaFuncao(<parametro1>, ..., <parametroN> )
{
<instruções>
return valor;
}
Exemplo#include <stdio.h>#include <stdlib.h>
float soma(float valor1, float valor2) {return valor1+valor2;
}
float media(float n1, float n2) {return (n1+n2)/2;
}
int main(int argc, char * argv[]){
float valor1, valor2, resultado;scanf(“%f”, &valor1);scanf(“%f”, &valor2);
resultado = soma(valor1, valor2);printf(“soma = %f”, resultado);
resultado = media(valor1, valor2);printf(“media = %f”, resultado);
system(“PAUSE”);}
Exemplo#include <stdio.h>#include <stdlib.h>
float soma(float valor1, float valor2) {return valor1+valor2;
}
float media(float n1, float n2) {return soma(n1,n2)/2;
}
int main(int argc, char * argv[]){
float valor1, valor2, resultado;scanf(“%f”, &valor1);scanf(“%f”, &valor2);
resultado = soma(valor1, valor2);printf(“soma = %f”, resultado);
resultado = media(valor1, valor2);printf(“media = %f”, resultado);
system(“PAUSE”);}
Um procedimento é uma função que não retorna valor
Um procedimento é declarado com parâmetro de retorno do tipo void
Procedimento
Em Linguagem C void nomeDoProcedimento(<parametro1>, ..., <parametroN> )
{
<instruções>
}
Exemplo#include <stdio.h>#include <stdlib.h>
void dobro(float valor) {printf(“Dobro de %f = %f”, valor,
2*valor);}
int main(int argc, char * argv[]){
float, valor;scanf(“%f”, &valor);
dobro(valor);
system(“PAUSE”);}
O valor de um argumento é copiado para o parâmetro formal da função,◦ Alterações no processamento da função não
alteram os valores das variáveis de origem
Passagem de Parâmetropor Valor
Exemplo#include <stdio.h>#include <stdlib.h>
void dobro(float valor) {valor *= 2;printf(“Na funcao = %f\n”, valor);
}
int main(int argc, char * argv[]){
float valor;scanf(“%f”, &valor);
printf(“Antes da funcao = %f\n”, valor);
dobro(valor);printf(“Depois da funcao = %f\n”,
valor);
system(“PAUSE”);}
Permite a alteração do valor de uma variável dentro de uma função◦ O valor permanece alterado mesmo após o
termino da função Para isso é necessário a passagem do
endereço do argumento para a função
Passagem de Parâmetropor Referência
Em Linguagem CtipoDeRetorno funcao(float * var) {
...(* var) = <expressão>;...
}
Exemplo#include <stdio.h>#include <stdlib.h>
void dobro(float * valor) {(* valor) *= 2;printf(“Na funcao = %f\n”, * valor);
}
int main(int argc, char * argv[]){
float valor;scanf(“%f”, &valor);
printf(“Antes da funcao = %f\n”, valor);
dobro(& valor);printf(“Depois da funcao = %f\n”,
valor);
system(“PAUSE”);}
Escreva um programa que leia dois números nas variáveis A e B. Após a chamada da função inverte, o valor de A é gravado em B e o valor de B é gravado em A.
Escreva um programa que leia dois números nas variáveis A e B. Após a chamada da função ordena, a variável A ficará com o menor valor e a variável B ficará com o maior valor.
Exercícios
Um vetor é uma seqüência de vários valores do mesmo tipo, armazenados seqüencialmente na memória◦ Faz uso de um mesmo nome de variável para acessar
esses valores.◦ Um vetor também pode ser entendido logicamente
como uma lista de elementos de um mesmo tipo. Cada elemento da sequencia pode ser
acessado individualmente através de um índice.◦ Os elementos são indexados de 0 até n-1, onde n é a
quantidade de elementos do vetor
Vetores
Declaraçãotipo variável[tamanho];
Em Linguagem Cint vet[10];int vetor[5] = {10, 3, 56, 23, 12},
5
0
6
1
19
2
14
3
Vetores
8
4
3
5
3
6
5
7
1
8
-4
9
vet
10 posições
Exemplo#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
int i, vector[10], total=0;
for ( i=0; i<10; i++) {printf(“posicao %d = “);scanf(“%d”, &vector[i]);
}for ( i=0; i<10; i++) {
total += vector[i]);}printf(“Total = %d\n”, total);
system(“PAUSE”);}
Escreva um programa que lê 8 números e imprima os mesmos na ordem inversa de leitura
Armazene 10 números lidos do usuário e imprima◦ O menor◦ O maior◦ A média◦ A moda◦ A mediana
Faça um programa capaz de sortear automaticamente jogos da megasena (surpresinha) com 6 dezenas
Leia 10 números inteiros ao acaso e apresentem os mesmos em ordem crescente e decrescente
Crie um programa capaz de ordenar uma sequencia qualquer de 10 números
Exercícios
Uma matriz é uma estrutura de armazenamento multidimensional de dados em memória◦ Faz uso de um mesmo nome de variável para acessar
esses valores.◦ Uma matriz também pode ser entendida logicamente
como uma tabela de elementos de um mesmo tipo. Cada elemento da sequencia pode ser acessado
individualmente através de um índice definido por um estrutura de coordenada.◦ As dimensões são indexadas a partir do indice 0 (zero)
Matrizes
Declaraçãotipo variável[numeroDeLinhas][numeroDeColunas];
Em Linguagem Cint mat[3][10];int matriz[3][5] = {{10, 3, 56, 23, 12}, {1, 6, 57, 68, 80}, {65, 45, 79, 42, 7}};
5
0
6
1
19
2
14
3
Matriz Bidimensional
8
4
3
5
3
6
5
7
1
8
-4
9
mat
10 posições
5 6 19 14 8 3 3 5 1 -4
5 6 19 14 8 3 3 5 1 -4
3 posições
Exemplo#include <stdio.h>#include <stdlib.h>
int main(int argc, char * argv[]){
int i, j, matriz[3][10], total;
for ( i=0; i<10; i++) {for ( j=0; j<10; j++) {
printf(“posicao (%d,%d) = “, i, j);
scanf(“%d”, &matriz[i][j]);}
}for ( i=0; i<10; i++) {
total = 0;for ( j=0; j<10; j++) {
total += matriz[i][j]);}printf(“Total(%d)= %d\n”, i, total);
}system(“PAUSE”);
}
Escreva um programa que leia uma tabela de 5 linhas 3 colunas e imprima a linha cuja soma é a maior.
Faca um programa que calcule a media de 4 alunos segundo os critérios da Facp.
Escreva um programa que simule o acompanhamento dos pontos dos pilotos de F1 ao logo das corridas
Faça um programa que simule o jogo da velha
Exercícios
Recommended