rang
el@
dsc.
ufpb
.br
DSC/CCT/UFCG
Carga Horária:60 h
Profs.: José Eustáquio Rangel de QueirozRoberto Medeiros de FariaUlrich Schiel
2
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
Tópicos2.1 Introdução2.2 Um Programa C Simples: Impressão de uma Linha
de Texto2.3 Outro Programa C Simples : Soma de Dois Inteiros2.4 Conceitos sobre Memória2.5 Aritmética em C2.6 Tomada de Decisões: Operadores de Igualdade e
Relacionais
Introdução à Programação
3
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.1 IntroduçãoLinguagem de programação C
Abordagem estruturada e disciplinada para projeto de programa
Programação estruturada Introduzida nos capítulos 3 e 4 do livro-texto Usada em todo o restante do livro-texto
4
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.2 Um Programa Simples: Impressão de uma Linha de Texto
Comentários Texto delimitado por /* e */ é ignorado pelo
computador Usado para descrever programa
1 /*Primeiro programa em C */ 2 3 #include <stdio.h> /* biblioteca que realiza o “printf()” */ 4 5 int main() { 6 7 printf( “Bem-vindo ao C!\n" ); 8 9 return 0; /* como “main” foi declarada do tipo int tem que retornar um valor */
10 }
5
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
#include <stdio.h> Diretiva do pré-processador
Indicação ao computador para carregar um certo arquivo
<stdio.h> Permite operações padrão de entrada/saída
int main() Programas em C contém uma ou mais funções,
uma das quais tem que ser exatamente main Parênteses são usados para indicar uma função
2.2 Um Programa Simples: Impressão de uma Linha de Texto
6
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
int main() int significa que main "retorna" um valor inteiro Chaves ({ }) indicam a existência de um bloco
O corpo de todas as funções tem que está contido entre chaves
2.2 Um Programa Simples: Impressão de uma Linha de Texto
7
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
printf(“Bem-vindo ao C!\n"); Instrui o computador a realizar uma ação
Especificamente, imprime a cadeia de caracteres entre aspas (“ ”)
A linha inteira equivale a um comando Todos os comandos têm que terminar com um
ponto-e-vírgula (;) Caractere de escape (\)
Indica que o printf deve fazer algo fora do comum \n é o caractere nova-linha
2.2 Um Programa Simples: Impressão de uma Linha de Texto
8
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
return 0; Maneira de sair de uma função return 0, neste caso, significa que o programa
terminou normalmente
Fecha-chave (}) Indica que o fim do main foi encontrado
2.2 Um Programa Simples: Impressão de uma Linha de Texto
9
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
Linker Quando uma função é chamada, o linker a localiza
na biblioteca A insere no programa-objeto (.obj) Se o nome da função for escrito incorretamente, o
linker produzirá um erro, pois não será capaz de encontrar a função na biblioteca
2.2 Um Programa Simples: Impressão de uma Linha de Texto
10
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.2 Um Programa Simples: Impressão de uma Linha de Texto
1 /*Programa de soma */ 2 3 #include <stdio.h> 4 5 int main() { 6 7 int int1, int2, soma; /* declaração */ 8 9 printf( “Entre com o primeiro inteiro:\n" ); /* prompt
*/10 scanf( "%d", &int1 ); /* lê um inteiro */11 printf( “Entre com o segundo inteiro:\n" ); /* prompt */12 scanf( "%d", &int2 ); /* lê um inteiro */13 soma = int1 + int2; /* atribui à soma */14 printf( “A soma eh igual a %d\n", soma ); /* imprime soma */1516 return 0; /* indica que o programa foi bem-sucedido */17 }
Entre com o primeiro inteiro:Entre com o primeiro inteiro:4545Entre com o segundo inteiro:Entre com o segundo inteiro:7272Soma eh igual a 117Soma eh igual a 117
11
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
Vide análise do programa anterior Comentários, #include <stdio.h> e main
int int1, int2, soma; Declaração de variáveis
Variáveis posições na memória nas quais um valor pode ser armazenado
int significa que as variáveis podem guardar inteiros (-1, 3, 0, 47)
2.3 Outro Programa Simples: Soma de dois Números
12
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
Vide análise do programa anterior Nomes de variáveis (identificadores)
int1, int2, soma Identificadores consiste de letras, dígitos (nãonão
podem começar por dígitos) e sublinha( _ ) Case sensitive (maiúscula diferente de minúscula)
Declarações aparecem antes dos comandos executáveis
Se um comando executável referencia uma variável não declarada será produzido um erro de sintaxe (compilador)
2.3 Outro Programa Simples: Soma de dois Números
13
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
scanf( "%d", &int1 ); Obtém um valor do usuário
scanf usa a entrada padrão (comumente o teclado) Este comando scanf tem dois argumentos
%d indica que o dado deve ser um inteiro decimal
&int1 posição na memória na qual a variável está armazenada
& pode parecer confuso neste ponto Por enquanto, lembrar apenas de adicioná-lo ao nome da
variável sempre que usar o comando scanf
2.3 Outro Programa Simples: Soma de dois Números
14
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
scanf( "%d", &inteiro1 ); Quando o programa está sendo executado, o
usuário responde ao comando scanf digitando um número e, em seguida, pressionando a tecla enter (return)
2.3 Outro Programa Simples: Soma de dois Números
15
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
Operador de atribuição = Atribui um valor para a variável É um operador binário (tem dois operandos)
soma = variável1 + variável2;soma recebe variável1 + variável2
Variável que recebe valor posicionada à esquerda printf("Soma eh igual a %d\n", soma);
Similar ao scanf %d significa que um decimal inteiro será impresso soma especifica qual inteiro será impresso
Cálculos podem ser realizados dentro de um comando printf
printf("Soma e %d\n", int1 + int2);
2.3 Outro Programa Simples: Soma de dois Números
16
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.4 Conceitos de Memória
Variáveis Nomes de variáveis correspondem a posições
(locações) a serem reservadas na memória Toda variável tem um nome, um tipo, um tamanho e
um valor Toda vez que um valor é atribuído a uma variável
(através de scanf, por exemplo), o valor anterior é substituído (e destruído)
A leitura de variáveis da memória não as alteraUma representação visual
inteiro1inteiro1
4545
17
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.5 Aritmética
Cálculos Aritméticos Usa-se * para a multiplicação e / para a divisão Divisão inteira Truncamento do quociente
7 / 5 é avaliado como 1 Operador de módulo (%) Retorno do resto
7 % 5 é avaliado como 2
18
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.5 Aritmética
Precedência de Operadores Alguns operadores têm prioridade sobre outros
durante a avaliação da expressão (e.g., multiplicação antes da adição)
Usa-se parênteses quando necessário Exemplo
Encontre a média de três variáveis a, b e c Não se usa a + b + c / 3a + b + c / 3 Usa-se (a + b + c ) / 3(a + b + c ) / 3
19
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.5 Aritmética
Operadores Aritméticos
Operação Operação em em CC
Operador Operador aritméticoaritmético
Expressão Expressão algébricaalgébrica
ExpressãoExpressão
AdiçãoAdição ++ f + 7f + 7 f + 7f + 7SubtraçãoSubtração -- p - cp - cMultiplicaçãoMultiplicação ** bmbm b * mb * m DivisãoDivisão // x / y x / y x / yx / yMóduloMódulo %% r mod sr mod s r % sr % s
em em CC
p - cp - c
20
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
Regras de Precedência de Operadores
Avaliados em terceiro lugar. Se houver vários operadores no mesmo nível, a avaliação ocorre da esquerda para a direita.
Adição ou Subtração+ -+ -
Avaliados em segundo lugar. Se houver vários operadores no mesmo nível, a avaliação ocorre da esquerda para a direita.
Multiplicação, Divisão ou Resto
* / %* / %
Avaliados primeiro. Se estiverem aninhados, a expressão encerrada no par mais interno é avaliada. Se houver vários pares no mesmo nível, a avaliação ocorre da esquerda para a direita.
Parênteses()()
Ordem de Avaliação Ordem de Avaliação (Precedência)(Precedência)
Operação(ões)Operação(ões)Operador(es)Operador(es)
2.5 Aritmética
21
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.6 Tomada de Decisão: Operadores de Igualdade e Relacionais
Comandos executáveis Realização de ações (cálculos, entrada/saída de dados) Tomada de decisões
Decisão de impressão "passa" ou "falha" a partir de um teste de condição
Estrutura de controle if (condição) {bloco} Versão simples neste ponto, maior detalhamento
posteriormente Se a condição for verdadeira, então o corpo do comando
if será executado Igual a 0 é falso, diferente de zero é verdadeiro
O controle sempre prossegue após o comando if
22
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
Palavras-chave Palavras reservadas especiais para C Não podem ser usadas como identificadores ou nomes de
variáveis
2.6 Tomada de Decisão: Operadores de Igualdade e Relacionais
Palavras-chavesPalavras-chavesautoauto doubledouble intint structstructbreakbreak elseelse longlong switchswitchcasecase enumenum registerregister typedeftypedef
charchar externextern returnreturn unionunionconstconst floatfloat shortshort unsignedunsignedcontinuecontinue forfor signedsigned voidvoid
defaultdefault gotogoto sizeofsizeof volatilevolatiledodo ifif staticstatic whilewhile
23
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.6 Tomada de Decisão: Operadores de Igualdade e Relacionais
Operador de Operador de Igualdade/ Relacional Igualdade/ Relacional Algébrico PadrãoAlgébrico Padrão
Operador de Operador de Igualdade/ Relacional Igualdade/ Relacional em em CC
Exemplo de Exemplo de Condição em Condição em CC
Significado em Significado em CC
Operadores de IgualdadeOperadores de Igualdade
== ==== x==yx==y x é igual a y
≠≠ !=!= x!=yx!=y x é diferente de y
Operadores RelacionaisOperadores Relacionais
<< << xx<y<y x é menor do que y
>> >> xx>y>y x é maior do que y
≤≤ <=<= xx<=y<=y x é menor ou igual a y
≥≥ >=>= xx>=y>=y x é maior ou igual a y
24
rang
el@
dsc.
ufpb
.br
ran
gel@
lmrs
-sem
arh.
ufpb
.br
DSC/CCT/UFCG
2.6 Tomada de Decisão: Operadores de Igualdade e Relacionais
11 /* /* Usando comandos if, operadoresUsando comandos if, operadores 22 relacionais, e operadores de igualdade */relacionais, e operadores de igualdade */33 #include#include <stdio.h><stdio.h>44 intint main() {main() {5566 intint num1, num2;num1, num2;77 printf( "Entre com dois inteiros e eu lhe direi\n" );printf( "Entre com dois inteiros e eu lhe direi\n" );88 printf( “a relação que eles satisfazem: " );printf( “a relação que eles satisfazem: " );99 scanf( "%d%d", &num1, &num2 );scanf( "%d%d", &num1, &num2 ); /* le dois inteiros *//* le dois inteiros */1010 ifif ( num1 == num2 )( num1 == num2 ) 1111 printf( "%d é igual a %d\n", num1, num2 );printf( "%d é igual a %d\n", num1, num2 );1212 ifif ( num1 != num2 )( num1 != num2 ) 1313 printf( "%d é diferente de %d\n", num1, num2 );printf( "%d é diferente de %d\n", num1, num2 );1414 ifif ( num1 < num2 )( num1 < num2 ) 1515 printf( "%d é menor que %d\n", num1, num2 );printf( "%d é menor que %d\n", num1, num2 );1616 ifif ( num1 > num2 )( num1 > num2 ) 1717 printf( "%d é maior que %d\n", num1, num2 );printf( "%d é maior que %d\n", num1, num2 );1818 ifif ( num1 <= num2 )( num1 <= num2 ) 1919 printf( "%d é menor ou igual a %d\n", num1, num2 );printf( "%d é menor ou igual a %d\n", num1, num2 );2020 ifif ( num1 >= num2 )( num1 >= num2 )2121 printf( "%d é maior ou igual a %d\n", num1, num2 );printf( "%d é maior ou igual a %d\n", num1, num2 );2222 returnreturn 0;0; /* indica que o programa foi bem-sucedido *//* indica que o programa foi bem-sucedido */2323 }}
Entre com dois inteiros, e eu lhe direiEntre com dois inteiros, e eu lhe direias relações que eles satisfazem: 3 7as relações que eles satisfazem: 3 73 é diferente de 73 é diferente de 73 é menor que 73 é menor que 73 é menor ou igual a 7 3 é menor ou igual a 7
Entre com dois inteiros, e eu Entre com dois inteiros, e eu lhe direilhe direias relações que eles satisfazem : 22 12as relações que eles satisfazem : 22 1222 é diferente de 1222 é diferente de 1222 é maior que 1222 é maior que 1222 é maior ou igual a 12 22 é maior ou igual a 12
rang
el@
dsc.
ufpb
.br
DSC/CCT/UFCG Declaração de variáveis em C
5 tipos básicos: char, int, float, void, double
modificadores de tipo do C: signed, unsigned, long e short
int inteiro1, n1, x;
unsigned int i;
char letra, controle, nome[30];
float x;
<tipo> <lista de variáveis>;
rang
el@
dsc.
ufpb
.br
DSC/CCT/UFCG Declaração de variáveis em C
Tipo Bits Valor____________________________________________________________Char 8 -128 a 127unsigned char 8 o a 255signed char 8 -128 a 127Int 16 -32.768 a 32.767unsigned int 16 0 a 65.535long int 32 -2.147.483.648 a 2.147.483.647unsigned long int 32 0 a 4.294.967.295Float 32 3.4E-38 a 3.4E+38Doublé 64 1.7E-308 a 1.7E+308long double 90 3.4E-4932 a 1.1 E+4932Void 0 sem valor
rang
el@
dsc.
ufpb
.br
DSC/CCT/UFCG Entrada em C
ENTRADA:
scanf (string_de_controle, lista_de_argumentos);
scanf( "%d", &inteiro1 );
scanf( "%d %c", &n1,&x );scanf( "%d %c", &n1,&x ); /* le dois inteiros *//* le dois inteiros */
scanf( "%30s", &nome );
rang
el@
dsc.
ufpb
.br
DSC/CCT/UFCG Entrada em C
ENTRADA:
rang
el@
dsc.
ufpb
.br
DSC/CCT/UFCG Saída em C
SAÍDA:
printf ("Teste %% %%") -> "Teste % %“
printf ("%f",40.348) -> "40.345“
printf ("%.2f",40.348) -> "40.35“
printf ("Um caractere %c e um inteiro %d",'D',120) ->
"Um caractere D e um inteiro 120“
printf (“Meu nome e´ %s",nome) -> “Meu nome e´ Ulrich Schiel“
printf ("%s%d%%","Juros de ",10) -> "Juros de 10%"
printf (string_de_controle, lista_de_argumentos);
rang
el@
dsc.
ufpb
.br
DSC/CCT/UFCG Saída em CSAÍDA:
rang
el@
dsc.
ufpb
.br
DSC/CCT/UFCG Saída em C
rang
el@
dsc.
ufpb
.br
DSC/CCT/UFCG
José Eustáquio Rangel de QueirozRoberto Medeiros de Faria
Ulrich Schiel
DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO
UNIVERSIDADE FEDERAL DE CAMPINA GRANDECENTRO DE CIÊNCIAS E TECNOLOGIA