Linguagens de Programação I



Documentos relacionados
INF 1005 Programação I

MC-102 Aula 19 Registros

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

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.

INF 1007 Programação II

INF 1007 Programação II

Estrutura de Dados Básica

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

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

MC-102 Aula 17 Strings e Matrizes

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

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

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

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

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

Registros. Técnicas de Programação. Rafael Silva Guimarães

INF 1620 P1-10/04/02 Questão 1 Nome:

SCC-210 Algoritmos Avançados

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.

Programação de Computadores I Registros na Linguagem C PROFESSORA CINTIA CAETANO

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

Estruturas (registros)

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

Tabela ASCII de caracteres de controle

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

Estruturas (Registros)

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

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Programação e Sistemas de Informação

Algoritmos e Programação Estruturada

Algoritmos e Programação

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

Componentes da linguagem C++

Curso de C para Engenharias

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

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

Estruturas de entrada e saída

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Curso de C: uma breve introdução

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

20 Caracteres - Tipo char

Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1

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

Técnicas de Programação I

INF 1005 Programação I

9. Estruturas em C Registros

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

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++

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

Introdução a Computação

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

Fundamentos de Programação

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

17 - Funções e Procedimentos em C Programação Modular

INTRODUÇÃO À LINGUAGEM C++

system("pause"); //Envia comando para o sistema operacional solicitando parada de execução do programa } //limitador do corpo do programa

Introdução a Linguagem C

Introdução a POO. Introdução a Linguagem C++ e POO

Curso de Linguagem C

Linguagem de Programação em C

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

Estruturas II UFOP 1/1

Linguagens de Programação I

Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.

Primeiro Curso de Programação em C 3 a Edição

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

Conceitos de Linguagens de Programação

5 Apresentando a linguagem C

Sintaxe Básica de Java Parte 1

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

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

Disciplina de Algoritmos e Programação

JSP - ORIENTADO A OBJETOS

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

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

Estrutura de um programa em linguagem C

ALGORITMO I VARIÁVEIS INDEXADAS

DAS5102 Fundamentos da Estrutura da Informação

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

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

Tipos de Dados Simples

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

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Introdução à Programação

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

LINGUAGEM C. Estrutura básica de um programa

Transcrição:

Linguagens de Programação I Tema # 8 Strings e Estruturas Susana M Iglesias 1

STRINGS - INTRODUÇÃO Strings (cadeia de caracteres): é uma serie de caracteres que podem ser tratados como uma unidade simples, Numerosas entidades do dia a dia são representados computacionalmente utilizando strings: nomes, endereços, números de telefones, CPF,... Uma string pode incluir caracteres alfanuméricos (letras ou dígitos), e caracteres especiais (+, -, *, _, $, @, #), 2

STRINGS - INTRODUÇÃO Dados strings são utilizados em quase todas as aplicações computacionais (editores de texto, bancos de dados, redes, internet,...) A diferença da maioria das linguagens de programação, a linguagem C não fornece um tipo string como tipo de dado básico. Limitação? Na linguagem C uma string é um ponteiro para seu primeiro caractere, i.e. o valor da string é o endereço do primeiro caractere, 3

STRINGS - INTRODUÇÃO Para manipular strings a linguagem C utiliza vetores de tipo caractere, STRING = conjunto de caracteres + caractere nulo caractere nulo = \0, é utilizado para indicar o final da string, Strings literais ou constantes de strings são escritas em C utilizando aspas duplas: Paulo P. Silva Rua Alberto Rangel, s/n, Vila Nova, RJ 456.789.534.002 4

DECLARANDO - STRINGS Declaração de uma string: char cor[] = azul ; char cor[] = { a, z, u, l, \0 }; char cor[5]; Em C, a é diferente de a? 5

I/O (E/S) USANDO STRINGS printf scanf char cor[] = azul ; printf( %s, cor); char cor[5]; printf( Digite uma cor: ); scanf( %s, cor); a função scanf() lerá os caracteres até que um espaço ou um indicador de nova linha seja encontrado, 6

I/O (E/S) USANDO STRINGS puts(string1), imprime os caracteres contidos em string1 seguidos de um caractere nova linha char cor[] = azul ; puts(cor); gets(string1), obtém caracteres do dispositivo de entrada e os coloca em string1 até que o caractere nova linha seja encontrado, adiciona o caractere nulo no final destring1. char cor[5]; printf( Digite uma cor: ); gets(cor); 7

I/O (E/S) USANDO STRINGS como as variáveis strings em C são vetores de caracteres, o nome do vetor e o subscrito correspondente pode ser utilizado para acessar cada caractere por separado, char cor[] = azul ; char ch; ch = cor[0]; ch = cor[4]; ch = cor[10]; 8

I/O (E/S) USANDO STRINGS as funções I/O para caracteres podem ser utilizadas para manipular strings, getchar(), obtém um caractere do dispositivo de entrada e retorna seu valor, lembre se ao criar uma string usando getchar() colocar o caractere NULL ao final da string, putchar(c), envia o caractere c para o dispositivo de saída (video), 9

EXEMPLO 1 #define N 10 int main() { char cor1[n]; int i=0; printf("digite uma cor: "); scanf("%s", cor1); printf("cor: %s\n", cor1); while(cor1[i]!='\0') printf("%c\n", cor1[i++]); Digite uma cor: verde Cor: verde v e r d e Press any key to continue... } system("pause"); return 0; 10

EXEMPLO 2 #define N 50 int main() { char frase[n]; int i=0; printf("digite uma frase: "); gets(frase); Digite uma frase: A vida e bela Vc digitou: A vida e bela Press any key to continue... } printf("vc digitou:\n"); while(frase[i]!='\0') if (frase[i++]!=' ') putchar(frase[i-1]); else putchar('\n'); printf("\n"); return 0; 11

BIBLIOTECA DE MANIPULAÇÃO DE CARACTERES (ctype.h) int isdigit(int c), retorna verdadeiro se c for um dígito, int isalpha(int c), retorna verdadeiro se c for uma letra, int isalnum(int c), retorna verdadeiro se c for um caractere alfanúmerico (letra ou dígito), int isspace(int c), retorna verdadeiro se c for um espaço em branco (, \n, \t ) int islower(int c), retorna verdadeiro se c for uma letra minúscula, 12

BIBLIOTECA DE MANIPULAÇÃO DE CARACTERES (ctype.h) int isupper(int c), retorna verdadeiro se c for uma letra maiúscula, int tolower(int c), se c for uma letra maiúscula retorna a minúscula correspondente, senão retorna o mesmo caractere inalterado, int tolower(int c), se c for uma letra minúscula retorna a maiúscula correspondente, senão retorna o mesmo caractere inalterado, 13

FUNÇÕES DE CONVERSÃO DE STRINGS retorna o valor inteiro representado pela string s, se s não representar int atoi(char s[]), um valor inteiro gerara um erro, double atof(char s[]), retorna o valor de ponto flutuante representado pela string s, se s não representar um valor de ponto flutuante gerara um erro, 14

BIBLIOTECA DE MANIPULAÇÃO DE STRINGS (string.h) char * strcpy(char s1[], char s2[]), copia a string s2 para o array s1 e retorna um ponteiro a s1, char * strcat(char s1[], char s2[]), anexa a string s2 ao vetor s1. O primeiro caractere de s2 é sobrescrito ao caractere NULL de s1. O valor de s1 é retornado, int strcmp(char s1[], char s2[]), retorna 0 se a string s2 é igual a string s1; menor que 0 se s1<s2 e maior que 0 se s1>s2, 15

BIBLIOTECA DE MANIPULAÇÃO DE STRINGS (string.h) int strlen(char s1[]), determina o comprimento da string s1. Retorna o número de caracteres que antecedem ao caractere NULL. Existem muitas outras funções de manipulação de strings, pesquise sobre elas. 16

INTRODUÇÃO Estruturas são grupos de variáveis relacionadas entre si sob um nome, As estruturas podem conter variáveis de muitos tipos diferentes de dados relacionadas entre si, A estrutura é um tipo de dado definido pelo usuário, A estrutura é um tipo de dado derivado, elas são construídas utilizando tipos de dados básicos, 17

INTRODUÇÃO As estruturas ou registros são utilizadas para representar entidades que não podem ser representadas por um tipo de dados simples, Exemplos: Aluno (nro. matrícula, idade, nome, sexo, tel, email, CR) Carro (fabricante, modelo, ano, motor) 18

DEFININDO UMA ESTRUTURA struct nome_da_estrutura{ tipo_membro1 nome_membro1; tipo_membro2 nome_membro2;... tipo_membron nome_membron; }; Estrutura aluno: struct aluno{ int matricula; double CR; char sexo; }; 19

DEFININDO UMA ESTRUTURA Definir uma estrutura, cria um novo tipo de dados, O fato de definir uma estrutura não cria nenhuma variável e nenhum espaço é reservado na memória, Geralmente as estruturas são definidas fora de todas as funções, no começo do programa, e utilizadas ao longo de todo o código, Uma estrutura é formada pelo rotulo ou nome da estrutura e seus membros. 20

DEFININDO UMA ESTRUTURA Um membro de uma estrutura pode ser um tipo estrutura criado anteriormente, um membro de uma estrutura pode ser um ponteiro para o uma variável da mesma estrutura, (estruturas autoreferenciadas, pilhas, filas, listas). 21

DECLARANDO VARIÁVEIS DE TIPO ESTRUTURA Sintaxe: struct nome_estrutura variavel1, variavel2; Exemplo: struct aluno{ int matricula; double CR; char sexo; }; int main(){ struct aluno aluno1, alunos[10];... return 0; } 22

DECLARANDO VARIÁVEIS DE TIPO ESTRUTURA Outras alternativas: struct aluno{ int matricula; double CR; char sexo; }aluno1, alunos[10]; struct{ int matricula; double CR; char sexo; }aluno1, alunos[10]; Cuidado!!!, ao declarar variáveis na própria definição da estrutura poderíamos estar criando variáveis globais. 23

ESTRUTURAS NA MEMÓRIA Representação na memória da estrutura aluno. bits 0 32 64 96 matricula CR c 128 int double char (8 bits) Em dependência do sistema de memória (tamanho da palavra, mecanismo de endereçamento) e os tipos membros de nossa estrutura podem existir buracos na memória. 24

ESTRUTURAS NA MEMÓRIA As variáveis estrutura não podem ser comparadas utilizando operadores relacionais. Porque? Ao comparar uma estrutura devemos utilizar os membros da estrutura. Isto é, duas estruturas são iguais se cada um de seus membros são iguais. 25

INICIALIZANDO ESTRUTURAS As estruturas podem ser inicializadas utilizando uma lista de inicializadores, Exemplo: struct aluno alunos[3]={{200501317,8.3, M }, {200501234,7.1, F }, {200501453,9.0, M }}; 26

ACESSO A MEMBROS DE ESTRUTURAS Sintaxe: nome_estrutura.nome_membro; Exemplo: struct aluno aluno1; scanf( %d, aluno1.matricula); printf( %f, aluno1.cr) 27

CRIAÇÃO DE SINONIMOS (typedef) A palavra-chave typedef fornece um mecanismo para a criação de sinônimos ou alias para tipos de dados definidos previamente, O uso de typedef, facilita a compreensão dos tipos de dados criados pelo programador, As estruturas são freqüentemente definidas usando typedef para criar nomes mais curtos e intuitivos, 28

CRIAÇÃO DE SINONIMOS (typedef) Sintaxe: Exemplo: typedef Tipo_de_Dado alias; struct aluno{ int matricula; double CR; char sexo; }; typedef struct aluno Aluno; int main(){ Aluno aluno1, alunos[10];... return 0;} 29

CRIAÇÃO DE SINONIMOS (typedef) Geralmente ao criarmos estruturas usando typedef o nome da estrutura é omitido, Exemplo: typedef struct { int matricula; double CR; char sexo; } Aluno; int main(){ Aluno aluno1, alunos[10];... return 0;} 30

EXEMPLO 1 Que faz o seguinte programa? 31

#define N 3 typedef struct{ int matricula; EXEMPLO 1 double CR; Aluno: 0 Matricula: 200501317 Rendimento: 8.33 } Aluno; Que faz o Aluno: seguinte 1 Matricula: programa? 200501234 Rendimento: 7.10 Aluno: 2 Matricula: 200501453 Rendimento: 9.00 int main() { Aluno alunos[n]={{200501317,8.3}, {200501234,7.1}, {200501453, 9}}; int i; for(i=0;i<n;i++) printf("aluno: %d Matricula: %10d Rendimento: %3.2f\n", i, alunos[i].matricula, alunos[i].cr); } system("pause"); return 0; 32

EXEMPLO 2 Que faz o seguinte programa? 33

typedef struct{ char matricula[10]; float CR; char sexo; } Aluno; EXEMPLO 2 Que faz o seguinte programa? Dados int main() { Aluno aluno; printf("digite matricula: "); gets(aluno.matricula); printf("digite sexo (M ou F): "); scanf("%c", &aluno.sexo); printf("digite CR: "); scanf("%f", &aluno.cr); printf("\ndados\nmatricula: %s\nrendimento: %3.2f\nSexo: %c\n", aluno.matricula, aluno.cr, aluno.sexo); system("pause"); return 0;} Digite matricula: 200502415 Digite sexo (M ou F): M Digite CR: 7.3 Matricula: 200502415 Rendimento: 7.30 Sexo: M 34

EXEMPLO 3 Crie um programa que receba os dados de 5 alunos (nro matricula, nome, idade, coeficiente de rendimento). Imprima o nome do melhor aluno e a matricula do aluno mais jovem. 35

#define N 5 typedef struct{ int matricula; char nome[15]; int idade; float CR; }Taluno; int main(){ Taluno alunos[n]; int melhor=0, jovem=0, i; } for(i=0;i<n;i++){ printf("\ndados do aluno %d\n", i+1); printf("digite a matricula: "); scanf("%d", &alunos[i].matricula); fflush(stdin); printf("digite o nome: "); gets(alunos[i].nome); printf("digite a idade: "); scanf("%d", &alunos[i].idade); printf("digite o coef. de rendimento: "); scanf("%f", &alunos[i].cr); if (alunos[melhor].cr<alunos[i].cr) melhor = i; if (alunos[jovem].idade>alunos[i].idade) jovem = i; 36

printf("o melhor aluno e %s\n", alunos[melhor].nome); printf("a matricula do mais jovem e %d\n", alunos[jovem].matricula); } system("pause"); return 0; 37

EXEMPLO 4 Crie um programa que leia uma lista de alunos (nro de matricula e coeficiente de rendimento), e imprima a lista de alunos ordenados segundo o rendimento. 38

#define N 5 typedef struct{ int matricula; float CR; }Aluno; int main() { Aluno alunos[n]; int orden[n], i, j, buff, n; printf( Digite a quantidade de alunos ); scanf( %d, &n); if (n>n){ printf( Erro!!! Estouro de memória\n ); system( PAUSE ); return -1; } 39

printf("entrada de Dados\n"); for(i=0;i<n;i++){ orden[i]=i; printf("digite matricula: "); scanf("%d", &alunos[i].matricula); printf("digite coeficente de rendimento: "); scanf("%f", &alunos[i].cr); } for(i=0;i<n;i++){ for(j=0;j<n-1;j++) if (alunos[orden[j]].cr>alunos[orden[j+1]].cr){ buff = orden[j]; orden[j] = orden[j+1]; orden[j+1] = buff; } } printf("\nsaida de dados\n"); for(i=0;i<n;i++) printf("matricula %10d Rendimento %3.1f\n", alunos[orden[i]].matricula, alunos[orden[i]].cr); return 0;} 40

Entrada de Dados Digite matricula: 200500001 Digite coeficente de rendimento: 6.3 Digite matricula: 200500002 Digite coeficente de rendimento: 5.2 Digite matricula: 200500003 Digite coeficente de rendimento: 4.1 Digite matricula: 200500004 Digite coeficente de rendimento: 9.2 Digite matricula: 200500005 Digite coeficente de rendimento: 7.1 Saida de dados Matricula 200500003 Rendimento 4.1 Matricula 200500002 Rendimento 5.2 Matricula 200500001 Rendimento 6.3 Matricula 200500005 Rendimento 7.1 Matricula 200500004 Rendimento 9.2 41

FUNÇÕES E ESTRUTURAS Como qualquer outro valor do tipo int ou float, valores de estruturas podem ser passados como argumentos para funções, e podem ser retornados de funções. Exemplo: typedef struct { int membro1; float membro2; } Struct1; 42

FUNÇÕES E ESTRUTURAS Exemplo... //retorna um valor estrutura Struct1 lee_estrutura(void); //recebe um valor estrutura void prn_estrutura(struct1); int main(){ Struct1 var1; } var1 = lee_estrutura(); prn_estrutura(var1); return 0; 43

FUNÇÕES E ESTRUTURAS Exemplo... //função que retorna um valor //estrutura Struct1 lee_estrutura(void){ Struct1 var2; printf( Digite inteiro: ); scanf( %d, &var2.membro1); printf( Digite float: ); scanf( %f, &var2.membro2); } return var2; 44

FUNÇÕES E ESTRUTURAS Exemplo... //função que recebe como //parâmetro um valor estrutura void prn_estrutura(struct1 var3){ printf("***estrutura***\n"); printf( Valor inteiro: %d\n, var3.membro1); printf( Valor float: %f\n, var3.membro2); } 45