1 / 31

Curso de C/C++ Aula 2 Instrutor: Luiz Felipe Sotero Material por: Allan Lima

Curso de C/C++ Aula 2 Instrutor: Luiz Felipe Sotero Material por: Allan Lima http://allanlima.wordpress.com/. Você pode: copiar, distribuir, exibir e executar a obra criar obras derivadas fazer uso comercial da obra Sob as seguintes condições:

dalila
Download Presentation

Curso de C/C++ Aula 2 Instrutor: Luiz Felipe Sotero Material por: Allan Lima

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso de C/C++ Aula 2 Instrutor: Luiz Felipe Sotero Material por: Allan Lima http://allanlima.wordpress.com/

  2. Você pode: • copiar, distribuir, exibir e executar a obra • criar obras derivadas • fazer uso comercial da obra • Sob as seguintes condições: • Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante. • Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta. • Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra. • Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor. • Veja aqui a licença completa

  3. Roteiro • Vetores • Strings • Introdução aos Ponteiros

  4. Vetores • São Matrizes com uma única dimensão • Declaração • tipo nome[tamanho]; • Exemplo: int array1[3]; • Representação: ? ? ? ?

  5. Inicialização • Vetores podem ser inicializados na sua declaração: -1 20 3 1 0 3 ? ? ?

  6. Inicialização • Podemos ter vetores de qualquer tipo: char array1[4] = { ‘A’, ‘B’, ‘C’}; float array2[] = { 10.0, 5.4, 6.33 }; double array3[] = { -0.2, 4.3, 3.14 }; unsigned int array4[10]; ...

  7. Acessando um vetor int array[3] = { 1, 2, 3 }; array[1] = -5; array[0] = array[0] + 2; printf("%d\n", array[0]); array = Console: 3 3 1 1 3 2 2 -5 -5 3 3 ? ? ?

  8. Exemplo #include <stdio.h> int main() { int numeros[10] = {1, 1}; int i; for (i = 2; i < 10; i++) { numeros[i] = numeros[i-1] + numeros[i-2]; } for (i = 0; i < 10; i++) { printf("%d\n", numeros[i]); } return0; }

  9. Vetores • Cuidados importantes ao utilizar vetores • O compilador não verifica se o índice é válido: int a[10]; intb = a[32]; intb = a[-32]; // converte o char 'F' para int int c = a['F']; • O código acima compila sem problemas, mas o que irá acontecer quando ele for rodado? • Ninguém sabe!!!

  10. Strings • Uma string é vetor de caracteres terminado pelo caractere nulo ‘\0’ • Sintaxe: • char nomeDaString[] = "conteudo"; • Exemplos: char frase[] = "Eu adoro C"; char centro[4] = "CIn"; char faculdade[10] = {'U','F','P','E','\0'};

  11. Cuidados Importantes • Lembre-se sempre do '\0' • O tamanho do vetor deve ser o número de caracteres que ele irá armazenar + 1 • Erro comum: • char faculdade[] = {'U', 'F', 'P', 'E'}; • faculdade não é uma string!

  12. O arquivo string.h • Principais funções: • int strlen(str) • int strcmp(str1, str2) • string strcpy(destino, origem) • string strcat(destino, origem) • Existem diversas outras que veremos mais adiante

  13. strlen • int strlen(str); • Retorna o tamanho da string passada como parâmetro • Exemplo: char string[50] = "Linguagem"; // imprime 9 printf("%d", strlen(string)); • Obs.: O caractere ‘\0’ não é contado.

  14. strcmp • int strcmp(str1, str2) • Compara duas strings • A ordem lexicográfica é utilizada para a comparação

  15. Exemplo #include <stdio.h> #include <string.h> int main() { char pergunta[] = "qual é a sua linguagem favorita? "; char resposta[15]; do { printf("%s", pergunta); scanf("%s", resposta); } while (strcmp(resposta, "C")); return0; }

  16. strcpy • string strcpy(destino, origem) • Copia o segundo parâmetro no primeiro • Exemplo: char ori[] = "ABC"; char dest[12] = ""; strcpy(dest, ori); // dest = "ABC";

  17. strcat • string strcat(destino, origem) • Concatena o segundo parâmetro no primeiro • Exemplo: charori[] = "DEF"; // Não esqueça de inicializar: chardest[12] = "ABC"; // dest = "ABCDEF" strcat(dest, ori);

  18. Obtendo mais detalhes • www.cplusplus.com

  19. Outras funções • stringgets(string) • Lê uma string do dispositivo de entrada padrão • Também lê espaços • Não verifica o tamanho máximo da string • int puts(string) • Imprime uma string no dispositivo de saída padrão • Ambas estão definidas no header stdio.h

  20. Matrizes Multidimensionais • Sintaxe: • tipo nomeDaMatriz[dim1][dim2]...[dimN]; • Exemplos: // Matriz Bidimensional int m1[2][2] = { 1, 2, 3, 4 }; // Outra maneira int m2[2][2] = { { 1, 2 }, { 3, 4 } }; // Matriz Tridimensional int m3[2][2][2] = { 1, 2, 3, 4, 5, 6, 7, 8 }; printf("%d\n", m1[1][1]); printf("%d\n", m3[1][0][0]);

  21. Ponteiros • Guardam o endereço de uma variável • Sintaxe: • tipo *nomeDoPonteiro; • Exemplos: int *a; char *b; float *c; double *d;

  22. Ponteiros Ponteiro ‘A’ ? 80 10.0

  23. Ponteiros • Ponteiros precisam ser inicializados • Para isto basta usarmos o operador & • Ele retorna o endereço de uma variável • Exemplo: int a = 10, *p; // p aponta para o endereço de a p = &a;

  24. Ponteiros • O operador * é usado para termos acesso ao valor do endereço de memória para o qual um ponteiro aponta • Exemplo: int a, b = 10, *p; p = &b; // p aponta para o endereço de b a = *p; // a = 10 *p = 15; // b = 15, mas a ainda é 10

  25. Ponteiros • Operações aritméticas: • Igualdade // p1 aponta para o endereço de p2 p1 = p2; *p1 = *p2; // copia o conteúdo • Incremento e decremento p++; // p = p + sizeof(tipo_de_p) p--; // p = p - sizeof(tipo_de_p)

  26. Ponteiros • Operações aritméticas: • incremento p = p + 10; *p = *p + 10; • Comparação p1 == p2; p1 > p2; p1 >= p2;

  27. Exemplo • exemploPonteiro.c

  28. Exercícios • Escreva um programa que lê strings do teclado até que duas strings iguais sejam digitadas consecutivamente. A saída é a concatenação de todas as strings lidas e os tamanhos da maior e da menor. • Faça um programa que calcula o determinante de uma matriz 2*2. O usuário entra com a matriz e o programa imprime o determinante na tela • Qual a diferença entre: p++; (*p)++; *(p++);

  29. Exercícios • Qual os valores de x e de y no final do programa? intmain() { int y, *p, x; y = 0; p = &y; x = *p; x = 4; (*p)++; x--; (*p) += x; printf ("y = %d\n", y); return0; } 5) Crie uma função chamada swap que recebe os dois ponteiros para inteiros como parâmetros e inverte seus conteúdos.

  30. Referências • Curso de C da UFMG • http://ead1.eee.ufmg.br/cursos/C/ • cplusplus resources • http://www.cplusplus.com • Slides de Gustavo (ghpc@cin.ufpe.br) do Curso de C/C++

  31. Agradecimentos • Allan Lima, Breno do Vale e Francisco Magalhães • Pelo material cedido para o curso

More Related