Estruturas de Dados 1 - #27 Structs: Definição e Exemplos

4k views3444 WordsCopy TextShare
xavecoding
Série de videoaulas sobre Estruturas de Dados 1. Neste vídeo, começaremos a estudar o último tópico...
Video Transcript:
salve salve turma seja bem-vindos a mais um vídeo aqui do Xaveco hoje eu sou professor Samuka e continuaremos e mais um dia de gravação com as videoaulas do curso o dominando estrutura de dados 1 então se você já tá gostando do conteúdo aqui do canal desse conteúdo desse curso já deixa seu like se inscreva no canal E compartilhe com seus amigos beleza temos um upgrade aqui no nos equipamentos do ano do meu home studio aqui agora nós temos um microfone melhor eu tenho um retorno aqui para escutar melhor do que eu tô falando Então imagina
agora eu acredito que a qualidade ao menos sonora desses vírus a partir de agora melhorar é um muito tá bom então mas chega de papo nós vamos vamos continuar aqui a nossa série de vídeos e o tópico que eu abordarei nesses próximos vídeos pessoal é o último tópico do que eu falei que é nossa base nessa revisão que eu estou que eu estou fazendo de linguagem ser desses tópicos que serão muito importantes que serviram de fato com o nosso alicerce para o desenvolvimento das linguagens da linguagem dando desenvolvendo as estrutura de dados mais avançadas que
nos veremos logo em seguida que nós estamos e logo em seguida a esse tópico agora que eu toco the strips então se você já programou linguagens e provavelmente você se deparou em algum momento com strix não se estudaremos isso aqui agora não esse esse assunto agora muito bem deixa nesse blá blá Aqui e a gente comenta um pouquinho mais depois então Strokes uma Street ou registro ou Record é um pacote de variáveis que podem ter tipos diferentes então é um pacote de variáveis Tá bom me fala mais né Me conta mais o objetivo da Estratégia
aquela Visa representar grupos de dados que resulte em algo mais concreto por exemplo registro de alunos automóveis etc tá bom cada variável desse pacote é um campo do registro um campo da Sport e esse registro são conhecidos como Strokes que vende structure to english muito bem e tudo esse blá blá aqui agora Deixa vamos como bater um papo aqui eu e você a ideia de ser o que se é o seguinte pessoal é uma forma da linguagem C de Nós criamos um o cuidado próprio para nós né customizável Para nós porque em muitos em diversas
e diversos casos você não vai querer ficar usando é variáveis soltas você vai querer criar porque muitas vezes você vai ter um conjunto de variáveis que vão formar um registro só de algo né então por exemplo Suponha que a gente tem um sistema de controle de alunos é de registros de alunos de uma escola esses alunos vamos colocar aqui por por simplificação que eles têm por exemplo só no a gente só armazena o nosso sistema o nome do aluno e a idade vamos supor isso por simplificação Então imagina aqui que nós temos por exemplo o
João Batista e nós temos aqui o João Batista então para representar o João Batista no nosso programa Nós perdemos que criar uma variável que é o nome do João Batista Então vou colocar aqui achar nome que terá 64 caracteres em uma string aqui de 64 caracteres e um inteiro que representará a idade do João Batista tão nesse caso específico o João Batista que é o nosso aluno é um de nossos alunos ele está sendo representado guardado Os dados aqui no nosso programa utilizando duas variáveis e por outro lado que a gente poderia até a Maria
Aparecida Então vamos colocar aqui ao Maria Aparecida o que também tá no sistema só que agora para representar Maria Aparecida ou e utilizou as mesmas variáveis do João aí eu vou ter que sobre escrever os dados da Maria Aparecida em cima dos dados do João eu perco os dados do João Ou eu vou ter que criar variáveis do mesmo tipo né exatamente do mesmo tipo porém com nomes diferentes né tem um nome vou colocar nome underline Maria então é um é uma rede 64 caracteres ou seja mais tenho de 64 caracteres e eu teriam um
inteiro para representar a idade da Maria idade underline Maria então Note que agora começa a ficar um pouquinho chato né então a gente tá para duas instâncias diferentes dois registros de alunos diferentes nós estamos tendo que declarar duas variáveis para representar cada um desses registros independentemente Agora imagina que a gente tivesse mais alunos e ao invés de duas dois duas variáveis só né dois Campos do índice registro nós tivéssemos 10 noite Oi Gê CPF nome do pai nome da mãe e filho qualquer uma dessas coisas a gente tivesse 10 variáveis para representar esses registros e
a gente vai sem registro de alunos Imagina você tem que declarar e 10 variáveis para cada um dos registros é muita coisa fica muito ineficiente não é muito legal né fazer dessa forma então aí vem esse conceito de estou aqui para tentar de alguma forma criar agora para nós um tipo de dado aluno onde nós teremos nesse tipo de dado esse conjunto de Campos desse registro a gente tem um registro agora que nós tipo de dado aluno e nesse tipo de dado nós armazenar emos o tipo o os atributos nome e idade é isso que
a gente está fazendo então nós vamos empacotar essas variáveis que nós estamos usando separadamente para representar cada um dos registros do aluno e um tipo de dados ó Então na hora de nós declararmos o aluno João Batista a gente vai ter uma variável só chamada João por exemplo EA partir dessa variável gente consegue acessar internamente os atributos desse aluno Então é isso que nós vamos ver nos próximos bom então aqui tenha a definição esqueleto padrão é de declaração de uma Street em na linguagem C então bastante você tem que usar a palavra reservada Street você
coloca o nome do esporte o nome do teu registro abre e fecha Chaves você coloca você lista aqui ó os seus os campos que vão definir sua Street E você ainda pode declarar algumas variáveis e depois colocar um ponto e, muito bem não vou perder muito tempo nesses lábios que nós temos aqui três exemplos três ou quatro exemplos concretos de opções para você declarar sua história Então já vou pular para cá a primeira opção que é muito utilizada é a gente seguir bem à risca eu que o que tá nesses slides aqui atrás Então vamos
pegar esse exemplo de registro de alunos né Nós queremos criar então agora um novo tipo de dado que vai chamar aluno né então nosso aluno é um tipo de dado que é uma estrutura um registro de alunos Então como que a gente faz a gente usa essa palavrinha a chave aqui é o aluno é Street a palavra reservada e coloca o nome da nossa estrutura que chama aluno fizemos isso então isso aqui stroke aluno é o nome é um nome é o nome do nó do novo tipo de dados bom então fazendo dessa forma a
gente coloca esse truque de aluno a gente está definido mais triste chamada aluno só que o nome do tipo de dado fazendo dessa forma é Street aluno Então o que a gente faz abre e fecha as chaves já colocando tem que colocar o ponto e, não esqueça do ponto e, e aqui você coloca as variáveis que vão os atributos né Desse registro né desse tipo de dados Então todo o aluno ele vai ter um nome que nesse caso aqui é um é um vetor de 100 caracteres não é uma string de 100 caracteres nós temos
a idade poderia ter um ter mais coisas tá e nós que cada tributo tem nesse caso aqui específico tem tipos diferentes poderia ter tipos iguais diferentes isso aí não importa é importante que você dentro de si abre e fecha Chaves você definir aí todos os atributos que vão definir a sua Street na hora de você declarar uma variável desse novo tipo de dados é que vem o nome do tipo de dados fazendo dessa forma é Street aluno fazendo desse jeito você você colocar por exemplo aluno é isso não dá certo isso vai dar errado você
tem que colocar essa palavra que chamada Strike antes então isso aqui não funciona se você colocar dessa forma aqui usando é se esse jeito de de atribuição a gente vai ver um outro jeito para facilitar isso mas a princípio é esse jeito que é muito utilizado você tem que usar dessa forma de Claro desse jeito na hora é definir né sua variável desse jeito na hora de declarar o seu tipo de dados escova definir o seu novo tipo de dados eu registros históricos desse jeito na hora de você declarar você tem que usar dessa forma
aqui muito bem uma outro jeito de você fazer uma variação dessa Primeira opção onde você após o ponto após aqueles que eu voltar a cor laranja após o abre e fecha Chaves e antes do ponto e, você coloca uma lista de variáveis aqui o que que vai acontecer dessa forma na hora que você definir essa estrutura Aluno por padrão você já vai ter duas variáveis globais instanciados a esse novo tipo de dado que nesse caso específico seria o Barney e o Ted só que só que tem um problema fazer dessa maneira tem um problema quando
a desculpa o problema tem na outra vez fazendo dessa forma e não é muito comum mas você pode fazer o que você já tem essas duas variáveis globais à disposição isso é muito utilizado porque serão poucos os casos que você de fato vai querer ter essas variáveis globais para para serem usados globalmente no seu programa suas funções geralmente você não faz isso geralmente você faz a opção mas você fizer isso aqui na opção dois isso vai funcionar e você poderia fazendo dessa forma criar uma nova variável aqui chamada por exemplo Street aluno eu poderia ter
um novo aluno aqui que fosse a Maria eu poderia ter dessa forma aqui ó a Maria então Note que aqui eu já tenho Barney e o Ted no momento da definição dessa Street e eu posso ainda assim declarar uma uma Nova Instância né uma nova variável desse tipo de dados e sorte aluno que seria a Maria posso fazer dessa maneira mas não é muito comum outra forma também muito específica não muito comum essa três a definir uma história sem nome e declarar variáveis né do já por padrão desse tipo Então nesse caso só tô usando
as variáveis durante o compilador vai saber que uma Street é esse pacote de dados aqui ao teu registro Esse pacote de com essas variáveis aqui porque você tem um abre e fecha Chaves e nesse caso específico Eu já também estou definindo duas variáveis globais no momento da definição dessa dessa história e já tô declarando duas variáveis globais desse tipo de dado que essa Street anônima aqui o problema tá até aqui embaixo o problema dessa definição é que como eu não tenho um nome declarado aqui eu não a declarar novas variáveis como eu fiz na opção
dois aqui na opção dois eu tenho Barney e Ted já declarado no momento da definição dessa história mas ainda assim como eu tenho um nome aqui eu posso declarar novas variáveis dessa estou aqui né Desse novo tipo de dados quando eu faço uma estrofe de anônima eu não tenho como fazer isso então desse caso aqui eu só teria a variável Barney e Ted disponíveis para uso na representando representando o instâncias dessa Street anônima que pode ser que existam um casos específicos onde você não quer apresentar vez você faça uma estoque de uma configuração né que
tem um pacote de variáveis de configuração de um sistema seu e você não quer ficar distanciando isso isso vai ser instanciado uma vez só então você poderia fazer uma estrutura anônima e colocar já uma variável Global ali nessa lista de variáveis Que dia você pode definir ele dessa forma você garante postei vai ter uma variável Global só com aquelas configurações do teu sistema então talvez eles são casos que eu penso aqui de cabeça o juiz para você Mas no geral você não vai usar isso aqui no geral nesses casos até o momento o primo é
o primeiro opção é o mais utilizado Mas tem uma opção que eu diria que é aqui antes de falar uma opção mais elegante aqui tem um jeito né para você acessar os campos da sua Street acessar os campos gente faz a seguinte maneira ó declaramos então nosso senhor que aluno usando a primeira opção Então a gente tem um novo tipo de dado que eu estou que aluno com esses campos aqui e a gente veio aqui declarou que o Barney ele é uma variável do tipo esporte aluno para que a variável Barney né a gente tem
um Barney ele é acesse os atributos desse registro ou seja os campos esse registro que ele representa desse tipo de dado nós usamos o. bom então a gente tem que usar o ponto aqui ó até isso não é para acessar um campo do registro a partir da variável Barney a gente coloca. E o nome do atributo Então nesse caso aqui ó nesse código aqui eu tô querendo eu declarei então uma variável chamado barn que é do tipo aluno eu estou querendo copiar stream de Barney e para dentro dessas trinca aqui ó essa strandbar nem aqui
para dentro das do dedo Campo nome da strict Barney É isso que eu tô querendo fazer então eu tenho Street Bayern e o acesso aqui o nome do campo nome né do atributo usando o ponto então ACC esse campo quando eu faço Sr copo que que eu tô fazendo eu tô copiando essas link aqui dentro do atributo nome da variável Barney É isso que eu tô fazendo de igual maneira poderia fazer isso utilizando a idade né então para vocês a idade eu quero colocar o valor 10 na idade 10 ali no Bayern eu coloco o
Barney que o nome da variável o ponto a partir disso coloca o nome do atributo nome do campo dessas pessoas que eu quero usar que no caso seria idade tão barn. Idade estão acessando o campo idade da variável Bayern dessa estrutura aluno e tô colocando o valor 10 lá então estou colocando o valor das lá então essa é uma forma que você pode fazer né é a forma é que você pode acessar nisso é os campos da É nesse momento nós iremos mais para frente quando nós falamos sobre a alocação de dama que existe uma
outra maneira de fazer isso também muito bem mas aqui tem uma outra opção uma outra opção aqui que eu considero mais elegante que é a que nos adotaremos nesse curso a partir de agora né Na hora de declarar novas estruturas Porque até então pessoal que nós estamos fazendo aqui é declarando uma estratégia aluno e toda vez que a gente quer usar um novo uma nova variável Uma Nova Instância desse novo tipo de dados gente tem que colocar também na declaração a palavra Street isso aqui é meio um saco né Eu queria colocar só o nome
aluno aluno deveria ser o nome do meu novo tipo de dados né dessa maneira eu não consigo fazer isso eu tenho que colocar a palavra reservada Street o nome dessa estrutura para você conseguir usar o nome aluno a gente faz dessa do seguinte maneira aqui ó a gente define Então a nossa estrutura normalmente aqui ó esquece essa palavra então aqui ó tem a a a estrutura definida do jeito que a gente tá fazendo e agora e antes a palavra reservada typedef então definição de um novo tipo de dados e depois essa definição de novo tive
das você tem a declaração da tua estrutura aqui você declara o nome do tipo dessa estrutura o nome desse novo tipo de dados então aqui é como se a gente tivesse definido na linguagem que ser um apelido para S para esse novo tipo de dados que é isso troca de aluno então fazendo dessa forma o que que eu estou fazendo eu estou aqui definindo a nossa estrutura aluno e já estou declarando já estou dando um apelido um novo nome para essa estrutura de dados aqui então essa forma que a gente pode fazer de modo que
se eu fizesse a declaração usando typedef e aqui eu coloco o nome desse apelido né como se fosse um apelido e para essa nova para esse novo tipo de dados que não sei se porque aluna eu posso fazer a declaração das variáveis agora de duas formas eu posso fazer da forma convencional que usando Street aluno e ao que está dizendo aqui Barney ou eu posso usar de fato Esse nome que é o nome personalizado o meu esse apelido que seria tipo aluna e dessa forma aqui então eu tenho uma outra variável Ted e o bar
então ambas as declarações agora são válidas para nós nós podemos declarar uma instâncias variáveis desse tipo Stuart Allan dessas duas formas passando a palavra reservada Stuart o nome da estrutura ou passando esse novo nome esse novo apelido que nós definimos usando a palavra reservada typedef definição de tipos mas aqui a gente vai adotarem essa convenção no curso nós vamos adotar aqui para facilitar não tem colocar aluno tipo aluna vou fazer o seguinte eu vou colocar então typedef e eu vou definir então a strict como a gente tem feita só que o nome eu vou colocar
tudo de do nome do tipo da história eu vou colocar tudo em minúsculo e com o underline aqui anteriormente é que eu quero fazer isso para dizer que eu tô tentando desencorajar os programadores a usar dessa forma então há mais ou menos as convenção que eu tô querendo eu não quero que a Hora de usar os programadores usem diretamente o estropo de Underline aluno então por isso que eu tô colocando num padrão um pouquinho diferente tá bom para dizer que isso aqui é opcional que só que não não é para ser usada nesse momento o
que eu quero que seja usado mesmo é o nome aluno que agora está aqui embaixo não está mais definido o nome aluno logo após a palavra reservada estou aqui na verdade agora estou colocando aqui embaixo se eu tô colocando aqui embaixo estou definindo agora o seguinte aluno agora é um apelido né entre aspas o apelido é do tipo é de dados O que é isso aqui ó Street underline aluno dessa forma quinta ou do tá isso essa forma opcional Ela será importante quando nós usamos por exemplo lista desligados Vocês entenderam porque naquele momento mas por
hora o que que a gente quer usar e dessa forma aqui Vou definir um nome opcional aqui para estrutura e eu sempre vou usar o nome desse tipo de dados que eu vou colocar em aí a primeira letra maiúscula e depois tudo minuto que eu vou usar dessa Essa convenção aqui e daí na hora de declarar uma variável simplesmente coloco aluno e até então Note que essa versão que nós adotaremos aqui no curso ela é diferente dessa outra porque essa outra estava colocando o nome aluno logo após a palavra reservada Street de modo que se
eu quiser usar se dessa maneira eu tenho que escrever Street aluno e aqui nesse exemplo eu definir um novo tipo de dados esse apelido para esse novo tipo de das logo aqui depois do fecha Chaves e entre o} e o ponto e, né usando a palavra typedef precisa ter isso aqui nesse caso eu quero que o nome aluno de fato sejam meu é o nome geral desse tipo de dados então eu coloco aqui e usa a palavra reservada Type der Então é isso que funciona muito bem eu vou parar esse vídeo por aqui que já
tá lombra o próximo vídeo a gente vê Então vale a declaração de estoque de maneira estática maneira dinâmica como a gente tem feito e a gente continua então o tópico desse dessa aula tá bom pessoal então fica com a gente até o
Copyright © 2024. Made with ♥ in London by YTScribe.com