UNIBRATEC Ensino Superior e Tcnico em Informtica DHD

  • Slides: 18
Download presentation
UNIBRATEC – Ensino Superior e Técnico em Informática DHD – Desenvolvimento em Hardware 1

UNIBRATEC – Ensino Superior e Técnico em Informática DHD – Desenvolvimento em Hardware 1 Aula 7 – Vetores, Matrizes Básicos e Strings Capítulo 1 – Conceitos Friday, March 12, 2021

7 UNIBRATEC – Ensino Superior e Técnico em Informática DHD – Desenvolvimento em Hardware

7 UNIBRATEC – Ensino Superior e Técnico em Informática DHD – Desenvolvimento em Hardware Vetores, Strings e Matrizes 1. 2. 3. Vetor String Matriz Prof. Frederico Brito Fernandes [email protected] com 2 Aula 7 – Vetores, Matrizes Básicos e Strings Capítulo 1 – Conceitos Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (1) Vetor: definição e declaração

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (1) Vetor: definição e declaração • Objetivo: – Declarar N variáveis de um mesmo tipo – Primeiro índice: zero – Também conhecido como arranjo • Sintaxe: tipo nome_do_vetor[N]; • Ex: float notas[30]; float teste=7; Ex: O que faz o programa abaixo? igual? main(){ int v[10], j; for (j = 0; j <= 10; j++) { v[j] = 0; } } notas[0] = 4. 5; notas[1] = 10; notas[2] = notas[0]; // qual valor é atribuído a elemento de índice 2? notas[3] = notas[10]; // o que acontece aqui? notas[30] = 2; // essa instrução é legal em C? // qual o valor provável de teste depois dessa instrução? 3 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (1) Vetor: inicializando valores •

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (1) Vetor: inicializando valores • Inicialização: tipo nome_do_vetor[N] = {valor 1, valor 2, . . . , valor. N}; – Caso o vetor tenha sido inicializado, seu tamanho (N) pode ser omitido • Ex 1: int idades[10] = {34, 53, 12, 20, 22}; int idades 2[] = {34, 53, 12, 20, 22}; // qual o valor de idades[5]? // qual o tamanho de idades 2? for(i=0; i<10; i++){ printf(“Idade do usuario %d eh %d”, i+1, idade[i]); // cuidado com o lixo!!! } Solução? Você deveria ter inicializado todos os valores! 4 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (1) vetor • Auto-avaliação –

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (1) vetor • Auto-avaliação – Faça um programa que defina um vetor de 10 inteiros, com valores já inicializados e calcule a soma dos elementos Ex: int vetor[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; – Faça um programa que copie o vetor 1 no vetor 2 de forma invertida. Depois, imprima os vetores. Defina uma constante para o tamanho do vetor. Ex: #define N 10 int vetor 1[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int vetor 2[N]; 5 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: definição e inicialização

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: definição e inicialização • Vetor de char – Não existe o tipo pré-definido string em C – Termina com o caractere ‘’ • Portanto, se você precisa de uma string com 10 caracteres, declare um vetor com 11 posições (char) • Sintaxe: char nome_da_string[tamanho]; É opcional, caso você inicialize um valor, pois o compilador consegue deduzir • Ex 1: char s 1[]=“Fred”; char s 2[5]; char s 3[]; // qual o tamanho dessa string? // ilegal, pois não declarei o tamanho da string nem inicializei • Ex 2: char nome[20] = {'F', 'r', 'e', 'd‘, ’’}; printf(“Nome: ”); A for(i=0; i<20; i++){ printf(“%c”, nome[i]); } 6 char nome[20] = “Fred”; B printf(“Nome: ”); for(i=0; nome[i]!=‘’; i++){ printf(“%c”, nome[i]); } Aula 7 – Vetores, Matrizes e Strings C printf(“Nome: %s”, nome); Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: função gets() •

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: função gets() • Ex: o programa abaixo copia uma string em outra #include <stdio. h> main (){ int count; O scanf() não! char s 1[100], s 2[100]; printf(“Digite a primeira string: ”); gets(s 1); A função gets (stdio. h) é capaz de capturar uma string com espaços em branco for (count=0; s 1[count]; count++) s 2[count]=s 1[count]; s 2[count]=''; Qual é a condição de parada do for aqui? (vimos na aula passada!) } • Não é permitido diretamente: (lembre-se: string não é um tipo pré-definido em C) – Comparar duas strings • Ex: if (s 1==s 2) {. . . } – Atribuir uma string a outra • Ex: s 1 = s 2; • Para realizar tal tarefa, use a biblioteca <string. h> 7 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h • strcpy (string_destino, string_origem) – Objetivo: copia a string_origem para a string_destino – Ex: #include <stdio. h> #include <string. h> main () { char str 1[100], str 2[100], str 3[100]; printf ("Entre com uma string: "); gets (str 1); strcpy (str 2, str 1); /* Copia str 1 em str 2 */ strcpy (str 3, "Voce digitou a string "); /* Copia "Voce digitou a string" em str 3 */ printf ("nn%s%s", str 3, str 2); } 8 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h • strcat (string_destino, string_origem) – Objetivo: A string_origem permanecerá inalterada e será anexada ao fim da string_destino – Ex: #include <stdio. h> #include <string. h> main () { char str 1[100], str 2[100]; printf ("Entre com uma string: "); gets (str 1); strcpy (str 2, "Voce digitou a string "); strcat (str 2, str 1); /* str 2 armazenara' Voce digitou astring + o conteudo de str 1 */ printf ("nn%s", str 2); } 9 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h • strlen (string) – Objetivo: A função strlen() retorna o comprimento da string fornecida – Retorno: tamanho de string • Atenção: O terminador nulo não é contado – Ex: #include <stdio. h> #include <string. h> main () { int size; char str[100]; printf ("Entre com uma string: "); gets (str); size=strlen (str); printf ("nn. A string que voce digitou tem tamanho %d", size); } 10 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h • strcmp (string 1, string 2) – Objetivo: compara a string 1 com a string 2. – Retorno: 0 se elas forem idênticas valor<0 se string 1 for menor que string 2. Ex: “Fred” < “Ze” valor>0 se string 1 for maior que string 2. Ex: “Fred” > “Bala” – Ex: #include <stdio. h> #include <string. h> main (){ int size; char str[100]; printf ("Entre com uma string: "); gets (str); size=strlen (str); printf ("nn. A string que voce digitou tem tamanho %d", size); } 11 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings: biblioteca string. h • Outras funções: 12 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings • Auto-avaliação –

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (2) Strings • Auto-avaliação – Faça um programa que leia do usuário duas strings(nome e ultimo. Nome). Seu programa deve criar uma terceira string vazia (nome. Completo), que deve concatenar as duas outras strings, lembrando de colocar um espaço em branco entre elas. Finalmente imprima nome. Completo na tela. • Ex: 13 nome = “Frederico Brito” ultimo. Nome = “Fernandes” Então: nome. Completo = “Frederico Brito Fernandes” Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes • Matrizes Bidimensionais: nxm •

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes • Matrizes Bidimensionais: nxm • Sintaxe: tipo nome_do_matriz[altura][largura]; • Lembre-se: – Os índices começam no zero • Ex: o que faz o programa abaixo? altura (3) Matrizes: definição e inicialização 0. . . n 0 1 2 . . . m 0 0 0 1 1 1 0 0 0 1 1 largura #define UM 1 main () { int matriz [3][5] = { {0, 0, 0, 1, 1}, {1, 1, 1, 0, 0}, O que será impresso na tela? {0, 0, 0, 1, 1} }; a) printf("%d", matriz[1][1]); int i, j, count=1; b) printf("%d", matriz[1][3]); for (i=0; i<3; i++) { c) printf("%d", matriz[3][1]); for (j=0; j<5; j++) { if (matriz[i][j]==UM) count++; } } Leia aqui: estou declarando e vetores, } onde cada um deles tem 5 int 14 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (3) Matrizes: entendendo os índices

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (3) Matrizes: entendendo os índices • O que faz o programa abaixo? # include <stdio. h> main() { int t, i, M[3][4]; for (t=0; t<3; ++t) for (i=0; i<4; ++i) M[t][i] = (t*4)+i+1; for (t=0; t<3; ++t) { for (i=0; i<4; ++i) printf ("%3 d ", M[t][i]); printf ("n"); } } • Copie e execute pra conferir o resultado! 15 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (3) Matrizes: de strings •

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (3) Matrizes: de strings • Matrizes de Strings – É uma matriz bidimensional de char – Declaração: char nome_da_variável [num_de_strings][compr_das_strings]; Ex: char nomes[2][20] = { “Fred”, Leia aqui: estou declarando “Fulano”}; 2 strings, onde cada uma delas, tem 20 char – Acessando strings: nome_da_variável [índice] Ex: printf(“%s”, nomes[1]); Imprime “Fulano” – Acessando caracteres: nome_da_variável [índice][numero_do_char] Ex: printf(“%c”, nomes[1][1]); Imprime ‘u’ 16 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (3) Matrizes: de strings •

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (3) Matrizes: de strings • Ex: o programa abaixo armazena 5 strings de tamanho 100 cada #include <stdio. h> main () { char strings [5][100]; int count; for (count=0; count<5; count++) { printf ("nn. Digite uma string: "); gets (strings[count]); } printf ("nnn. As strings que voce digitou foram: nn"); for (count=0; count<5; count++) printf ("%sn", strings[count]); } 17 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (3) Matrizes • Auto-avaliação –

DHD – Desenvolvimento em Hardware Prof. Frederico Brito Fernandes (3) Matrizes • Auto-avaliação – Faça um programa que calcule a soma entre duas matrizes e coloque o resultado em uma terceira matriz. Defina uma constante para o número de linhas e número de colunas. 1 4 3 3 7 0 4 10 5 + 2 2 0 5 6 3 4 9 3 = 3 6 3 8 13 3 – Faça um programa que declare e inicialize um vetor de 5 strings. Imprima na tela quantos nomes começam pela letra F 18 Aula 7 – Vetores, Matrizes e Strings Friday, March 12, 2021 8 19 8