Вы находитесь на странице: 1из 65
Introdução Professor Josemar Rodrigues de Souza
Introdução Professor Josemar Rodrigues de Souza
Introdução Professor Josemar Rodrigues de Souza

Introdução Professor Josemar Rodrigues de Souza

Introdução Professor Josemar Rodrigues de Souza
Linguagem de programação. ◦ Bibliografia. ◦ Introdução à linguagem de programação C. Breve revisão de

Linguagem de programação.

Bibliografia.

Introdução à linguagem de programação C.

Breve revisão de lógica de programação.

◦ Bibliografia. ◦ Introdução à linguagem de programação C. Breve revisão de lógica de programação.
Bibliografia
Bibliografia
Bibliografia

Bibliografia

Bibliografia
Básicas. ◦ SCHILDT, Herbert. C completo e total, São Paulo, Makron Books. 1996 ◦ Programação

Básicas.

SCHILDT, Herbert. C completo e total, São Paulo, Makron Books. 1996

Programação Orientada a Objeto com C++. BUENO, André D. São Paulo, Novatec. 2003

TENEMBAUM, Aaron M. Estruturas de Dados Usando C, São Paulo, Makron Books. 1995

Complementares.

AMMERAAL, Leendert. Algorithms and Data Structures In C++, EUA, John Wiley & Sons. 1996

Roger S. Pressman . Engenharia de Software, McGraw-Hill,

2006.

Stalling, William. Arquitetura e Organização de Computadores, 5. Ed. São Paulo. Prentice Hall. 2002.

Stalling, William. Computer Organization and Architecture:

Designing for Performance, 7. Ed. Prentice Hall, 2006

◦ Stalling, William. Computer Organization and Architecture: Designing for Performance, 7. Ed. Prentice Hall, 2006
Introdução à linguagem de programação C
Introdução à linguagem de programação C
Introdução à linguagem de programação C

Introdução à linguagem de programação C

Introdução à linguagem de programação C
Tradução CÓDIGO FONTE SOMA = VAR1 + TOTAL (linguagem de programação) TRADUTOR CÓDIGO OBJETO

Tradução

CÓDIGO FONTE

SOMA = VAR1 + TOTAL

(linguagem de programação)

FONTE SOMA = VAR1 + TOTAL (linguagem de programação) TRADUTOR CÓDIGO OBJETO 00010110111001011001011010

TRADUTOR

SOMA = VAR1 + TOTAL (linguagem de programação) TRADUTOR CÓDIGO OBJETO 00010110111001011001011010

CÓDIGO OBJETO

00010110111001011001011010

(“executável”)

MONTADOR (assembler):

Tradutor para linguagens de 2ª geração. COMPILADOR:

Traduz todo o programa de uma vez. INTERPRETADOR:

Traduz o programa instrução por instrução.

COMPILADOR: Traduz todo o programa de uma vez. INTERPRETADOR: Traduz o programa instrução por instrução.
Compiladores e Interpretadores - Ciclo de desenvolvimento Início Editar código fonte Sim Erros de linkedição?

Compiladores e Interpretadores - Ciclo de desenvolvimento

Início Editar código fonte Sim Erros de linkedição? Não Compilar Sim Executar programa Erros de
Início
Editar código
fonte
Sim
Erros de
linkedição?
Não
Compilar
Sim
Executar
programa
Erros de
compilação?
Erros de
Sim
tempo de
Execução?
Não
Não
Linkeditar
Fim
Histórico da Linguagem de Programação C ◦ Criada por Denis Ritchie, na década de 1970,

Histórico da Linguagem de Programação C

Criada por Denis Ritchie, na década de 1970, para uso em um computador DEC PDP-11 em Unix.

C++ é uma extensão da linguagem C.

O sistema Unix é escrito em C e C++.

em um computador DEC PDP-11 em Unix. ◦ C++ é uma extensão da linguagem C. ◦
Estrutura básica de um programa C diretivas para o pré-processador declaração de variáveis globais main

Estrutura básica de um programa C

diretivas para o pré-processador declaração de variáveis globais main ()

{

declaração de variáveis locais da funçãofunçãofunçãofunção mainmainmainmain comandos da função main

}

() { declaração de variáveis locais da funçãofunçãofunçãofunção mainmainmainmain comandos da função main }
Diretivas para o processador - Bibliotecas ◦ Diretiva #include permite incluir uma biblioteca. ◦ Bibliotecas

Diretivas para o processador - Bibliotecas

Diretiva #include permite incluir uma biblioteca.

Bibliotecas

contêm

funções

pré-definidas,

utilizadas nos programas.

Exemplos:

#include <stdio.h> Funções de entrada e saída #include <stdlib.h> Funções padrão #include
#include <stdio.h>
Funções de entrada e saída
#include <stdlib.h>
Funções padrão
#include <math.h>
Funções matemáticas
#include <system.h>
Funções do sistema
#include <string.h>
Funções de texto
O ambiente Bloodshed Dev-C++ ◦ O Bloodshed D e v D e v - D

O ambiente Bloodshed Dev-C++

O Bloodshed DevDev-DevDev--C++-C++C++C++ é um ambiente integrado

de desenvolvimento

Environment –IDE) de programas em C/C++ com editor, compilador, bibliotecas e debugger.

Pode ser baixado de:

(Integrated

Development

http://www.bloodshed.net/dev/devcpp.html

bibliotecas e debugger. ◦ Pode ser baixado de: ( Integrated Development http://www.bloodshed.net/dev/devcpp.html
Usando o Dev-C++ (a) ◦ Inicie o Dev-C++ pelo ícone ou pelo menu. ◦ Crie

Usando o Dev-C++ (a)

Inicie o Dev-C++ pelo ícone ou pelo menu.

Crie um novo arquivo, com o comando File, New

Source File.

Edite o seguinte programa (exemploexemploexemplo-exemplo--1-11.1 c.cc).c

#include <stdio.h> main()

{

 

printf ("Alo mundo!");

system("PAUSE");

}

c.cc).c #include <stdio.h> main() {   printf ("Alo mundo!"); system("PAUSE"); }
Usando o Dev-C++ (b) ◦ Salve o programa com o nome exemploexemplo-exemploexemplo--1-11.1 c.cc.c selecione o

Usando o Dev-C++ (b)

Salve o programa com o nome exemploexemplo-exemploexemplo--1-11.1 c.cc.c

selecione o menu File, Save unit as.

Para tanto,

Compile o programa com o comando CompilarCompilarCompilarCompilar &&&& ExecutarExecutar,ExecutarExecutar ou com a tecla CtrlCtrl-CtrlCtrl--F-FF9F99.9

Se houver algum erro de sintaxe, aparece uma ou mais mensagens no rodapé da janela. Neste caso, corrija o programa e repita.

Se não houver erros, execute o programa com o comando Executar/ExecutarExecutar/ExecutarExecutar/ExecutarExecutar/Executar ou com a tecla CtrlCtrl-CtrlCtrl--F-FF10F1010.10

ou com a tecla CtrlCtrl-CtrlCtrl--F-FF10F1010.10 #include <stdio.h> main() {   printf

#include <stdio.h> main()

{

 

printf ("Alo mundo!");

system("PAUSE");

}

Importante ◦ Termine todas as linhas com <;;;>;>>> ◦ Sempre salve o programa antes de

Importante

Termine todas as linhas com <;;;>;>>>

Sempre salve o programa antes de compilar.

Sempre compile o programa antes de executar.

Quando ocorrer um erro de compilação, dê um duplo clique sobre a mensagem de erro para destacar o comando errado no programa.

a

Verifique

também

a

linha

anterior,

que

pode

ser

responsável pelo erro, especialmente se faltar o <;;;>;>>.>

Use comentários, iniciados por <//>//>//>.//>

se faltar o <;;;>;>>.> ◦ Use comentários, iniciados por <//>//>//>.//>
Declarações ◦ Declaram as variáveis e seus tipos. ◦ Os nomes das variáveis devem conter

Declarações

Declaram as variáveis e seus tipos.

Os nomes das variáveis devem conter apenas letras, dígitos e o símbolo <_>. Até 32 caracteres.

Os principais tipos são: intintintint, floatfloatfloatfloat, doubledoubledoubledouble e charcharcharchar

Exemplos:

int n; int quantidade_valores; float x, y, somaValores; char sexo; char nome[40];

Diferença entre letras maiúsculas e minúsculas! (exemplo-2.c)

int n, N; n é diferente de N!
int n, N;
n é diferente de N!
Declarações Real: n1, n2, n3, media #include <stdio.h> main() { double n1, n2, n3, media;

Declarações

Real: n1, n2, n3, media

Declarações Real: n1, n2, n3, media #include <stdio.h> main() { double n1, n2, n3, media;

#include <stdio.h> main()

{

double n1, n2, n3, media;

system("PAUSE");

}

Real: n1, n2, n3, media #include <stdio.h> main() { double n1, n2, n3, media; system("PAUSE"); }
Comando de atribuição ◦ Atribui o valor da direita à variável da esquerda ◦ O

Comando de atribuição

Atribui o valor da direita à variável da esquerda

O valor pode ser uma constante, uma variável ou uma expressão Exemplos

x

= 4;

--> lemos x recebe 4

y

= x + 2;

y

= y + 4;

valor = 2.5; sexo = 'F'

◦ Exemplos x = 4; --> lemos x recebe 4 y = x + 2; y
Entrada e Saída ◦ Função scanfscanfscanfscanf scanf ("formatos", &var1, &var2, ) Exemplos: int i, j;

Entrada e Saída

Função scanfscanfscanfscanf

scanf ("formatos", &var1, &var2,

)

Exemplos:

int i, j; float x; char c; char* nome; scanf("%d", &i); scanf("%d %f", &j, &x); scanf("%c", &c); scanf("%s", nome);

%d n t e i ro float double char palavra i %f %lf %c %s
%d
n t e i ro
float
double
char
palavra
i
%f
%lf
%c
%s
scanf("%c", &c); scanf("%s", nome); %d n t e i ro float double char palavra i %f
Entrada e Saída ◦ Função scanfscanfscanfscanf Real: n1, n2, n3, media ler n1, n2, n3

Entrada e Saída

Função scanfscanfscanfscanf

Real: n1, n2, n3, media

ler n1, n2, n3

ler n1

ler n2

ler n3

Real: n1, n2, n3, media ler n1, n2, n3 ler n1 ler n2 ler n3 #include
Real: n1, n2, n3, media ler n1, n2, n3 ler n1 ler n2 ler n3 #include

#include <stdio.h> main()

{

double n1, n2, n3, media;

scanf ("%lf %lf %lf",&n1, &n2, &n3);

scanf ("%lf",&n1); scanf ("%lf",&n2); scanf ("%lf",&n3);

system("PAUSE");

}

scanf ("%lf",&n1); scanf ("%lf",&n2); scanf ("%lf",&n3); system("PAUSE"); }
Entrada e Saída ◦ Função printfprintfprintfprintf printf ("formatos", var1, var2, Exemplos: int i, j; float

Entrada e Saída

Função printfprintfprintfprintf

printf ("formatos", var1, var2,

Exemplos:

int i, j; float x; char c; char* nome; printf("%d", i); printf("%d, %f", j, x); printf("%c", c); printf("%s", nome);

)

%d n t e i ro float double char palavra i %f %lf %c %s
%d
n t e i ro
float
double
char
palavra
i
%f
%lf
%c
%s
printf("%c", c); printf("%s", nome); ) %d n t e i ro float double char palavra i
Entrada e Saída ◦ Função printfprintfprintfprintf Real: n1, n2, n3, media ler n1, n2, n3

Entrada e Saída

Função printfprintfprintfprintf

Real: n1, n2, n3, media

ler n1, n2, n3

media=(n1+n2+n3)/3

exibir media

n2, n3 media=(n1+n2+n3)/3 e x i b i r m e d i a #include <stdio.h>

#include <stdio.h> main()

{

double n1, n2, n3, media;

scanf ("%lf %lf %lf",&n1, &n2, &n3);

media=(n1+n2+n3)/3;

printf (“%lf”,media); system("PAUSE");

}

%lf %lf",&n1, &n2, &n3); media=(n1+n2+n3)/3; printf (“%lf”,media); system("PAUSE"); }
Operadores Matemáticos

Operadores Matemáticos

Operadores Matemáticos
Operadores Matemáticos
Operadores Matemáticos #include <stdio.h> main() { Real: n1, n2, n3, media double n1, n2, n3,

Operadores Matemáticos

Operadores Matemáticos #include <stdio.h> main() { Real: n1, n2, n3, media double n1, n2, n3, media;

#include <stdio.h> main()

{

Real: n1, n2, n3, media

double n1, n2, n3, media;

ler n1, n2, n3 media=(n1+n2+n3)/3
ler n1, n2, n3
media=(n1+n2+n3)/3

scanf ("%lf %lf %lf",&n1, &n2, &n3);

media=(n1+n2+n3)/3;

system("PAUSE");

}
}
Praticar! ◦ Exemplo-2.c #include <stdio.h> main() { double n1, n2, n3, media; printf("Digite 3 notas:

Praticar!

Exemplo-2.c

#include <stdio.h> main()

{

double n1, n2, n3, media; printf("Digite 3 notas: "); scanf ("%lf %lf %lf",&n1, &n2, &n3);

media=(n1+n2+n3)/3;

printf ("A média é %0.2lf",media);

system("PAUSE");

}

&n2, &n3); media=(n1+n2+n3)/3; printf ("A média é %0.2lf",media); system("PAUSE"); }
Exercício 1 ◦ Tendo como dados de entrada a altura de uma pessoa, construa um

Exercício 1

Tendo como dados de entrada a altura de uma pessoa, construa um programa que calcule seu peso ideal, utilizando a seguinte fórmula:

peso ideal = (72.7*h) - 58

de uma pessoa, construa um programa que calcule seu peso ideal, utilizando a seguinte fórmula: peso
Operadores de Atribuição

Operadores de Atribuição

Operadores de Atribuição
Operadores de Atribuição
Funções Matemáticas #include <math.h>

Funções Matemáticas

#include <math.h>

Funções Matemáticas #include <math.h>
Exercício 2 ◦ Construa um algoritmo que calcule a quantidade de latas de tinta necessárias

Exercício 2

Construa um algoritmo que calcule a quantidade de latas de tinta necessárias e o custo para pintar tanques cilíndricos de combustível, onde são fornecidos a altura e o raio desse cilindro. Sabendo que:

a lata de tinta custa R$20,00; cada lata contém 5 litros; cada litro de tinta pinta 3 metros quadrados.; Sabendo que:

Área do cilindro=3,14*raio2 + 2*3,14*raio*altura; e que raio e altura são dados de entrada.

Sabendo que: Área do cilindro=3,14*raio2 + 2*3,14*raio*altura; e que raio e altura são dados de entrada.
Operadores Relacionais As expressões relacionais em C retornam um número negativo: • 1 se verdadeiro

Operadores Relacionais

Operadores Relacionais As expressões relacionais em C retornam um número negativo: • 1 se verdadeiro e;

As expressões relacionais em C retornam um número negativo:

1 se verdadeiro e; 0 se falso.

Relacionais As expressões relacionais em C retornam um número negativo: • 1 se verdadeiro e; •
Operadores Lógicos (a) ◦ & & & & & & & & (E lógico): retorna

Operadores Lógicos (a)

&&&&&&&& (E lógico): retorna verdadeiro se ambos os operandos são verdadeiros e falso nos demais casos. Exemplo: if( a>2 && b<3).

|||||||| (OU lógico): retorna verdadeiro se um ou ambos os operandos são verdadeiros e falso se ambos são falsos. Exemplo: if( a>1 || b<2).

!!!! (NÃO lógico): usada com apenas um operando. Retorna verdadeiro se o operando é falso e vice-versa. Exemplo: if( !var ).

lógico): usada com apenas um operando. Retorna verdadeiro se o operando é falso e vice-versa. Exemplo:
Operadores Lógicos (b)

Operadores Lógicos (b)

Operadores Lógicos (b)
Operadores Lógicos (b)
Estrutura condicional simples ◦ Comando ifififif if ( condição) comando ; if ( condição) {

Estrutura condicional simples

Comando ifififif

if (condição) comando;

if (condição) {

comando1;

comando2;

comando3;

}

if (a<menor) menor=a; if (a<menor) { menor=a; printf (“%d”, menor); }
if (a<menor)
menor=a;
if (a<menor) {
menor=a;
printf (“%d”, menor);
}
emememem pseudopseudo-pseudopseudo--código-códigocódigo:código se (a<menor) então menor=a;
emememem pseudopseudo-pseudopseudo--código-códigocódigo:código
se (a<menor) então menor=a;
Estrutura condicional composta Comando i f i f ifif else elseelseelse if ( condição) comando;

Estrutura condicional composta

Comando ifif

ifif

else elseelseelse

if (condição) comando;

else

comando;

if (condição) {

comando1;

comando2;

} else {

comando3;

comando4;

Executa o comando se a condição for qualquer coisa diferente de zero!
Executa o comando se a condição for
qualquer coisa diferente de zero!
if (peso= =peso_ideal) printf (“Você está em forma!”); else printf (“Necessário fazer dieta!”);
if (peso= =peso_ideal)
printf (“Você está em forma!”);
else
printf (“Necessário fazer dieta!”);
} emememem pseudopseudo-pseudopseudo--código-códigocódigo:código se (peso= =peso_ideal) entao exibir “Você está
}
emememem pseudopseudo-pseudopseudo--código-códigocódigo:código
se (peso= =peso_ideal)
entao exibir “Você está em forma!”
senao exibir “Necessário fazer dieta!”
Exercício 3 ◦ Faça um programa que leia um número inteiro e mostre uma mensagem

Exercício 3 Faça um programa que leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo.

leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar,
Estrutura de repetição ◦ Comando forforforfor for (var=valor inicial; condição; incremento) comando; for (var=valor

Estrutura de repetição

Comando forforforfor

for (var=valor inicial; condição; incremento) comando;

for (var=valor inicial; condição; incremento)

{

}

comando1;

comando2

comando3;

Exemplo:Exemplo:Exemplo:Exemplo: for (cont=3; cont<=11; cont++) printf (“%d”,cont);
Exemplo:Exemplo:Exemplo:Exemplo:
for (cont=3; cont<=11; cont++)
printf (“%d”,cont);
PseudoPseudo-PseudoPseudo--código:-código:código:código: Para CONT = 3 até 11 repetir Mostrar CONT
PseudoPseudo-PseudoPseudo--código:-código:código:código:
Para CONT = 3 até 11 repetir
Mostrar CONT
Exercício 4 ◦ Faça um programa que apresente na tela a tabela de conversão de

Exercício 4

Faça

um

programa que apresente na tela a tabela de

conversão de graus Celsius para Fahrenheit, de -100 C a 100 C. Use um incremento de 10 C.

Observação: FarenheitFarenheitFarenheitFarenheit ==== ((((9999////5555)*(Celsius))*(Celsius))*(Celsius))*(Celsius) ++++ 32323232 Exercício 5

Escreva um programa que coloque os números de 1 a 100 na tela na ordem inversa (começando em 100 e terminando em 1)

◦ Escreva um programa que coloque os números de 1 a 100 na tela na ordem
Estrutura de repetição Comando whilewhilewhilewhile while (condição) comando; while (condição) { comando1;

Estrutura de repetição

Comando whilewhilewhilewhile

while (condição) comando;

while (condição) {

comando1;

Exemplo:Exemplo:Exemplo:Exemplo: while (N != 0) { scanf ("%d",&N); if (N > MAIOR) MAIOR = N;
Exemplo:Exemplo:Exemplo:Exemplo:
while (N != 0) {
scanf ("%d",&N);
if (N > MAIOR) MAIOR = N;
}
comando2 PseudoPseudo-PseudoPseudo--código:-código:código:código: comando3; } MAIOR = 0 N = 1 Enquanto (N
comando2
PseudoPseudo-PseudoPseudo--código:-código:código:código:
comando3;
}
MAIOR = 0
N = 1
Enquanto (N <> 0) repetir
Ler N
Se (N > MAIOR) então MAIOR = N
Mostrar MAIOR
Exercício 6 ◦ Faça um programa que leia números digitados pelo usuário até ele digitar

Exercício 6

Faça um programa que leia números digitados pelo usuário até ele digitar -1 (utilizando um laço while). No final, calcule a média dos números fornecidos.

pelo usuário até ele digitar -1 (utilizando um laço while). No final, calcule a média dos
Estrutura de repetição ◦ Comando d o do do whiledo whilewhilewhile do { comando }

Estrutura de repetição

Comando do

do

do

whiledo

whilewhilewhile

do { comando

} while (condição);

do {

comando1;

comando2

comando3;

} while (condição);

Exemplo:

cont=0;

do { cont = cont + 1; printf("%d\n",cont); } while (cont < 10);

Em pseudo-código: CONTADOR = 0 Repetir CONTADOR = CONTADOR + 1 exibir CONTADOR enquanto CONTADOR
Em pseudo-código:
CONTADOR = 0
Repetir
CONTADOR = CONTADOR + 1
exibir CONTADOR
enquanto CONTADOR < 10
< 10); Em pseudo-código: CONTADOR = 0 Repetir CONTADOR = CONTADOR + 1 exibir CONTADOR enquanto
Exercício 7 ◦ Escreva um programa que peça ao usuário que digite três números inteiros,

Exercício 7

Escreva um programa que peça ao usuário que digite três números inteiros, correspondentes a dia , mês e ano. Teste os números recebidos, e em caso de haver algum inválido, repita a leitura até conseguir valores que estejam na faixa correta (dias entre 1 e 31, mês entre 1 e 12 e ano entre 1900 e 2100).

Verifique se o mês e o número de dias batem. Se estiver tudo certo imprima o número que aquele dia corresponde no ano. Comente seu programa.

número de dias batem. Se estiver tudo certo imprima o número que aquele dia corresponde no
Vetores (array) ◦ Trata-se de automatizar a declaração de um grande número de dados de

Vetores (array)

Trata-se de automatizar a declaração de um grande número de dados de um mesmo tipo simples. As variáveis assim declaradas se acessam através de um índice de tipotipotipotipo intint.intint

Declaração:

 

int v[100];

 

primeira posição =0;

última posição=99;

Atribuição:

 

v [9] = 87;

Acessar um valor:

 

a = v[9];

=0; última posição=99; Atribuição:   v [9] = 87; Acessar um valor:   a = v[9];
Vetores (array) ◦ int v[10]; 0 1 2 3 4 5 10101010 6 7 8

Vetores (array)

◦ int v[10]; 0 1 2 3 4 5 10101010 6 7 8 9
◦ int v[10];
0
1
2
3
4
5
10101010
6
7
8
9

V[5]=10;

printf (“%d”,V[5]);

Vetores (array) ◦ int v[10]; 0 1 2 3 4 5 10101010 6 7 8 9
Vetores (array) – exemploexemplo.exemploexemplo ◦ Calcular a média da nota de 5 alunos e verificar

Vetores (array) – exemploexemplo.exemploexemplo

Calcular a média da nota de 5 alunos e verificar quantos conseguiram nota acima da média.

#include#include#include#include <<stdio<<stdiostdio.h>stdio.h>.h>.h> mainmain()mainmain()()() {{{{

intintintint i,i,i,i, contAcontA=0;contAcontA=0;=0;=0; doubledoubledoubledouble soma=0,soma=0,soma=0,soma=0, media;media;media;media; doubledoubledoubledouble v[5];v[5];v[5];v[5]; forforforfor (i=0;i<5;i++)(i=0;i<5;i++)(i=0;i<5;i++)(i=0;i<5;i++) {{{{ scanfscanfscanfscanf ("%("%lf("%("%lflf",lf",",", &v[i]);&v[i]);&v[i]);&v[i]); somasomasomasoma ==== somasomasomasoma ++++ v[i];v[i];v[i];v[i];

}}}} mediamediamediamedia ==== soma/i;soma/i;soma/i;soma/i; forforforfor (i=0;i<5;i++)(i=0;i<5;i++)(i=0;i<5;i++)(i=0;i<5;i++) {{{{ ifififif (v[i]>media)(v[i]>media)(v[i]>media)(v[i]>media) contAcontA=contAcontA==contA=contAcontA+1;contA+1;+1;+1;

}}}} printfprintfprintfprintf ("%("%lf("%("%lflflf %d%d\%d%d\\n",\n",n",n", media,media,media,media, contAcontA);contAcontA););); system("PAUSE");system("PAUSE");system("PAUSE");system("PAUSE");

}}}}
}}}}
Exercício 8 ◦ Ler 5 números, armazenando-os no vetor X[5]. Copiar este vetor, de trás

Exercício 8

Ler 5 números, armazenando-os no vetor X[5]. Copiar este vetor, de trás para frente (na ordem inversa de leitura), em um segundo vetor Y[5].

Mostrar o vetor Y.

X[5]. Copiar este vetor, de trás para frente (na ordem inversa de leitura), em um segundo
Strings ◦ Não existe um tipo String em C. ◦ Strings em C são uma

Strings

Não existe um tipo String em C.

Strings em C são uma array do tipo char que termina com

‘\0’.

Para literais String, o próprio compilador coloca ‘\0’.

#include#include#include#include <<stdio<<stdiostdio.h>stdio.h>.h>.h> main()main()main()main() {{{{ charcharcharchar re[]re[]re[]re[] ==== "lagarto";"lagarto";"lagarto";"lagarto"; printfprintfprintfprintf ("%s",("%s",("%s",("%s", re);re);re);re); system("pause");system("pause");system("pause");system("pause");

}}}}

re);re);re);re); system("pause");system("pause");system("pause");system("pause"); }}}}
Para ler uma String ◦ Comando getsgetsgetsgets #include#include#include#include

Para ler uma String

Comando getsgetsgetsgets

#include#include#include#include <<stdio<<stdiostdio.h>stdio.h>.h>.h> mainmain(){mainmain(){(){(){ charcharcharchar rererere [80];[80];[80];[80]; printfprintfprintfprintf ("Digite("Digite("Digite("Digite oooo seuseuseuseu nome:nome:nome:nome: ");");");"); getsgets(re);getsgets(re);(re);(re); printfprintfprintfprintf ("Oi("Oi("Oi("Oi %s%s\%s%s\\n",\n",n",n", re);re);re);re); system("pause");system("pause");system("pause");system("pause");

}}}}

re);re);re);re); system("pause");system("pause");system("pause");system("pause"); }}}}
Para comparar duas strings ◦ strcmp (s1, s2); strcmp retorna 0 se as duas strings

Para comparar duas strings

strcmp (s1, s2);

strcmp retorna 0 se as duas strings são iguais.

Precisa do #include <string.h>

#include#include#include#include <<stdio<<stdiostdio.h>stdio.h>.h>.h> #include#include#include#include <string.h><string.h><string.h><string.h> mainmain(mainmain((( ){){){){ charcharcharchar re[80];re[80];re[80];re[80]; printfprintfprintfprintf ("Digite("Digite("Digite("Digite aaaa senha:senha:senha:senha: ");");");"); scanfscanfscanfscanf ("%s",("%s",("%s",("%s", &re);&re);&re);&re); ifififif ((strcmp((strcmpstrcmp(re,"laranja")==0)strcmp(re,"laranja")==0)(re,"laranja")==0)(re,"laranja")==0) {{{{ printfprintfprintfprintf ("Senha("Senha("Senha("Senha corretacorreta\corretacorreta\\n");\n");n");n");

}}}} elseelseelseelse {{{{ printfprintfprintfprintf ("Senha("Senha("Senha("Senha invalidainvalida\invalidainvalida\\n");\n");n");n");

}}}}

system("pause");system("pause");system("pause");system("pause");

}}}}

Pode utilizar scanf no lugar do gets, só que o scanf não lê espaços em
Pode utilizar scanf no lugar do gets, só que o
scanf não lê espaços em branco.
Se o usuário digitar:
>“Alexandre Costa e Silva”
o scanf vai pegar apenas “Alexandre”.
O gets pega tudo.
Se o usuário digitar: >“Alexandre Costa e Silva” o scanf vai pegar apenas “Alexandre”. O gets
Para saber o tamanho de uma string ◦ int size = strlen(str); Retorna um valor

Para saber o tamanho de uma string int size = strlen(str);

Retorna um valor inteiro com o número de caracteres da String.

Precisa do #include <string.h>

#include#include#include#include <<stdio<<stdiostdio.h>stdio.h>.h>.h> #include#include#include#include <string.h><string.h><string.h><string.h> mainmain(){mainmain(){(){(){ charcharcharchar re[80];re[80];re[80];re[80]; printfprintfprintfprintf ("Digite("Digite("Digite("Digite aaaa palavra:palavra:palavra:palavra: ");");");"); scanfscanfscanfscanf ("%s",("%s",("%s",("%s", &re);&re);&re);&re); intintintint sizesize=sizesize==strlen=strlenstrlen(re);strlen(re);(re);(re); printfprintfprintfprintf ("Esta("Esta("Esta("Esta palavrapalavrapalavrapalavra temtemtemtem %d%d%d%d caracteres.caracteres.\caracteres.caracteres.\\n",\n",n",n", sizesize);sizesize););); system("pause");system("pause");system("pause");system("pause");

}}}}

system("pause");system("pause");system("pause");system("pause"); }}}}
Para copiar o conteúdo de uma string para outra ◦ strcpy(para, de); Precisa do #include

Para copiar o conteúdo de uma string para outra

strcpy(para, de);

Precisa do #include <string.h>

#include#include#include#include <<stdio<<stdiostdio.h>stdio.h>.h>.h> #include#include#include#include <string.h><string.h><string.h><string.h> mainmainmainmain()()()() {{{{

charcharcharchar strstr[80];strstr[80];[80];[80]; strcpystrcpystrcpystrcpy ((str((strstr,str,,, "Alo");"Alo");"Alo");"Alo"); printfprintfprintfprintf ("%s",("%s",("%s",("%s", strstr);strstr););); system("pause");system("pause");system("pause");system("pause");

}}}}

strstr);strstr););); system("pause");system("pause");system("pause");system("pause"); }}}}
Exercício 9 ◦ Escreva um programa que leia duas strings e as coloque na tela.

Exercício 9 Escreva um programa que leia duas strings e as coloque na tela. Imprima também a segunda letra de cada string.

9 ◦ Escreva um programa que leia duas strings e as coloque na tela. Imprima também
Funções São estruturas que permitem ao programador separar o código do seu programa em blocos.

Funções São estruturas que permitem ao programador separar o código do seu programa em blocos. Uma função tem a seguinte forma :

tipo_de_retorno nome_da_funcao (parâmetros){ /*corpo da função */

}

em blocos. Uma função tem a seguinte forma : tipo_de_retorno nome_da_funcao (parâmetros){ /*corpo da função */
Funções que não retornam valor #include#include#include#include

Funções que não retornam valor

#include#include#include#include <<stdio<<stdiostdio.h>stdio.h>.h>.h> voidvoidvoidvoid ehParehParehParehPar ((int((intintint x){x){x){x){ ifififif (x(x(x(x %%%% 2)2)2)2) {{{{ printfprintfprintfprintf ("O("O("O("O numeronumeronumeronumero naonaonaonao eheheheh par!par!\par!par!\\n");\n");n");n");

}}}} elseelseelseelse {{{{ printfprintfprintfprintf ("O("O("O("O numeronumeronumeronumero eheheheh par!par!\par!par!\\n");\n");n");n");

}}}}

}}}} int main(){ char re[80]; ehPar (3); system("pause"); return (0);

}

}}}} }}}} int main(){ char re[80]; ehPar (3); system("pause"); return (0); }
Funções que retornam valor #include <stdio.h> int ehPar (int x){ int z = 0; /*

Funções que retornam valor

#include <stdio.h> int ehPar (int x){ int z = 0; /* o operador % retorna o resultado da divisão por 2 */ if (x % 2) return 1;

}

int main(){ char re[80]; int i = ehPar (3); if (i!=0){ printf ("O numero eh par!");

}

system("pause");

return (0);

}

char re[80]; int i = ehPar (3); if (i!=0){ printf ("O numero eh par!"); } system("pause");
Exercício 10 ◦ Elabore um programa que tenha uma função que retorne o reverso de

Exercício 10 Elabore um programa que tenha uma função que retorne o reverso de um número inteiro. Por exemplo, 932-> 239.

◦ Elabore um programa que tenha uma função que retorne o reverso de um número inteiro.
Exercício 11 – sala/casacasacasa.casa ◦ ConstruaConstruaConstruaConstrua umumumum programaprogramaprogramaprograma

Exercício 11 – sala/casacasacasa.casa

ConstruaConstruaConstruaConstrua umumumum programaprogramaprogramaprograma quequequeque possuapossuapossuapossua umaumaumauma funçãofunçãofunçãofunção quequequeque dadodadodadodado umumumum númeronúmeronúmeronúmero dededede contacontacontaconta correntecorrentecorrentecorrente comcomcomcom cincocincocincocinco dígitos,dígitos,dígitos,dígitos, retorneretorneretorneretorne oooo seuseuseuseu dígitodígitodígitodígito verificador,verificador,verificador,verificador, oooo qualqualqualqual éééé calculadocalculadocalculadocalculado dadadada seguinteseguinteseguinteseguinte maneiramaneira:maneiramaneira:::

Exemplo:Exemplo:Exemplo:Exemplo: númeronúmeronúmeronúmero dadadada conta:conta:conta:conta: 25678256782567825678 a)a)a)a) somarsomarsomarsomar númeronúmeronúmeronúmero dadadada contacontacontaconta comcomcomcom seuseuseuseu inverso:inverso:inverso:inverso: 25678+87625678+87625678+87625678+87652=11333052=11333052=11333052=113330 b)b)b)b) multiplicarmultiplicarmultiplicarmultiplicar cadacadacadacada dígitodígitodígitodígito pelapelapelapela suasuasuasua ordemordemordemordem posicionaposicionaposicionaposicionallll eeee somarsomarsomarsomar esteesteesteeste resultado:resultado:resultado:resultado: 1111 1111 3333 3333 3333 0000

1111

1111

3333

3333

3333

0000

0000

1111

2222

3333

4444

5555

1111

1111

6666

9999

12121212

0000

====

29292929

0000 1111 2222 3333 4444 5555 1111 1111 6666 9999 12121212 0000 ==== 29292929
Ponteiros ◦ Ponteiros, como o próprio nome diz, é um tipo de variável que aponta

Ponteiros

Ponteiros, como o próprio nome diz, é um tipo de variável que aponta para outra (de um tipo qualquer). Na verdade um ponteiro guarda o endereçoendereçoendereçoendereço dededede memóriamemóriamemóriamemória (local onde se encontra na memória) de uma variável.

Parada para ver um pouco sobre Arquitetura e Organização de Computadores!

se encontra na memória) de uma variável. Parada para ver um pouco sobre Arquitetura e Organização
Ponteiros ◦ Para declarar um ponteiro temos a seguinte forma geral: tipo_do_ponteiro *nome_da_variável; É o

Ponteiros

Para declarar um ponteiro temos a seguinte forma geral:

tipo_do_ponteiro *nome_da_variável;

É o asterisco (***)* que faz o compilador saber que a variável não vai guardar um valor mas sim um endereço para aquele tipo especificado.

Exemplo:

int *TOC2; /* declara um ponteiro para um inteiro (16bits) */

sim um endereço para aquele tipo especificado. Exemplo: int *TOC2; /* declara um ponteiro para um
Ponteiros int teste=20; int *p; p=&teste; p irá armazenar o endereço de memória ( 0

Ponteiros

int teste=20;

int *p;

p=&teste;

p irá armazenar o endereço de memória (0) da variável teste (20). Ou seja, p não armazena o valor 20, mas sim o endereço (0) da variável teste.

como chegar ao valor 20 usando a variável p?

0000 20 int teste=20; 1 int *p; 2 3 p=&teste; 4 printf("%d\n",*p); 5 6 7
0000
20
int teste=20;
1
int *p;
2
3
p=&teste;
4
printf("%d\n",*p);
5
6
7
8
9
Ponteiros ◦ Exemplo 1: char algo[5] = { 5, 4, 3 , 2 , 1

Ponteiros

Exemplo 1:

char algo[5] = { 5, 4, 3, 2, 1 }; char *c; c=&algo[2];

Colocamos em c o endereço do terceiro elemento de algo:

c[0]=3, c[1]=2 e c[2]=1.

Se tivéssemos feito c=&algo[3], então:

c[0]=2 e c[1]=1.

elemento de algo: c[0]= 3, c[1]=2 e c[2]=1. Se tivéssemos feito c=&algo[3], então: c[0]= 2 e
Ponteiros ◦ Exemplo 2: int vet_notas[50]; int *pont_notas; pont_notas=vet_notas; Para imprimir a primeira e a

Ponteiros

Exemplo 2:

int vet_notas[50]; int *pont_notas; pont_notas=vet_notas;

Para imprimir a primeira e a décima nota de nosso vetor, temos duas opções:

print ("A primeira nota é: %d", vet_notas[0]); print ("A primeira nota é: %d", *pont_notas);

print ("A décima nota é: %d", vet_notas[9]); print ("A décima nota é: %d", *(pont_notas+9));

print ("A décima nota é: %d", vet_notas[9]); print ("A décima nota é: %d", *(pont_notas+9));
Ponteiros ◦ Exemplo 3: ConsideremosConsideremosConsideremosConsideremos oooo trechotrechotrechotrecho dededede

Ponteiros

Exemplo 3:

ConsideremosConsideremosConsideremosConsideremos oooo trechotrechotrechotrecho dededede códigocódigocódigocódigo abaixo:abaixo:abaixo:abaixo:

charcharcharchar linha[80],linha[80],linha[80],linha[80], *p;*p;*p;*p; *p1;*p1;*p1;*p1; pppp ==== &linha[0];&linha[0];&linha[0];&linha[0];

p1p1p1p1 ==== linha;linha;linha;linha; ifiiifff (p==p1)(p==p1)(p==p1)(p==p1) putsputs(“iguais!”);putsputs(“iguais!”);(“iguais!”);(“iguais!”);

/*/*/*/* p1p1p1p1 eeee pppp possuempossuempossuempossuem oooo mesmomesmomesmomesmo endereço,endereço,endereço,endereço, i.é,i.é,i.i.é,é, */*/*/*/

/*/*/*/* apontamapontamapontamapontam paraparaparapara oooo 1º1º1º1º elementoelementoelementoelemento dadadada matriz!matriz!matriz!matriz! */*/*/*/

paraparaparapara oooo 1º1º1º1º elementoelementoelementoelemento dadadada matriz!matriz!matriz!matriz! */*/*/*/
Equivalência entre vetores e ponteiros ◦ vet_notas[0] == *(pont_notas); ◦ vet_notas[1 ] == *(pont_notas+1); ◦

Equivalência entre vetores e ponteiros

vet_notas[0]==*(pont_notas);

vet_notas[1]==*(pont_notas+1);

vet_notas[2]==*(pont_notas+2);

◦ vet_notas[0] == *(pont_notas); ◦ vet_notas[1 ] == *(pont_notas+1); ◦ vet_notas[2 ] == *(pont_notas+2);
Exercício 12 Inverter os elementos de uma string, usandousandousandousando ponteirosponteiros.ponteirponteirosos ◦

Exercício 12

Inverter os elementos de uma string, usandousandousandousando ponteirosponteiros.ponteirponteirosos

Solução: Pela maneira convencional teríamos:

main()

{

char str[80]; int i; printf(“Digite uma palavra: “); gets(str);

for (i=strlen(str)-1;i>=0;i--) printf(“%c”,str[i]);

}

Resolvendo com ponteiro:

comcomcomcom ponteirosponteirosponteirosponteiros teríamosteríamosteríamosteríamos:

main()

{

char str[80],*p;

int i;

printf(“Digite uma palavra: “); gets(str); p = str; for(i = strlen(str) - 1;i>=0;i--) printf(“%c”,*(p+i));

}

printf(“Digite uma palavra: “); gets(str); p = str; for(i = strlen(str) - 1;i>=0;i--) printf(“%c”,*(p+i)); }
Fluxograma Exemplo: adivinhar um nº entre 0 e 7 em 3 tentativas (2). Fluxograma /=

Fluxograma

Exemplo: adivinhar um nº entre 0 e 7 em 3 tentativas (2). Fluxograma

Fluxograma Exemplo: adivinhar um nº entre 0 e 7 em 3 tentativas (2). Fluxograma /= <>
Fluxograma Exemplo: adivinhar um nº entre 0 e 7 em 3 tentativas (2). Fluxograma /= <>

/= <>

Exercício 13 Fazer cronograma de um programa que gerencie/simule as estruturas de dados estáticas e

Exercício 13

Fazer cronograma de um programa que gerencie/simule as estruturas de dados estáticas e dinâmicas (Problema 1)

13 Fazer cronograma de um programa que gerencie/simule as estruturas de dados estáticas e dinâmicas (Problema