Escolar Documentos
Profissional Documentos
Cultura Documentos
Processo:
consiste em uma coleo de funes forma geral Main ( ) primeira funo a ser executada { incio da funo } fim da funo
Main ( ) { }
So programas idnticos
A FUNO MAIN ( )
l l
tem que existir em algum lugar marca o incio da execuo Main( ) { printf (meu primeiro programa); }
ex:
obs:
toda instruo deve ser encerrada por ; printf uma funo, note um ( ) aps o nome
A FUNO PRINTF ( )
Note que:
l l
uma funo pode receber uma informao (argumento) printf( meu primeiro programa) ; meu primeiro programa
SINTAXE: ex:
printf (expresso de controle, lista de argumentos); Main ( ) { printf (o nmero %d, 2); } cdigo de formatao
MAIS PRINTF
Main ( ) { } sada:
l
printf ( a letra %c, a); printf ( vem antes de %c, b); a letra a vem antes de b
} sada:
CARACTERES DE CONTROLE
\n \r \t \b \ \\ nova linha enter tabulao (tab) retrocesso aspas barra CDIGO DE FORMATAO %c %d %e %f %o %s %x caracter decimal notao cientfica ponto flutuante octal cadeia de caracteres (string) hexadecimal
CONSTANTES E VARIVEIS
Variveis:
l l
um objeto que pode assumir diferentes valores espao de memria de um certo tipo de dado associado a um nome para referenciar seu contedo
ex:
Instruo para reservar uma quantidade de memria para um certo tipo de dado, indicando o nome pelo qual a rea ser referenciad
Na sua forma mais simples: tipo nome-da-varivel; ou tipo nome1, nome2, ... nomen; int a; int b; ou int a, b;
ex: ex 2: ex3:
char letra; int nmero, idade; main ( ) { int x; float y; x = 3; y = 3 * 4.5; printf ( %d * 4.5 = %f, x, y); }
TIPOS BSICOS
l l
determinar um conjunto de valores e as possveis operaes realizadas sobre os mesmos informa a quantidade de memria (bytes) bytes 1 2 4 8 0
escala -128 a 127 -32.768 a 32.767 3.4e-38 a 3.4e+38 1.7e-308 a 1.7e+308 sem valor
Modificadores de tipos Long ou Long int Unsigned Char Unsigned int (4 bytes) (0 a 255) (0 a 65.535)
Main ( ) { unsigned int j = 65.000; int i = j; printf ( %d %u, i, j); } sada: -536 65.000
(fde8)
PORQU ?
l l
na forma binria o bit 15 0 se o nmero for positivo e 1 se negativo Lembre-se: um nmero negativo representado em complemento de dois
INICIALIZANDO VARIVEIS
Main ( ) { int evento = 5; char corrida = c; float tempo = 27.25; printf ( o melhor tempo da eliminatria % c, corrida);
NOMES DE VARIVEIS
l l
quantos caracteres quiser (32) comece com letras ou sublinhado: seguidos de letras, nmeros ou sublinhados C sensvel ao caso: peso <> Peso
obs:
l l
<>
pEso
no podemos definir um identificador com o mesmo nome que uma palavra chave
Palavras Chave: auto if static do extern default int while long do if etc
Main ( ) { printf (os alunos so %2d \ n, 350); printf (os alunos so %4d \ n, 350); printf (os alunos so %5d \ n, 350); } Sada: os alunos so 350 os alunos so 350 os alunos so 350
Note: Main ( ) { printf ( %3.1f \ n, 3456.78); printf ( %10.3f \ n, 3456.78); } Sada: 3456.8 3456.780
A FUNO SCANF( )
l l
Sintaxe:
expresso: % ou %* ex: Main ( ) { int num; scanf( %d, &num); scanf( %*f ); }
1 Mbyte = 1024 x 1024 = 1.048.576 endereos 8 Mbyte = 8 x 1024 x 1024 = 8 x 1.048.576 = 8.388.608 endereos 0 at 8.388.607 1 Gbyte = 1024 x 1024 x 1024 = 1.073.741.824
l l
um endereo de memria o nome que o computador usa para identificar uma varivel
toda varivel ocupa uma rea de memria e seu endereo o do primeiro byte por ela ocupado
Ex : inteiro 2 bytes float 4 bytes char 1 byte Quando usamos & precedendo uma varivel, estamos falando do endereo da mesma na memria Ex: Main ( ) { int num; num = 2; printf (valor = %d, endereo = %Iu, num, &num);
Main ( ) { char a ;
printf ( digite um caracter ); scanf ( % c, &a ); printf ( \n %c = %d em decimal, a, a); printf (%o em octal, %x em hexadecimal, a, a);
Digitando m:
A funo scanf obriga que a tecla <enter> seja pressionada aps a entrada dos dados a biblioteca de C oferece funes que lem dados sem esperar <enter>
printf ( digite um caracter); ch = getche( ); printf ( \n todos sabem que voc digitou %c, ch); }
Aritmticos
l l
binrios: unrio:
= -
Ex: Int a, b; b = 3; b = a * b; a = b + 2; b = 7 % 2;
Nota:
printf ( entre com a nota e o conceito); scanf ( %d %d, ¬a, &conceito); printf ( sua nota final %d, nota * conceito); }
printf(entre com 2 nmeros); scanf( %d %d , ÷ndo, &divisor); resto = dividendo % divisor; printf(o resto da diviso inteira de %d, dividendo); printf(por %d = %d, divisor, resto);
n = n + 1; n = n + 1;
Se o operador usado em uma instruo: n = 5; x = n++; x = 5 (usa a varivel e depois n=6 incrementa) ex: n = 5; x = n++ * 3; x = 15 n = 6 ex: n = 5; x = ++n * 3; ex: n = 6; x = n-- / 2; Ex: n = 5; x = --n / 2; n=6 x = 6 * 3 = 18 n=5
x = 6/2 = 3
Main( ) { int num = 0; printf ( %d, num); printf ( %d, num++); printf ( %d, num);
Sada:
0 0 1
Main ( ) { int num = 0; printf ( %d, num); printf ( %d, ++num); printf ( %d, num); } Sada:
0 1 1
PRECEDNCIA
y = 3 * --a - b (3 * (--a)) - b z = a * b++ a * (b ++) Obs: ++, -- s podem ser usados com variveis Erro: (a * b) ++; 5++;
Ex: n = 5; printf ( %d %d %d \n, n, n + 1, n++); sada: 5 6 5 sada: 6 7 5 Ex: (avaliao feita esquerda) (avaliao feita direita) turbo c
Main ( ) { int n, i = 3;
sada: 6 5 4
i = i + 2; x = x * (y + 1) t = t/4 p= p%6 h = h - 3;
OPERADORES RELACIONAIS
l
Usados para comparaes > maior >= maior ou igual < menor
<= == !=
l
Em C no existe o tipo booleano 0 falso Valor diferente de 0 verdadeiro main ( ) { int verdadeiro, falso; verdadeiro = (15 < 20); falso = (15 == 20); printf (Verd. = %d, falso = %d, verdadeiro, falso); } sada: Verd. = 1 falso = 0
Ex:
PRECEDNCIA
Agora: * + < == = - ++ -/ % - (binrio) > <= >= != += -= *=
/=
%=
Comentrios
l l l
informao acrescentada ao cdigo para facilitar sua compreenso ignorado pelo compilador (no faz parte do cdigo objeto) Comea com /* terminando com */
COMENTRIOS
Obs: /* ou */ dentro de um comentrio Invlido: Ex: /* isto no um /* comentrio */ vlido: / * comentrio em mais de uma linha */ Main ( ) { printf (1); printf (2); : : : printf (10);
ESTRUTURAS DE REPETIO
sada: 1 2 3 4 ... 10
Como imprimir os 1000 1os nmeros a partir de 1? Soluo 1: { Main ( ) printf (1); printf (2); : : : printf (1000);
}
l l
for, while, do-while repetir uma sequncia de comandos Main ( ) { int num; }
for (num = 1; num <= 1000; num++) printf ( % d, num); Sada: 1 2 3 ... 1000
Forma geral: for ( inicializao; teste; incremento ) instruo; } corpo do lao Na forma mais simples:
Inicializao: expresso de atribuio sempre executada uma nica vez Teste: condio que controla a execuo do lao sempre avaliada a cada execuo verdadeiro continua a execuo falso para a execuo
Incremento: define como a varivel de controle ser alterada sempre executada aps execuo do corpo do lao
for ( nmero = 2; nmero < 10; nmero += 2 printf ( %d, nmero); Sada 2 4 6 8
FLEXIBILIDADE
Qualquer expresso de um lao for pode conter vrias instrues separadas por vrgula operador
Ex: /* imprime os nmeros de 0 a 100 em incremento de 2 */ Main ( ) { int x, y; } Ex: /* imprime as letras do alfabeto */ Main ( ) { char ch; int i; for (i = 1, ch = a;
ch <= z;
ch++, i++)
Note o uso de funes nas expresses do lao ... Main ( ) { char ch; ) }
for ( ch = getch ( );
ch != x; ch = getch( )
Obs: Qualquer uma das 3 expresses pode ser omitida, permanecendo apenas os ; Reescrevendo o exemplo anterior: Main ( ) { char ch; }
CUIDADO
Se a expresso de teste no estiver presente considerada sempre verdadeira Main ( ) { for ( ; ; ) printf ( \n estou em loop infinito); } Main ( ) { int i; }
Sada: 100
MLTIPLAS INSTRUES
Quando duas ou mais instrues estiverem fezendo parte do corpo do lao, estas devem ser colocadas entre { } (bloco de instru
es)
Main ( ) {
for (num = 1, soma = 0; num <= 3; num++) { soma += num; printf (no = %d soma = %d \n, num, soma); }
LAOS ANINHADOS
l
Quando um lao est dentro de outro, dizemos que o lao interior est aninhado
Main ( ) { int i, J;
for (i = 1; i <= 3; i++) for (J = 1; J <= 2; J++) printf (%d %d \n, i, J);
} Sada: 11 12 21 22 31 32
for (i = 1; i <= 3; i++); for (J = 1; J <= 2; J++) printf (%d %d, i, J);
Sada: 4 1
42
O LAO WHILE
Forma geral:
l l
Instruo s executada se expresso de teste for verdadeira (!= 0) Expresso sempre avaliada at que se torne falsa (= 0) main ( ) { int num;
Ex:
Sada: 0 1 2
Obs: O corpo de um While pode ter: uma nica instruo, nenhuma instruo vrias instrues entre chaves ou
Ex:
printf ( a soma de: ); while (num <= 3) { soma += num; printf ( %d, num); } printf ( = % d, soma);
Ex:
printf (%d, tm = time (0)); while (contador++ <= 100.000); printf (esperou o tempo: %ld, time (0) tm); }
WHILE X FOR
FOR: sabe-se a princpio o nmero de interaes, o nmero de repeties fixo; WHILE: no se sabe a princpio o nmero de interaes, o lao pode terminar inesperadamente;
Ex: Contar o nmero de caracteres de uma frase at que <enter> seja digitado main ( ) { int cont = 0;
printf ( digite uma frase: \n); while (getche( ) != \ r) cont++; printf (\n o nmero de caracteres %d, cont); } Note que:
while
while (continua == s) { printf ( \n digite um no entre 1 e 1000); scanf ( %d, &num); while (num != 50) { printf (%d incorreto., num); printf( Tente novamente \n); scanf (%d, &num); vezes++; } printf (\n acertou em %d tentativa(s), vezes); printf (\n joga novamente? (s / n):); continua = getche( ); }
}
l l
O LAO DO-WHILE
Cria um ciclo repetitivo at que a expresso seja falsa (zero) Similar ao lao While a diferena est no momento em que a condio avaliada do { instruo; } while (expresso de teste); As chaves so opcionais se apenas um comando est presente
Forma Geral:
Observao:
Ex: / * testa a capacidade de adivinhar uma letra * / main ( ) { char ch; int tentativas;
tentativas = 1; while ( (ch = getch ( ) ) != t) { printf (%c incorreto \n, c); tentativas++; printf (tente novamente \n); } printf (%c correto, c); printf (acertou em %d vezes, tentativas); printf (continua? (s / n):); } while (getche( ) == s);
l l l
Estimativa de 5%
Executar o lao (pelo menos uma vez) mesmo que a condio seja falsa
O COMANDO BREAK
l
O comando Break pode ser usado em qualquer estrutura de lao em C: causa a sada imediata do lao Quando estiver presente em laos aninhados afetar somente o lao que o contm (e os internos, obviamente)
ex:
while (1) { printf ( \n digite um nmero); scanf (%d, &num); printf ( 2 * %d = %d, num, 2 * num); break; }
O COMANDO CONTINUE
l l
O comando Continue fora a prxima interao do lao (ignorando o cdigo que estiver abaixo) No caso de While, Do-While, o comando Continue faz com que o controle v direto para o teste condicional
depois o teste condicional Obs: Deve-se evitar o comando Continue, pois dificulta a manuteno de um programa
ESTRUTURAS DE DECISO
l l
Permitir testes para decidir aes alternativas IF, IF - ELSE, SWITCH e Operador Condicional (?:) O COMANDO IF
Forma Geral: If (condio) instruo; Main ( ) { char ch; ch = getche ( ); If (ch == p) printf (voc pressionou a tecla p); }
MLTIPLAS INSTRUES
Forma:
If (condio) { comando 1;
comando 2; }
Main ( ) { If (getche()) == p ) { printf ( voc digitou p); printf ( pressione outra tecla ); getche( ); } }
l
IF ANINHADOS
Se um comando If est dentro de outro If, dizemos que o If interno est aninhado
Main ( ) { char ch; printf ( digite uma letra entre A e Z); ch = getche ( ); If (ch >= A) If (ch < = Z) printf ( voc acertou) } Main ( ) { char ch;
printf ( digite uma letra entre A e Z); ch = getche ( ); If ((ch >= A) && (ch < = Z)) printf ( voc acertou) }
l l
O COMANDO IF - ELSE
O comando If s executa a instruo caso a condio de teste seja verdadeira, nada fazendo se a expresso for falsa O comando else executar um conjunto de instrues se a expresso de teste for falsa
Forma Geral: If (condio) instruo else instruo Main ( ) { If (getche ( ) == p) printf ( voc digitou p); else printf ( voc no digitou p); } Forma Geral: If (condio 1) instruo else If (condio 2)
IF - ELSE ANINHADOS
If (nmero < 0) printf (nmero menor que zero); else If (nmero < 10) printf ( nmero 0 e < 10); else If (nmero < 100) printf (nmero 10 e < 100) else printf (nmero 100);
Como o computador decide de qual If o else pertence? Ex: If (n > 0) If (a > b) z = a; Else z = b; Quando z = b ser executado ?
l
OPERADORES LGICOS
l
&& , II, !
Ex: (1 II 2) (x && y) (a > 10) && (x < 10) ! (x > 0) (10 <= a) && (a <= 100) Cuidado: (10 <= a <= 100) == ( (10 <= a) <= 100 ) EXEMPLOS:
l
main ( ) { char c; int car = 0, dig = 0; printf ( digite uma frase encerre com <enter>); while ( ( c = getche ( ) ) != \r ) { car++; If ( ( c >= 0) && ( c < = 9)) dig++; } printf ( nmero de caracteres %d, car); printf ( nmero de dgitos %d, dig); }
If (nota == 0) If ( !nota )
Precedncia: ! - ++ - * / % Aritmticos + < > <= >= Relacionais == != && II Lgico = += -= *= /= %= Atribuio
O COMANDO SWITCH
l l
Forma de substituir o comando If - else ao se executar vrios testes Similar ao If - else com maior flexibilidade e formato limpo
FORMA GERAL:
switch (expresso) { case constante 1: instrues; /* opcional */ break; /* opcional */ case constante 2: instrues break; default: instrues }
Expresso: tem que ser um valor inteiro ou caracter Ex: uma calculadora Main ( ) { char op; float num 1, num 2; while (1) { printf ( digite um n.o, um operador e um n.o); scanf ( %f %c %f, &num1, &op, &num2); switch (op) { case +: printf ( = %f, num 1 + num 2); break: case -: printf ( = %f, num 1 - num 2); break; default: printf ( operador invlido); } } }
Forma Geral:
(Condio) ? expresso 1 : expresso 2 Max = (num1 > num2) ? num1 : num2; Note: If (num1 > num2) Max = num 1; Else Max = num 2; Exemplo: ABS = (num < 0) ? - num : num;
l l l l
FUNES / PROCEDIMENTOS
Funes : abstraes de expresses Procedimentos: abstraes de comandos Dividir uma tarefa complexa em tarefas menores, permitindo esconder detalhes de implementao Evita-se a repetio de um mesmo cdigo
Forma Geral:
corpo }
l
PROCEDIMENTO
Funes que no retornam valores
Ex: void desenha( ) { int i; for (i = 0; i < = 10; i++) printf (-); } Main ( ) { desenha ( ); printf ( usando funes); desenha ( ); }
FUNES
Ex: int fatorial (int n) { int i, resultado = 1; for ( i = 1; i <= n; i ++) resultado *= i;
return resultado; } Main ( ) { printf ( o fatorial de 4 = %d, fatorial(4) ); printf ( o fatorial de 3 = %d, fatorial(3) ); }
VARIVEIS LOCAIS
l l
Variveis declaradas dentro de uma funo so denominadas locais e somente podem ser usadas dentro do prprio bloco So criadas apenas na entrada do bloco e destrudas na sada (automticas)
. . . }
Ex 2: void desenha ( ) { int i, j; . . . . . . } void calcula ( ) { int i, j; . . . . . . } i, j em desenha so variveis diferentes de i, j em calcula.
VARIVEL GLOBAL
l
Varivel que declarada externamente podendo ser acessada por qualquer funo int i; void desenha ( ) { int j; i = 0; . . . } void calcula ( ) { int m; i = 5; . . . }
Ex:
Exemplo
char minsculo( ) { char ch = getche( ); If ( (ch >= A) && (ch <= Z)) ch += a - A;
Causa a atribuio da expresso a funo, Forando o retorno imediato ao ponto de chamada da funo
Exemplo char minsculo ( ) { char ch; ch = getche( ); If ( (ch >= A) && (ch <= Z)) return (ch + a - A); else return (ch); }
Note pelo exemplo anterior que a funo minsculo l um valor internamente convertendo-o para minsculo. Como usar esta funo se j temos uma letra e desejamos convert-la para minsculo?
Passagem de parmetro por valor - uma cpia do argumento passada para a funo
Ex:
If (( ch >= A) (ch <= Z)) return (ch + a-, A); else return (ch);
Ex 2: Valor Absoluto int abs (int x) { return ( ( x < 0 ) ? -x : x ); } Main ( ) { int num, b; printf ( entre com um nmero > o); scanf ( %d, &num ); b = abs (num); . . . . . .
Frequentemente uma funo necessita de mais de uma informao para produzir um resultado Podemos passar para a funo mais de um argumento
Ex 1: float rea_retngulo (float largura, float altura) { return (largura * altura); } Ex 2: float potncia (float base, int expoente) { int i; float resultado = 1; If (expoente == 0) return 1; For (i = 1; i <= expoente; i++) resultado *= base return resultado; }
printf(entre com o numero de termos: ); scanf(%d, &termos); printf(entre com o valor de X: ); scanf(%f, &x); printf(O valor de srie = %f , serie(x, termos));
}
l l
Arranjos
tipo de dado usado para representar uma coleo de variveis de um mesmo tipo estrutura homognea
Ex: Ler a nota de 3 alunos e calcular a mdia int nota0, nota1, nota2; printf(entre com a 1a. nota); scanf(%d, ¬a0); : : :
printf(mdia = %f, (nota0 + nota1 + nota2) / 3)); Problema: Calcular a mdia de 300 alunos. Soluo: Arranjo
l
Arranjos: Unidimensional (VETOR) N-dimensional (MATRIZ) Informalmente: arranjo uma srie de variveis do mesmo tipo referenciadas por um nico nome cada varivel diferenciada por um ndice
Ex: int nota [ 4 ]; Vetor de inteiros nota [ 0 ], nota [ 1 ], nota [ 2 ], nota[ 3 ] Obs: tamanho m ndice 0 a (m - 1) Contar o nmero de vezes que um dado caractere aparece em um texto
Exemplo
main( ) { int i, letras [ TAM ]; char simbolo; for ( i = 0; i < TAM; i++) letras [ i ] = 0; // ler a sequencia ate <enter> ser pressionado while ( ( simbolo = getche( ) ) != \r ) letras [ simbolo ]++; for ( i = 0; i < TAM; i++) { printf ( o caracter %c , i); printf ( apareceu %d vezes, letras [ i ] ); } Considere uma varivel inteira numero Podemos inicializar a varivel numero: int numero = 0; numero = 0; scanf (%d, &numero); Dado um arranjo podemos inicializ-lo:
}
l l
Inicializando Arranjos
int notas [ 5 ] = { 0, 0, 0, 0, 0 } notas [0] = 0; notas [1] = 0 ... notas [4] = 0; for ( i = 0 ; i < 5; i++) scanf (%d, ¬as [ i ] ); Obs: Dado int notas [10] podemos fazer: notas [9] = 5; notas [4] = 50; as demais posies do vetor contm lixo Imprimir a mdia da turma e a nota de cada aluno. #define N_ALUNOS 40 main( ) { int i; float notas [ N_ALUNOS ], media = 0; for ( i = 0; i < N_ALUNOS; i++ ) { printf (entre com a nota %d, i+1); scanf (%f, ¬as[ i ]); media += notas [ i ]; }
Exemplo
printf ( Mdia = %f \n, media / N_ALUNOS); for ( i = 0; i < N_ALUNOS; i++ ) { printf (\n Nota do aluno %d = , i+1);
l l
Ex:
Soluo: declarar um arranjo que suporte um nmero mximo de elementos int alunos; int notas [ 70 ]; : : : printf (entre com o nmero de alunos); scanf (%d, &alunos);
Ex:
{ int quantidade, media = 0; float notas [ TAMANHO ]; // quantidade deve ser TAMANHO printf ( quantas notas devo ler ?); scanf(%d, &quantidade); for ( i = 0; i < quantidade; i++) { printf ( entre com a nota %d, i+1); scanf(%d, ¬as [ i ]); } : : : for ( i = 0; i < quantidade; i++) media += notas [ i ]; : }
l l
C no realiza verificao de limites em arranjos nada impede o acesso alm do fim do arranjo RESULTADOS IMPREVISVEIS
Verificando limites
int notas [ TAM ], quantidade; : : : do { printf ( quantas notas devo ler ?); scanf(%d, &quantidade); } while ( quantidade > TAM );
l l
possvel inicializar um arranjo sem que se defina a sua dimenso indica-se os inicializadores, o compilador fixar a dimenso do arranjo int notas[ ] = { 0, 0, 1, 3 } = int notas[ 4 ] = { 0, 0, 1, 3 }
Dimensionando um arranjo
Ex:
Obs: Voc no pode inicializar o i-simo elemento sem inicializar todos os anteriores int notas [ 5 ] = { , , 0, , } // ERRO int notas [ ] = { , , 0, , } // ERRO int notas [ 5 ] = {1, 2 } = int notas [ 5 ] = {1, 2, 0, 0, 0 }
Arranjos Multidimensional
Soluo: int mat1[40], mat2[40], ... mat5[40]; Problema: tratar cada varivel (vetor) individualmente Ex: printf (entre com as notas de Ltp1 \n); for (i = 0; i < 40; i++) { printf (\n entre com a nota %d , i+1); scanf (%d, &mat1[ i ]); } : : : printf (entre com as notas de Ingls \n); for (i = 0; i < 40; i++) { printf (\n entre com a nota %d , i+1); scanf (%d, &mat5[ i ]); }
em C podemos definir um vetor em que cada posio temos um outro vetor (matriz). Note: int matria [ 4 ] [ 40 ];
for ( i = 0 ; i < 4; i++ ) { printf (entre com as notas da matria %d, i+1); for ( j = 0; j < 40; j++) { printf (entre com a nota do aluno %d, j+1); scanf (%d, &materia [ i ] [ j ]); } }
Inicalizando Matrizes
int nota [ linhas ] [ colunas ]; podemos: int nota [ 3 ] [ 4 ] = { {0, 0, 0, 0}, ..., {0, 0, 0, 0 }} nota [ 0 ] [ 0 ] = 0; ... nota [ 0 ] [ 3 ] = 0; : : : nota [ 2 ] [ 0 ] = 0; ... nota [ 2 ] [ 3 ] = 0;
usar laos for for ( i = 0; i < linhas; i++ ) for ( j = 0; j < colunas; j++ ) nota [ i ] [ j ] = 0;
String
Ex:
printf ( %s, Isto e um teste ); Obs: visto pelo compilador: Isto e um teste\0 \0 ( null ) 0 \0 indica para as funes o fim de um string
Varivel String
l
Ex:
char string[10] = { exemplo }; printf ( %s, string ); printf ( %c, string [ 0 ] ); Obs: )
char string[10] = { e, x, e, m, p, l, o, \0 };
Lendo Strings
l
Ex:
printf ( Digite seu nome: ); scanf ( %s, &nome[ 0 ] ); printf ( Bom dia %s, nome );
Ex:
printf ( Digite seu nome: ); gets ( &nome[ 0 ] ); printf ( Bom dia %s, nome );
Saida: Digite seu nome: Jose Maria Bom dia Jose Maria
l l
printf puts
Imprimindo Strings
printf ( Digite seu nome: ); gets ( &nome[ 0 ] ); puts ( Bom dia ); puts ( nome );
} Saida: Digite seu nome: Jose Maria Bom dia Jose Maria
Lembre-se
l
Sempre que uma funo espera receber um apontador podemos passar: o endereo da primeira posio do vetor/matriz o prprio vetor/matriz
char nome[40]; gets ( &nome[ 0 ] ) = gets ( nome ) scanf (%s, nome[ 0 ] ) = scanf (%s, nome[ 0 ] ) puts (&nome [ 0 ] ) = puts ( nome ) main ( ) { char nome[40];
NOTE...
printf ( %s \n, &nome[ 3 ] ); printf ( %s \n, &nome[ 0 ] ); printf ( %s \n, nome ); } Saida: Digite seu nome: Jose Maria e Maria Jose Maria Jose Maria
Ex:
{ char nome[40]; printf ( Digite seu nome: ); gets ( &nome[ 0 ] ); printf (Tamanho = %d, strlen(&nome[ 0 ]) ); } Saida: Digite seu nome: Jose Maria Tamanho = 10
strcat ( str1, str2 ) concatena str2 ao final de str1 main ( ) { char nome[40] = Jose, sobrenome[30] = Maria; strcat(nome, sobrenome); puts (sobrenome); puts (nome); }
Ex:
compara dois strings retornando negativo se str1 < str2 0 se str1 = str2 positivo se str1 > str2
a comprao feita por ordem alfabtica main ( ) { char nome[40] = Jose, sobrenome[30] = Maria; if ( strcmp ( nome, sobrenome ) ) puts ( os strings so diferentes ); else puts ( os strings so identicos ); }