SCC-210 Algoritmos Avançados

Documentos relacionados
INF 1005 Programação I

Linguagens de Programação I

Exemplos. char c; int i=67;... c= A ; c=c+1; if (c== B )... c=i; i=c; i++; if (i>= C )...

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

20 Caracteres - Tipo char

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Estrutura de Dados Básica

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Tabela ASCII de caracteres de controle

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

Caracteres e. cadeia de caracteres. IPC2 1999/2000 F. Nunes Ferreira

Programação e Sistemas de Informação

SCC-211 Lab. Algoritmos Avançados

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

INF 1007 Programação II

Linguagem de Programação I. Aula 11 Strings

1) <stdio.h> - Contém protótipos de funções da biblioteca padrão de entrada/saída e as informações utilizadas por elas.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

Conceitos de Linguagens de Programação

Aula 2 Variáveis. Precisamos armazenar os tipos de dados da aula anterior (inteiros, reais, literais e lógicos) em memória. Como fazer?

Fundamentos de Programação

Fabio Bento


Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções)

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Introdução a Computação

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Variáveis e Comandos de Atribuição

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Curso de C para Engenharias

Exercício de Revisão Linguagem C

AULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme

1 Resumo: Strings e vetores de caracteres. Departamento de Ciência da Computação IME/USP

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

INF 1005 Programação I

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Sintaxe Básica de Java Parte 1

Estrutura de um programa em linguagem C

Algoritmos e Estruturas de Dados I (DCC/003) 2013/2. Introdução à Programação de Computadores. Aula - Tópico 1

String em C++ Verificando o tamanho da string

Capítulo 2. Numéricos e Códigos Pearson Prentice Hall. Todos os direitos reservados.

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

Circuitos Digitais. Conteúdo. Sistema de Numeração e Códigos :: Conversões de Binário para Decimal SISTEMA DE NUMERAÇÃO E CÓDIGOS

Strings. COM10615-Tópicos Especiais em Programação I edmar.kampke@ufes.br 2014-II

Introdução a C Tipos de Dados Variáveis Operadores

Componentes da linguagem C++

Strings. Todas as funções apresentadas neste documento estão no arquivo de cabeçalho string.h.

Universidade Federal de Uberlândia Faculdade de Computação. A Linguagem C

Algoritmos e Estruturas de Dados I 01/2013. Arquivos. Pedro O.S. Vaz de Melo

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

Conceitos Básicos de C

Algoritmos e Estruturas de Dados I. Arquivos. Pedro O.S. Vaz de Melo

1 Introdução. 2 Algumas funções úteis para lidar com strings

Mac em C. Resuminho e Exercícios P3

Capítulo 2: Introdução à Linguagem C

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Unicode no mundo real

3/19/2014. Compilador DEV C++ ENGENHARIAS LÓGICA DE PROGRAMAÇÃO Henry Lubanco/ Joelio Piraciaba

Fundamentos de Programação II. Introdução à linguagem de programação C++

Resumo da Introdução de Prática de Programação com C. A Linguagem C

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Manipulação de Arquivos

Sistemas de Numeração

Pilhas. Profa Morganna Diniz

Introdução à Lógica de Programação

Aplicação dos conceitos de programação orientada a objeto em linguagens de alto nível

14.1 Vetor - Problemas

Linguagem C: Introdução

Programando em C++ Histórico da Linguagem C

O COMPUTADOR. Introdução à Computação

Introdução ao SQL Avançado

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Sistema de Numeração e Códigos. CPCX UFMS Prof. Renato F. dos Santos

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Algoritmos e Técnicas de

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Estruturas de Dados. Profa. Juliana Pinheiro Campos

e à Linguagem de Programação Python

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

MC-102 Aula 17 Strings e Matrizes

INTRODUÇÃO OBJECT PASCAL/DELPHI

V - Lista de Exercícios de SO e Lab. 1-) Escreva um programa em C para criar um arquivo texto, com informações fornecidas pelo usuário não formatadas.

Curso de Linguagem C

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

Algoritmos e Estruturas de Dados I

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Cadeias de Caracteres (Strings)

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

Aluísio Eustáquio da Silva

Representação de Dados

MANUAL. Versão bits - 17/10/99. Para Windows 95/98

AULA Uma linguagem de programação orientada a objetos

Capítulo 9: Codificação. Prof.: Roberto Franciscatto

Transcrição:

SCC-210 Algoritmos Avançados Capítulo 3 Strings João Luís G. Rosa

Strings & Códigos de Caracteres Caracteres são representados por códigos. Códigos de caracteres: Mapeamento símbolo (em um dado alfabeto) número (Falta de) Padrão = (Falta de) Portabilidade e.g. ASCII 10 (LF/NL) ou 13 (CR) para delimitar fim de linha de texto em arquivos de SOs diferentes. Código ASCII: American Standard Code for Information Interchange 7 bits 128 símbolos. Base dos tipos char de Pascal, C e C++ (bit mais significativo = zero) Variações e Extensões: 8 bits caracteres acentuados europeus (e.g. ISO Latin-1) 16 bits Unicode (Suportado por Java) 2

Código ASCII 3

Código ASCII Algumas propriedades úteis: Região de caracteres não imprimíveis: [0 0 0 x x x x x] (0 a 31); ou [0 1 1 1 1 1 1 1] (127) Tipos em seqüência: Dígitos ( 0 9 ): 48 a 57 letras maiúsculas ( A Z ): 65 a 90 (1000001 a 1011010) letras minúsculas ( a z ): 97 a 122 (1100001 a 1111010) Rank do caractere em sua seqüência: Rank( x ) = ASCII( x ) ASCII( a ) + 1; Rank( X ) = ASCII( X ) ASCII( A ) + 1; Rank( 7 ) = ASCII( 7 ) ASCII( 0 ) + 1; 4

Código ASCII Algumas propriedades úteis: Conversão maiúscula minúscula: x = a + ( X A ) x = X 0x20 (00100000) Conversão minúscula maiúscula: X = A + ( x a ) X = x & 0xDF (11011111) Precaução em ordenação por código: ASCII( B ) < ASCII( a ) 5

Strings Tipos de Representação: Arranjos com terminação nula: C Último elemento do vetor é \0 Espaço para o nulo deve sempre ser previsto! Arranjo com tamanho: Primeira célula armazena o comprimento da string Elimina necessidade de caractere de terminação Objetos String Java e Pascal (representação interna) Lista encadeada de caracteres: Pode acelerar procedimentos de sucessivas inserções e remoções de substrings em uma string Normalmente evitado por requerer ponteiros para cada caractere 6

Bibliotecas C (Algumas Funções) #include <ctype.h> /* include the character library */ int isalpha(int c); /* true if c is either upper or lower case */ int isupper(int c); /* true if c is upper case */ int islower(int c); /* true if c is lower case */ int isdigit(int c); /* true if c is a numerical digit (0-9) */ int ispunct(int c); /* true if c is a punctuation symbol */ int isxdigit(int c); /* true if c is a hexadecimal digit (0-9,A-F) */ int isprint(int c); /* true if c is any printable character */ int toupper(int c); /* convert c to upper case -- no error checking */ int tolower(int c); /* convert c to lower case -- no error checking */ #include <string.h> /* include the string library */ char *strcat(char *dst, const char *src); /* concatenation */ int strcmp(const char *s1, const char *s2); /* is s1 == s2? */ char *strcpy(char *dst, const char *src); /* copy src to dst */ int strlen(const char *s); /* length of string */ char *strstr(const char *s1, const char *s2) /* search for s2 in s1 */ 7

Conversão entre tipos Conversão tipos diversos para string: int sprintf(char * str, const char * format,...) O mesmo funcionamento de printf mas com a saída armazenada em str. Ex.: sprintf(buffer, %d %5.2f %c, 21, 2.1, A ); int sscanf (const char * str, const char * format,...); O mesmo funcionamento de scanf, mas com a entrada dos dados a partir de str; Ex.: sscanf(buffer, %d %d, &a, &b); //buffer = 433 1211 8

Strings em C++ C++ possui uma classe string que é mais simples de trabalhar do que os strings (vetores de caracteres) em C; A classe string provê uma gama de métodos e operadores (=, ==, +) que fazem com que a classe se pareça com um tipo de dados fundamental; Não há necessidade em se preocupar com o tamanho do string. 9

Strings em C++ Dois exemplos vão nos ajudar a entender algumas das principais funcionalidades da classe string. Os exemplos foram adaptados de Josuttis (1999). Maiores detalhes podem ser encontrados em: Josuttis N. The C++ Standard Library. Addison Wesley, 1999. http://www.sgi.com/tech/stl/ 10

Strings em C++: Exemplo 1 Primeiro exemplo, programa que gera nomes de arquivos temporários: string1 prog.dat mydir hello. oops.tmp end.dat Saída: prog.dat => prog.tmp mydir => mydir.tmp hello. => hello.tmp oops.tmp => oops.xxx end.dat => end.tmp 11

Strings em C++: Exemplo 1 12 (Josuttis, 1999)

Strings em C++: Exemplo 1 13 (Josuttis, 1999)

Strings em C++: Exemplo 2 No segundo exemplo, o programa lê linhas da entrada padrão, extrai palavras e as imprime em ordem inversa: Exemplo: frase teste esarf etset 14

Strings em C++: Exemplo 2 15 (Josuttis, 1999)

Entrada/Saída em C++ #include<iostream> Standard input stream (cin) e standard output stream (cout) cin >> str; // Similar scanf cout << str; cout << str << + << i << endl; Função getline getline(cin, str); // Similar gets ou fgets getline(cin, str, - ); 16

Referências Batista, G. & Campello, R. Slides disciplina Algoritmos Avançados, ICMC- USP, 2007. Skiena, S. S. & Revilla, M. A. Programming Challenges The Programming Contest Training Manual. Springer, 2003.