Curso de C/C++ Aula 2 Instrutor: Luiz Felipe Sotero

Slides:



Advertisements
Apresentações semelhantes
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Advertisements

Centro Integrado de Tecnologia da Informação
Construção de Algoritmos AULA 07
Programação II Estruturas de Dados
Profª. Leticia Lopes Leite LAPRO A - FACIN
ICC – Matrizes Jorge Macêdo.
Introdução à Linguagem C
UDESC - Prof. Juliano Maia
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
LPG-I: Tipos Complexos - Estruturas
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo Programação II Vetores Professora: Norminda Luiza.
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Linguagem C Strings.
Estruturas de Dados Homogêneas Unidimensionais – Vetores e Strings
Linguagem C Strings.
Fundamentos de Programação 1
Ponteiros.
Strings Definição: Não confundir caracteres com strings
Introdução a Computação e Cálculo Numérico
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 7 Strings Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
+ Java Web XIV Jornada de Cursos. Você pode: copiar, distribuir, exibir e executar a obra criar obras derivadas fazer uso comercial da obra Sob as seguintes.
Linguagem de Programação II Parte VII
CADEIA DE CARACTERES (Strings)
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Prof. Ricardo Santos PONTEIROS
+ Curso de C/C++ Aula 6 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
+ Curso de C/C++ Aula 7 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
+ Curso de C/C++ Aula 8 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
Curso de C/C++ Aula 4 Instrutor: Luiz Felipe Sotero
Curso de C/C++ Aula 9 Instrutor: Luiz Felipe Sotero
+ Curso de C/C++ Aula 10 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
Computação Eletrônica
Linguagem C : Ponteiros
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Aula prática 7 Strings Monitoria de Introdução à Programação
Estruturas de Dados Aula 6: Cadeias de Caracteres
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
1 Introdução à Linguagem C Strings Deise Saccol Adaptado de slides das Profas. Patrícia Jaques e Mônica Py.
1 Introdução à Linguagem C Strings Deise Saccol Adaptado de slides das Profas. Patrícia Jaques e Mônica Py.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Algoritmo e Estrutura de Dados I Aulas 12 – Linguagem C Strings Márcia Marra
Linguaguem de Programação II
 O que são arrays:  estruturas de dados homogêneas  coleção de elementos do mesmo tipo referenciada por um nome comum  um array pode ser imaginado.
Estruturas Homogêneas – Vetores e Matrizes
Profa. Maria Augusta Constante Puget
Aula Prática 6 Vetores e Matrizes Monitoria
Linguagem de Programação
PCI- Vetores Profa. Mercedes Gonzales Márquez. Aula 5 - VetoresAlgoritmos e Estruturas de Dados I Sequência de valores todos do mesmo tipo Nome único.
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
Estruturas Homogêneas - Vetores
1 Aula 07 Strings Prof. Filipe Mutz. 2 Em nossos programas ainda não vimos como armazenar palavras e textos, e eles são muito importantes! Exemplos: Programas.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Aula Prática 7 STRINGS Monitoria  Um dos tipos de arranjos que mais ocorre em C é o arranjo de caracteres, ou string. C não suporta um tipo básico.
Transcrição da apresentação:

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

copiar, distribuir, exibir e executar a obra criar obras derivadas 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

Roteiro Vetores Strings Introdução aos Ponteiros

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

Inicialização Vetores podem ser inicializados na sua declaração: int array2[4]={-1,20,3}; int array3[]={1,0,3}; -1 20 3 ? 1 3

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]; ...

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 3 ? 1 -5 2 2 ? -5 ? 3 3

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]); return 0;

Vetores O compilador não verifica se o índice é válido: Cuidados importantes ao utilizar vetores O compilador não verifica se o índice é válido: int a[10]; int b = a[32]; int b = 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!!!

Strings char frase[] = "Eu adoro C"; char centro[4] = "CIn"; 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'};

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!

O arquivo string.h int strlen(str) int strcmp(str1, str2) 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

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.

strcmp int strcmp(str1, str2) Compara duas strings A ordem lexicográfica é utilizada para a comparação Condição Retorno <0 Se str1 é menor que str2 Se str1 é igual à str2 >0 Se str1 é maior que str2

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")); return 0; }

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

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

Obtendo mais detalhes www.cplusplus.com

Outras funções Lê uma string do dispositivo de entrada padrão string gets(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

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]);

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

Ponteiros Ponteiro ‘A’ ? 80 10.0

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;

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

Ponteiros Igualdade Incremento e decremento 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)

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

Exemplo exemploPonteiro.c

Exercícios p++; (*p)++; *(p++); 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++);

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

Referências http://ead1.eee.ufmg.br/cursos/C/ http://www.cplusplus.com 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++

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