Introdução à Programação C

Documentos relacionados
cadeia de caracteres (string) INF Programação I Prof. Roberto Azevedo

Cadeias de Caracteres (Strings)

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Introdução a Programação. Strings (Vetor de Caracteres)

Métodos Computacionais. Strings (Vetor de Caracteres)

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Computação 2. Aula 3. Diego Addan Vetores de caracteres (strings)

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

Caracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos

Caracteres e Cadeias de Caracteres

SITUAÇÃO VETORES. Imagine o seguinte problema:

Vetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

Índice Valor C A D E I A \0 memória

Algoritmos e Programação

CURSO BÁSICO DE PROGRAMAÇÃO AULA 16. Ordenação Revisão para a prova

Módulo 7 Cadeias de Caracteres

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

Introdução à Programação C

Tratamento de Caracteres

Estruturas de Dados Aula 6: Cadeias de 28/03/2010

Estruturas de Dados Aula 6: Cadeias de Caracteres

Apêndice B. Cadeias de Caracteres (Strings)

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013

INF 1005 Programação I

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

Programação: Vetores

Algoritmos e Programação

MC-102 Aula 11 Strings

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Strings. Para começar... Strings. Exemplo...

Algoritmos e Programação

Vetores II Strings Leitura e exibição Biblioteca string.h Operações com Strings Matrizes Definição de Acesso Operações com Matrizes

Mac em C. Resuminho e Exercícios P3

Char e Strings de Caracteres

Linguagem C: Tipos básicos de dados escalares e cadeia de caracteres. Prof. Leonardo Barreto Campos 1

Linguagem C: Introdução

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

3. Linguagem de Programação C

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Introdução à Programação C

Caracteres, Vetores e Matrizes

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Manipulação de strings. Prof. Alex Camargo

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 12 Estruturas

Vetores e Strings. 4. Funções Básicas para manipulação de Strings. A função gets() lê uma string do teclado. Sua forma geral é:

Char e Strings de Caracteres

Disciplina de Algoritmos e Programação

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

Introdução à Programação Aula 10. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução a Programação de Jogos

INF 1620 P4-09/07/03 Questão 1 Nome:

INF 1620 P2-14/10/05 Questão 1 Nome:

Vetores. Vetores. Vetores. Vetores. Vetores. Algoritmos e Lógica de Programação. Vetores

Linguagem C Vetores, Matrizes e Strings

Seqüências de Caracteres

INF 1620 P1-16/09/06 Questão 1 Nome:

Linguagem C. André Tavares da Silva.

INF 1620 P4-13/12/01 Questão 1 Nome:

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

INF 1620 P2-23/10/04 Questão 1 Nome:

Introdução à Programação C

Introdução à Linguagem C. Strings. Laboratório de Programação Prof.Alfredo Parteli Gomes

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados

INF 1620 P4-06/12/02 Questão 1 Nome:

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

Faculdade de Computação

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: variáveis compostas homogêneas: Arrays Strings

Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C

INF 1620 P3-27/11/04 Questão 1 Nome:

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Cadeia de caracteres (strings)

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: C

Computação eletrônica:

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

INF 1620 P4 30/06/07 Questão 1 Nome:

Aula 05 -Introdução àlinguagc Programação: Estr. Dados Strings

3.1 - Funções para manipular dados de entrada e saída padrão

INF 1620 P1-11/04/08 Questão 1 Nome:

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

INF 1620 P1-18/09/04 Questão 1 Nome:

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Algoritmos e Estruturas de Dados I (DCC/003) Variável Indexada Vetor

Introdução à Programação. Strings

Linguagem de Programação

INF 1620 P4-27/06/02 Questão 1 Nome:

Declarando e Utilizando Ponteiros. Para declarar um ponteiro temos a seguinte forma geral: tipo_do_ponteiro *nome_da_variável;

Unidade 5: Introdução à Programação com C/C++ Prof. Daniel Caetano

Vetores e Strings. 6. Comandos de entrada e saída formatada que trabalham sobre strings

Aula 1 Apresentação do Curso

prim = A ; prim = &A[0];

INF 1620 P4 11/12/06 Questão 1 Nome:

Transcrição:

Introdução à Programação C Fabio Mascarenhas - 2014.2 http://www.dcc.ufrj.br/~fabiom/introc

Vetores Para vários problemas precisamos de uma maneira de representar uma sequência de valores com um número de elementos arbitrário Por exemplo, o jogo da forca poderia usar uma sequência com quaisquer número de letras Em C, uma maneira de representar sequências de valores é com vetores Um vetor é uma sequência de elementos em que cada elemento tem um índice associado, de 0 até um a menos que o número de elementos Um vetor de 5 elementos tem índices 0, 1, 2, 3 e 4

Declarando vetores A declaração de um vetor depende do local onde estamos declarando Se for uma variável local ou global, declaramos um vetor adicionando um par de colchetes ao nome da variável, com o número de elementos do vetor dentro dos colchetes int xs[10]; char palavra[5]; double ys[10]; Se for um parâmetro declaramos um vetor adicionando apenas o par de colchetes ao nome, sem um número de elementos; devemos usar outro parâmetro para indicar para a função quantos elementos o vetor tem! (char palavra[], int npalavras)

Inicialização de um vetor Se declaramos uma variável vetor e não a inicializamos o vetor tem valores arbitrários Podemos inicializar o vetor dando uma lista de valores entre chaves após a declaração: char palavra[5] = { 'F', 'O', 'R', 'C', 'A' }; Esses valores têm que ser constantes Quando inicializamos um vetor o tamanho entre os colchetes é opcional; se omitimos ele o tamanho é dado pelo número de valores na lista de inicialização

Indexação Podemos ler elementos do vetor e escrever elementos no vetor com operações de indexação Na indexação usamos o nome do vetor seguido de colchetes, com o índice que queremos ler ou escrever dentro dos colchetes: palavra[3], xs[0] O índice não precisa ser uma constante, pode ser qualquer expressão inteira: palavra[i], ys[xs[0]] Uma indexação usada em uma expressão lê um elemento do vetor, e uma indexação usada no lado esquerdo de uma atribuição escreve um elemento no vetor

Exemplo: inicialização As duas formas de declarar e inicializar o vetor palavra abaixo são equivalentes (produzem o mesmo vetor): char palavra[5]; palavra[0] = 'F'; palavra[1] = 'O'; palavra[2] = 'R'; palavra[3] = 'C'; palavra[4] = 'A'; char palavra[] = { 'F', 'O', 'R', 'C', 'A' };

Vetores como parâmetros Vetores declarados como parâmetros não têm tamanho, portanto o número de elementos deve ser passado em outro parâmetro, mas isso não é a única diferença Com um parâmetro normal, atribuir o parâmetro não afeta o argumento; a função a seguir não funciona: void troca(int a, int b) { int c = a; a = b; b = c; } Com um vetor, escrever no vetor afeta o vetor passado como argumento, e a função a seguir troca os valores do primeiro e segundo elementos do vetor: void troca(int v[]) { int x = v[0]; v[0] = v[1]; v[1] = x; }

Jogo da forca com vetores Vamos modificar nossa aplicação de forca para usar um vetores de quatro elementos para a palavra e os acertos, ao invés de quatro variáveis diferentes

Strings Strings, ou cadeias de caracteres, são vetores de caracteres em C Cada caractere é um valor do tipo char, com um código numérico entre 0 e 127 O caractere de código 0 é especial, e indica o final da string Funções que trabalham com strings não precisam saber o tamanho da string, pois usam o caractere 0 para saber quando chegou no final

Códigos de caracteres

Inicialização Quando criamos uma string com aspas duplas, o caractere 0 é inserido no final implicitamente: char palavra[] = "Forca"; A declaração acima cria um vetor com 6 caracteres, e é equivalente à declaração abaixo: char palavra[] = { 'F', 'o', 'r', 'c', 'a', 0 };

printf e scanf Podemos imprimir uma string usando com printf, com o código de formato %s: printf("a palavra e %s.", palavra); Também podemos pedir uma string ao usuário e armazenar ela em um vetor já existente, mas precisamos garantir que o vetor tem espaço suficiente para o que o usuário vai entrar: char palavra[81]; scanf("%80[^\n]", palavra); Note que não usamos & antes de palavra! O código de formato usado lê os primeiros oitenta caracteres digitados pelo usuário, ou até a quebra de linha

Manipulando strings Como uma string é um vetor, podemos indexá-las para ler caracteres da string, ou substituir caracteres: char palavra[] = "Forca"; palavra[3] = 'r'; printf("%s", palavra); /* imprime Forra */ A biblioteca string.h também tem algumas funções úteis para manipular strings: strlen dá o número de caracteres da string (sem contar o 0 no final!) strcpy copia os caracteres de uma string por cima dos caracteres de outra, strcat adiciona os caracteres de uma string aos de outra strcmp compara duas strings

strlen A função strlen recebe uma string e retorna quantos caraceteres ela tem, ignorando o 0 no final: char palavra[81]; scanf("%80[^\n]", palavra); printf("palavra tem %d caracteres\n", strlen(palavra)); Ela é útil para garantir que temos espaço suficiente para copiar os caracteres de uma string para outra quando usamos strcpy ou strcat

strcpy e strcat A função strcpy substitui os caracteres de uma string pelos caracteres de outra: char palavra[81]; scanf("%80[^\n]", palavra); strcpy(palavra, "Forca"); printf("%s", palavra); /* imprime Forca */ A função strcat adiciona os caracteres de uma string aos de outra: char palavra[81]; strcpy(palavra, "Forca"); strcat(palavra, "Forca"); printf("%s", palavra); /* imprime ForcaForca */ Em ambos os casos a string destino precisa ter espaço suficiente!

strcmp A função strcmp compara duas strings caractere a caractere, do primeiro ao último, e: Retorna 0 se todos os caracteres são iguais Retorna -1 se encontrou um caractere na primeira string que é menor que seu correspondente na segunda Retorna 1 se encontrou um caractere na primeira string que é maior que seu correspondente na segunda Essa comparação é chamada lexicográfica, lembrando que caracteres minúsculos são maiores que maiúsculos

Conversão entre strings e números A função sprintf constrói uma string a partir de um modelo com códigos de formato e valores, do mesmo modo que printf, só que copia os caracteres dessa string para uma string passada ao invés de imprimir no console: char frase[81]; sprintf(frase, "%s pagou %.2lf para %s", "Joao", 2.5, "Maria"); /* frase agora é "Joao pagou 2.50 para Maria" */ Devemos garantir que a string tem espaço para receber todos os caracteres! sprintf é uma forma conveniente de converter números para strings Para fazer o contrário temos as funções atoi e atof, que convertem strings para inteiros e doubles, respectivamente

Strings e score Como exemplo de uso de algumas funções para strings, vamos adicionar duas funcionalidades pro nosso jogo de forca: Na parte inferior da tela vamos mostrar todas as letras que o jogador já tentou e que não fazem parte da palavra Vamos também mostrar um score, que começa em 100 e abaixa 20 pontos para cada erro que o jogador comete