Pular para o conteúdo principal

Blog

Vida em código: uma jornada entre tecnologia e cotidiano

  • Parágrafos e Quebras

    Ao escrever um parágrafo <p></p> em um arquivo HTML, é preciso observar:

    • Qualquer texto pode ser escrito de forma corrida e sem quebra de linha, desde que esteja entre o par de tags <p></p>.
    • Se houver a necessidade de quebrar o texto em determinado local, basta utilizar a tag <br>.
    • Se houver a necessidade de um espaço maior NÃO UTILIZAR várias tags <br> <br> <br>.
    • Se houver a necessidade de escrever as tags no texto, utiliza-se: &lt; = Less than e &gt; = Greater than.
    1. &lt;p&gt; para a tag <p>.
    2. &lt;/p&gt; para a tag </p>.
    3. &lt;br&gt; para <br>.

    Exemplo de código

    <!DOCTYPE html>
    <html lang="pt-br">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Parágrafos</title>
    </head>
    <body>
    <h1>Parágrafos e quebras de linhas</h1>
    <hr>
    <p>Você pode escrever um parágrafo de
    qualquer jeito.
    Basta colocar tudo no meio do par
    te tags &lt;p&gt; e &lt;/p&gt;
    </p>
    <p>Se precisar quebrar
    o texto em algum lugar
    específico <br> como esse
    Você pode usar a tag &lt;br&gt;.
    </p>
    </body>
    </html>
  • Símbolos e Emoji

    Abaixo estão alguns exemplos de símbolos:

    <p>Vamos adicionar alguns símbolos especiais:
    &reg;
    &copy;
    &trade;
    &euro;
    &pound;
    &cent;
    &Delta;
    &uparrow;
    &uarr;
    </p>

    Para adicionar um emoji, basta buscar pelo seu código em sites como o Emojipedia e colocar o seguinte comando antes do código do emoji: &#x.

    Exemplo de código:

    <p>Vamos adicionar alguns emojis:
    &#x1F60A
    &#x1F680
    </p>

-- Aula do curso do Gustavo Guanabara

HTMLParágrafosSímbolosEmojisLeitura de um minuto

GitHub

Neste post, vou compartilhar um trabalho que fiz na faculdade na disciplina de matemática discreta. Aqui vou explorar como o Prolog implementa a lógica de predicados de forma recursiva e como essa característica torna a linguagem util para problemas que envolvem inferências lógicas.

Por que o Prolog é Considerado Recursivo? 🔄

O Prolog tem uma definição recursiva porque suas regras podem se referir a si mesmas ou a outras regras, assim criando estruturas de programação onde as regras podem ser aplicadas repetidamente para resolver problemas de maneira iterativa, chamando a si mesmas em um processo de recursão. Dessa forma, quando utilizamos uma caso recursivo, sua regra é definida de modo que a chamada recursiva siga sobre uma lista menor do que a lista inicial, a recursão permite a resolução de problemas complexos de maneira simples.

Fatos em Prolog: Por que Fato 1 e Fato 3? 🤔

Suponha que um banco de dados Prolog contém as seguintes informações:

come(urso, peixe)
come(peixe, peixinho)
come(peixinho, alga)
come(guaxinim, peixe)
come(urso, guaxinim)
come(urso, raposa)
come(raposa, coelho)
come(coelho, grama)
come(urso, veado)
come(veado, grama)
come(lince, veado)
animal(urso)
animal(peixe)
animal(peixinho)
animal(guaxinim)
animal(raposa)
animal(coelho)
animal(veado)
animal(lince)
planta(grama)
planta(alga)
presa(X) <= come(Y, X) e animal(X)

Poderíamos, então, ter o seguinte diálogo com o Prolog:
?animal(coelho)
sim
?come(lince, grama)
não
?come(X, peixe)
urso
guaxinim
?come(X, Y) e planta(Y)
peixinho alga
coelho grama
veado grama
?presa(X)
peixe
peixinho
peixe
guaxinim
raposa
coelho
veado
veado

Note que o peixe é listado duas vezes na resposta à última consulta, pois os peixes são comidos por ursos (fato 1) e por guaxinins (fato 3). Analogamente, veados são comidos por ursos e por linces.

Os fatos são essenciais para responder a consultas e tomar decisões com base nas regras, definidas no programa. Podemos defini-los como constantes que tornam os predicados verdadeiros, assim no banco de dados fornecido tanto o fato 1 quanto o fato 3 são chamados de fatos porque são declarações que afirmam relações entre objetos sem nenhuma condição. Com isso pode-se explicar os fatos: 1 e 3 para exemplificar:

come(urso, peixe)
come(guaxinim, peixe)
  • Fato 1: come(urso, peixe). – Afirma que o urso come peixe.
  • Fato 3: come(guaxinim, peixe). – Afirma que o guaxinim também come peixe. Desse modo, em todos os outros fatos do programa teremos sempre constantes com afirmações sobre os predicados.

Definindo o Predicado predador 🦁

predador(X) :- come(X, Y), animal(X), animal(Y)

Nessa regra houve a inclusão de “animal(Y)” para verificar se o animal comido “come(X,Y)” também é um animal e não uma planta.

Adicionando essa regra ao banco de dados, a consulta:

?- predador(X)

gera os seguintes resultados:

X = urso ;
X = peixe ;
X = guaxinim ;
X = urso ;
X = urso ;
X = raposa ;
X = urso ;
X = lince.

Resultados das Consultas 📋

Baseado na estrutura do seu banco de dados, podemos listar os resultados esperados para diversas consultas:

Prolog

Busca em Profundidade em Prolog 🔍

A busca em profundidade em Prolog refere-se ao processo de execução de um programa Prolog como uma busca em profundidade ao longo de uma árvore de inferência. Os níveis de profundidade da árvore de inferência são numerados sequencialmente a partir da raiz, onde o número zero é atribuído à raiz, nessa árvore, cada nó associa-se a um objetivo e cada objetivo está associado a um conjunto de cláusulas. O Prolog utiliza a memória associativa para armazenar informações sobre as ligações entre variáveis e seus valores, bem como a profundidade de inferência atual. Permitindo a execução eficiente do mecanismo de retrocesso (capacidade de voltar atrás durante a execução para reverter ações e explorar outras possibilidades quando necessário.), pois, quando ocorre um retrocesso em uma profundidade de inferência, a memória associativa é usada para desfazer todas as ligações associadas a essa profundidade.

Prolog e a Lógica de Predicados: Relação com o Modus Ponens

Os conceitos de Prolog estão relacionados com a lógica de predicados porque Prolog é uma linguagem de programação que se baseia na lógica de predicados. Enquanto a lógica proposicional é limitada, a lógica de predicados permite representar conhecimento complexo com quantificadores, funções e predicados. Prolog usa os princípios da lógica de predicados, com elementos como fatos, regras e consultas, para representar e manipular conhecimento e soluções de problemas, tornando a lógica de predicados fundamental na estrutura do Prolog.

A regra de Modus Ponens em lógica de predicados funciona da seguinte maneira:

  • Se tivermos uma afirmação condicional do tipo "Se A, então B" (premissa).
  • E tivermos a afirmação de que "A" é verdadeiro (premissa).
  • Então, podemos concluir que "B" é verdadeiro (conclusão). Para exemplificar em um programa Prolog podemos ter as regras tem_penas(X) :- tem_asas(X) e voa(X) :- tem_penas(X) que são consideradas exemplos de Modus Ponens, pois estabelecem condições e consequências. Se uma condição (ter asas ou ter penas) é satisfeita, então a consequência (ter penas ou voar) pode ser inferida. Prolog

Conclusão:

Pode-se entender como a lógica de predicados é uma extensão da lógica proposicional que permite representar e raciocinar sobre informações mais complexas e abrangentes. Ela introduz recursividade, quantificadores, variáveis, regras e predicados, tornando-a adequada para expressar sentenças que envolvem relações entre objetos e conjuntos de objetos. A linguagem Prolog, por sua vez, por ser baseada no paradigma lógico, é amplamente usada em inteligência artificial, robótica e ciência de dados. Neste post, foram introduzidos alguns dos conceitos fundamentais da lógica de predicados, como predicados, regras e a sintaxe inicial da linguagem Prolog , e como esses conceitos são aplicados na representação de inferência em Prolog. Sendo o princípio das inferências muito semelhante a utilizada em lógica proposicional, como a regra de Modus Ponens utilizada para derivar conclusões lógicas com base em premissas e regras definidas em Prolog.

Referências:

LAGO, Silvio. INTRODUÇÃO À LINGUAGEM PROLOG. 06/02/2009. Disponível em: https://www.ime.usp.br/~slago/slago-prolog.pdf. Acesso em: 08/09/2023.

HOR-MEYLL, Malena O.; FEITOSA, Raul Q.; AMORIM, Cláudio L. de. MPA - Máquina Prolog Associativa. In: INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE AND HIGH PERFORMANCE COMPUTING (SBAC-PAD), 5. , 1993, Florianópolis/SC. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 1993. p. 631-645. Disponível em: https://doi.org/10.5753/sbac-pad.1993.23065. Acesso em 08/09/2023.

LEVADA, Alexandre Luis Magalhães. Lógica dos predicados.10-Dez-2012. Disponível em: http://livresaber.sead.ufscar.br/handle/123456789/1047. Acesso em: 08/09/2023.

prologmatematicahomeworksLeitura de 4 minutos

IP e WIFI

IPV4 => 0.0.0/16

O que é IP? IP é o endereço de uma máquina.

Exemplo de IP:

  • 192.168.0.1
  • 127.0.0.1

Existem IPs comuns ou muito conhecidos por conta de:

  1. Classificação de IP
  2. IP reservado

IP Reservado

Exemplos de IPs reservados e utilizados no dia a dia:

  • 0.0.0.0/8 ⇒ Endereço de Internet
  • 10.0.0.0/8 ⇒ RFC 1918
  • 127.0.0.1 ⇒ Endereço de Loopback (a máquina aponta para si mesma)
  • 240.0.0.0/4 ⇒ Multicast
  • 255.255.255 ⇒ Broadcast

Classificação de IP:

As classes servem para definir a quantidade de máquinas em uma rede.

Classes:

  1. 0 a 127 ⇒ 2^24 (16.777.216) (quantidade de máquinas)
  2. 128 a 191 ⇒ 2^16 (65.536)
  3. 192 a 223 ⇒ 2^8 (256)
  4. 224 a 239 ⇒ nenhum
  5. 240 a 255 ⇒ nenhum

Para verificar a classe, precisamos olhar o início do IP:

Ex:

  • 0.0.0.0/8 ⇒ Classe A
  • 10.0.0.0/8 ⇒ Classe A
  • 127.0.0.1 ⇒ Classe A
  • 240.0.0.0/4 ⇒ Classe E
  • 255.255.255 ⇒ Classe E

Máscara

O roteador utiliza a máscara para identificar e separar o que é endereço e o que é IP, sendo a máscara sobreposta ao IP.

Máscaras:

  • 0.0.0.0
  • 255.0.0.0
  • 255.255.0.0
  • 255.255.255.0
  • 255.255.255.255

Protocolos

Pacotes = 📦

  • Multicast: mais simples. Envia o 📦 para um número menor de máquinas.
  • Broadcast: Quando um 📦 é enviado para todos, podendo ser lido ou não pelos destinatários.
  • Anycast: O 📦 é enviado para aquele que está mais próximo, podendo ser uma máquina ou um grupo de máquinas.
  • Unicast: 1 para 1. O 📦 é enviado para apenas uma máquina.

IPs especiais:

Restritos: 127.0.0.0 169.0.0.0

Internos (privados):

  • 10.0.0/8
  • 172.168.0.0/12
  • 192.168.0.0/16

APIPA (Automatic Private IP Addressing):

APIPA é uma funcionalidade do Windows que permite a um computador atribuir automaticamente a si mesmo um endereço IP na ausência de um servidor DHCP. Geralmente, os endereços IP APIPA estão na faixa de 169.254.0.1 a 169.254.255.254.

Wifi

Rede Wi-Fi

  • Emite ondas pelo ar.
  • A informação é transmitida por binários 0 e 1.

Padrões de Wifi:

  • Rede B ⇒ 11 Mbps 2,4 GHz
  • Rede G ⇒ 54 Mbps 2,4 GHz
  • Rede N ⇒ 100 Mbps 2,4 GHz
  • Rede AC ⇒ 13 Gbps 2,4 GHz ou 5,5 GHz
networkingipv4sistemasredesprotocolosLeitura de 2 minutos

Formatos de Imagens: Utilizar o GIMP, software de tratamento de imagens gratuito e open source, para alterar largura, altura e resolução de imagens, de modo a transformar arquivo em algo menor, ocupando assim uma quantidade de espaço menor e consequentemente possibilitando o desenvolvimento de um site que não ocupe muito espaço.

Adicionar Imagens ao Site:

Podemos adicionar imagens ao site com o seguinte código: <img src="caminho, nome ou link" alt="descrição da imagen">

Exemplo com o código da aula:


<body>

    <h1>Testando carga e imagens</h1>

    <p>Abaixo você vai ver uma imagem</p>

    <img src="logohtml.png" alt="Logo html5">

    <p>Podemos carregar imagens que estão em subpastas:</p>

    <img src="imagens/css.png" alt="Logo css">

    <p>Podemos carregar imagens externas:</p>

    <img src="https://bognarjunior.files.wordpress.com/2018/01/1crcyaithv7aiqh1z93v99q.png" alt="Logo javascript">

</body>

É possível adicionar imagens ao site adicionando o arquivo .png na pasta onde está localizado o arquivo .html, em seguida digitamos ''img'' e pressionamos a tecla enter (o código é gerado automaticamente).

-   obs.: basta posicionar o cursor entre as aspas após "src" e apertar a tecla "ctrl + espaço", os arquivos irão aparecer para o o preenchimento automático.

Podemos preencher com:

-   Nome do arquivo se ele estiver na mesma pasta;

-   Caminho + nome do arquivo se ele estiver em uma subpasta;

-   Url da imagem que está na web, lembrando que se o servidor onde está a imagem cair a imagem do nosso site também pode cair.

Favicon de um Site:

Para adicionar um Favicon ao nosso site primeiro devemos baixar ou transformar algo em um arquivo "ICO", para baixar ícones basta utilizar o site https://www.iconarchive.com/ e para criar, utilize o site Favicon.io.

O ícone pode ser adicionado ao site com o seguinte código acima do title:


<link rel="shortcut icon" href="Dolphin.ico" type="image/x-icon">

    <title>Teste favicon</title>

Obs.: substituir pelo nome do arquivo a ser utilizado href="Dolphin.ico" .

--Aula do canal do Gustavo Guanabara

HTMLImagensGIMPFaviconLeitura de 2 minutos