thegoodfellas/blogset-br huggingface dataset:
didaticos apenas. Muitos costumam confundir VB (ou VB.NET) com BASIC, mas a linguagem de programacao e realmente BASIC. VB e apenas o ambiente de desenvolvimento de propriedade da Microsoft baseado na linguagem BASIC.Pode-se acrescentar outros ifs dentro de um if, e dentro do else tambem. Essa e uma caracteristica muito util para quem quer analisar mais de uma condicao, uma de cada vez e reportar os erros sobre cada condicao falsa. Lembrando-se de que o IF so prossegue a executar o codigo que esta dentro dele se a condicao expressa for verdadeira, podemos utilizar de alguns operadores relacionais entre as variaveis e valores:NomeSimbolo em C, JAVA, C#...Simbolo em BASICIgual a===Maior que>>Menor que<<Maior ou igual a>=>=Menor ou igual a<=<=Diferente de!=<>Alem dos operadores relacionais, que operam entre variaveis e constantes, podemos tambem usar operadores logicos entre sentencas, os mesmos que usamos na algebra de Boole, mas com uma diferenca de notacao:NomeSimbolo em C, JAVA, C#...Simbolo em BASICNao!NotE&&AndOU||OrPercebam mais uma similaridade de BASIC com a linguagem natural inglesa. Tambem percebam que o simbolo de Nao esta presente no simbolo de Diferente de, significando que uma variavel NAO e IGUAL a outra (ou seja, diferente). Com estes simbolos, podemos formar a seguinte sentenca logica:if((a != b) && (a + 2 < c)){<comando>}Nesta condicao, pedimos para verificar se o valor da variavel "a" e diferente do valor da variavel "b" e ainda se o valor da variavel "a" somado a 2 e menor que o valor da variavel "c". Como usamos o conector logico E, o comando que for colocado no bloco so sera executado se as duas sentencas forem verdadeiras. Se colocassemos um "||" (barras verticais, nao I nem L) no lugar de &&, qualquer caso em que pelo menos uma das sentencas fosse verdadeira executaria o codigo.O funcionamento do IF e bem simples: Verifica se a condicao e verdadeira baseando-se em regras pre-definidas de comparacao binaria, dentro do processador (acao efetuada em escala de nanosegundos) e executa o codigo se o resultado da sentenca for verdadeiro. Se o resultado for falso, o programa procura algum ELSE. Se tiver um ELSE, executa o comando que tiver no ELSE. Se nao tiver, passa diretamente para o proximo codigo na sequencia do programa.Para usar o IF com variaveis no lugar da condicao, esta variavel tera que ser declarada como bool (aceita apenas verdadeiro ou falso). Isso e interessante para quando voce tem uma estrutura inteira para analisar se algo e verdadeiro ou falso, por exemplo, se um elemento existe em uma lista de elementos. A principio nao da para fazer este reconhecimento em apenas uma sentenca, necessita-se de uma funcao (falarei sobre funcoes mais adiante) com uma estrutura montada a mao, que retorne um valor bool. Esta funcao entao pode ser usada como se fosse uma variavel com um codigo dentro, e pode ser usada dentro do comando IF, usando a seguinte sintaxe:if(verifica()){<comandos>;}Sendo "verifica()" o nome da funcao, ela retorna valores bool, ou verdadeiro, ou falso. Uma variavel booleana poderia muito bem ser utilizada no lugar da funcao. O IF analisa se aquela expressao resulta em verdadeiro e
executa. Se for falso, nao executa e procura pelo ELSE. Se nao encontrar passa para a sequencia.Muitas vezes tambem temos a necessidade de verificar se uma sentenca (ou variavel) e falsa. Ao colocar a variavel ou a sentenca dentro da condicao do IF, basta colocar um ! (negacao) a frente da variavel ou sentenca (esta ultima, podendo ser substituida com o operador relacional imediatamente contrario), ficando assim:if(!(a > b)){//ouif(a <= b){*Nota: Pode-se usar // para comentar (ou seja, fazer uma anotacao que sera ignorada pelo programa, para fins de orientacao de funcionalidade do codigo) uma linha ou /* */ para comentar um bloco de linhas. Neste caso, utiliza-se /* no comeco do bloco e */ no final do bloco de comentarios.Verifica-se que o oposto de "Maior que" e "Menor ou igual a", por questoes simplesmente matematicas (se um numero nao e maior que outro, ele so pode ser menor ou entao igual a ele).Bem, acho que e isso por hoje. Estamos comecando a evoluir na programacao! Qualquer duvida, comentem!Ate a proxima :)
Nao e uma linguagem de programacao. Nao e uma linguagem de scripts. Mas e I-M-P-R-E-S-C-I-N-D-I-V-E-L para o teu WebSite. Quem faz sites em outros formatos que me perdoem, mas nao ha maneira mais pura, mais personalizavel e que fornece tanto aprendizado quanto este. Aqui da pra ver o processo de formacao de um site, como ele se estrutura e quais sao as suas possibilidades. Aqui da pra extravasar criatividade e criar verdadeiras obras de arte que podem ser vistas, a principio, por todos que possuem internet!HTML e um acronimo para HyperText Markup Language (Linguagem de Marcacao de Hypertexto). Mas nao acabei de falar que nao era linguagem de programacao? E nao e. HTML e uma linguagem sim, mas de MARCACAO, ou seja, nao possui estruturas tipicas de linguagens de programacao, como lacos, condicoes, etc., muito menos conexao com servidor. Apenas serve para estruturar visual e funcionalmente a pagina da Web. Agora, se prestaram atencao em meus artigos anteriores sobre Web, perceberao que nem Javascript nem HTML sao linguagens de programacao, ou seja, a Web nao possui linguagens de programacao? Sim, possui. PHP e a mais famosa delas, mas falaremos sobre PHP mais pra frente, primeiramente vamos entender a estrutura HTML.Um HTML puro e facil de ser reconhecido, principalmente pelo uso das Tags, ou seja, um rotulo, etiqueta, algo para identificar um bloco. Cada bloco deve ser aberto e fechado, mas nao com chaves. As proprias tags abrem e fecham o bloco, que e composto por outras tags. Para exemplificar, temos a tag inicial:<html></html>Essa e a tag que abre e encerra o bloco principal da estrutura. As tags devem seguir uma ordem de abertura e fechamento, um seja, a primeira tag a ser aberta tem que ser fechada por ultimo. Por exemplo, este codigo nao executara de maneira esperada:<html><body><font color="red"><b>Hello World</b></html></body></font>A tag <html> e fechada antes que a tag <body> e a <font>, portanto, e uma forma incorreta de se estruturar a pagina. Assim como a tag html abre a pagina web inteira, temos a tag body, que abre o corpo da pagina. Tudo escrito antes ou depois da tag body nao sera mostrado na tela, a nao ser que haja algo que chame esta determinada funcao (como e o caso do Javascript). Usamos tags fora da body para definir configuracoes do website (assim como o titulo da pagina, que aparece na barra superior do navegador), scripts, como Javascript e estilo. Tudo isso colocamos na tag <head>, como segue:<html><head><title>Hello World</title></head><body>Ola, mundo!</body></html>Esta sim e uma forma correta de se estruturar. As tags foram abertas e fechadas na ordem. Isto resultaria em uma impressao do texto "Ola, mundo" no navegador e, no titulo, estaria "Hello World".Como podem ter percebido, no codigo que foi estruturado errado, as tags possuem propriedades que podem ser definidas manualmente. No caso da tag <font>, ha as principais propriedades color, que define a cor da fonte (pode ser definido tanto pelo nome das cores em ingles, quanto pelo codigo hexadecimal representativo das partes da cor - RGB, ou Red/Green/Blue. Ex.: #000000 produz a cor preta, #ffffff produz a cor branca, #ff0000
produz a cor vermelha, #aaaa00 produz a cor alaranjada, e assim por diante, e so misturar as cores com a devida intensidade), face, que define qual a fonte sera utilizada para aquele texto (Arial, Tahoma, Verdana, Comic Sans MS...), que tem que ser colocada entre aspas (unicas ou duplas) e contendo o nome inteiro da fonte (o correto e Comic Sans MS, nao apenas Comic Sans) e size, que define o tamanho da fonte em pontos ou pixels, dependendo da definicao. Existem outras propriedades para outras tags, que iremos comentar mais adiante.O codigo HTML pode ser escrito em qualquer editor de texto. Para executa-lo no navegador, tem que salvar o codigo no formato ".html" ou simplesmente ".htm".Devem ter ficado curiosos sobre o que se trataria "estilo". No proximo artigo explicarei melhor, mas adianto que e algo que complementa o HTML, aplicando uns enfeites e deixando o teu website muito mais bonito e personalizavel!Ate a proxima :)
Como e chato ficar escrevendo tantas formulas, numeros, fracoes, potencias... bla bla bla! Voce pode muito bem pensar isso, e que muitas das coisas que voce aprende em calculo, jamais usara em toda a tua vida. ERRADO! Todos os dias voce usa aquilo que aprende na matematica, se realmente aprende. Para caminhar nos usamos matematica, para ver se o carro consegue ultrapassar outro antes do cruzamento, etc. O que mais aprendemos em matematica e logica, e nao a como usar as interminaveis formulas que os professores extendem na lousa. Basta sabermos como utilizar aquela logica no nosso dia-a-dia.Mas o importante e: como colocar aquilo que escrevemos no papel dentro do computador, para ele fazer os calculos por nos, extremamente mais rapido? O fato e que o computador entende uma linguagem diferente de nos, por isso consegue fazer calculos mais rapida e eficientemente. O computador entende apenas a linguagem binaria ou digital. Apenas dois numeros, o 0 e o 1, fazem toda a diferenca na hora do calculo. Sim, o computador e burro. Ele nao sabe fazer 2 + 2. O que ele sabe fazer e transformar o 2 em numero binario e a partir dai, aplicar regras de diferenciacao binaria, ou seja: 00000010 + 00000010 = 00000100 (em decimais, le-se: 2 + 2 = 4). Em binarios, nao existe o numero 2. Entao, 1 + 1 e igual a zero, e o que sobrou dessa adicao vai para a casa da frente. Esse metodo de calculo e infinitamente mais facil do que os calculos decimais. O unico contra para que nos nao conseguimos fazer com tanta rapidez e que fomos acostumados desde criancas a fazer contas com decimais, ou seja, nao entendemos o conceito por tras dos binarios, e entendemos apenas que 2 + 2 = 4. Os binarios tambem representam os fatores ligado e desligado, ou seja, apresenta apenas duas possibilidades opostas, sendo digital (ou logico) e nao analogico. Um exemplo de elemento analogico e uma torneira. Ela pode estar ligada ou desligada, mas tambem pode estar forte, fraca, pingando, vazando, com forca media... Agora, a pergunta que se faz e: quantas possibilidades de posicionamento, ou entao, quantas opcoes temos no modelo analogico? Desde desligada ate a forca total permitida pela torneira, podemos definir com exatidao os estagios que a torneira para? Nao, nao podemos. Por isso, podemos dizer que temos infinitas possibilidades no modelo analogico, mas apenas duas no modelo logico ou digital. Por isso o computador faz calculos mais rapidamente, porque ele so lida com comparacoes em que ha apenas dois resultados: ou verdadeiro ou falso. Essa e a base da Algebra Booleana, desenvolvida por George Boole, assim como o conceito das conjuncoes fundamentais E, OU e a negacao NAO. Essa e a base da computacao e quem quer seguir esta area, precisa ser ciente das funcoes dessas tres palavras. No proximo artigo, explicarei mais detalhadamente a algebra de Boole.Para calcular, na programacao, usamos, logicamente, os numeros (ou inteiros ou reais [com ou sem ponto flutuante {notacao cientifica}]), as variaveis e as operacoes que temos a nossa disposicao. O
computador nao consegue fazer qualquer operacao alem da adicao. Mas ha regras fixas nele que permitem transformar as operacoes em adicao para que ele possa calcular e nos retornar o resultado das comparacoes aditivas binarias em formato decimal, tudo isso em menos de um milesimo de segundo! Para fazer operacoes, temos que guardar o valor resultante em uma variavel ou entao exibi-lo diretamente na tela (por meio de console ou de objetos).#include <stdio.h>#include <conio.h>int a,b,c;void main(){a=5;b=a+2;c=a+b;printf("O resultado e: ", c);getch();}Aqui incluimos outra biblioteca: conio.h (acronimo de Console Input/Output), para manipular entrada e saida de dados no console. Inclui esta biblioteca apenas para mostrar uma outra forma de codificar em C. O "getch();" na penultima linha serve para o programa parar para o usuario ver o resultado. Se nao houver esta linha, assim como o "return" na funcao, o programa executa e o console fecha. Esta linha ficcionalmente captura o caractere que o usuario digitar na proxima linha, ou seja, nenhum. Quando o programa executar, esta funcao segurara o programa para ele nao fechar. Assim que o usuario der Enter, o programa fechara, pois ja executou tudo o que tinha para ser executado.Podemos declarar variaveis do mesmo tipo em sequencia, sem precisar declarar uma por linha. As variaveis comecam com o valor que existia no lugar da memoria que elas ocuparam. Se usar as variaveis antes de lhes fornecer valores, elas podem causar resultados inesperados. No ambiente VB.NET, as variaveis sao zeradas automaticamente quando sao declaradas, pois nao e exatamente uma declaracao, e sim um dimensionamento.Na proxima linha, declaramos o metodo principal como sendo do tipo void (vacuo), pois nao retorna nenhum valor, apenas executa uma acao. Atribuimos o valor 5 a variavel "a", falamos que a variavel "b" e igual a variavel "a" somada a 2 e que "c" e a soma de "a" e "b". Mostramos o resultado e encerramos o programa. Logicamente que o resultado mais obvio e 12, pois definimos isso durante o programa. Mas a maioria dos programas e feito dos valores que o usuario fornece, portanto, nao se pode ter certeza de qual valor sera. Poderiamos muito bem ter omitido a variavel "c", mas para efeito de pratica de variaveis, deixemos assim mesmo.Usamos tambem neste codigo da concatenacao, ou seja, unir trechos string com variaveis ou outros trechos string, usando o operador "+". Neste caso, concatenamos a string "O resultado e: " com a variavel "c", mostrando na tela: "O resultado e: 12".Bem, creio que seja so isso por hoje pessoal. Qualquer duvida, comente. Ate a proxima :)
todos que irao utilizar o codigo entendam. Se o programa e particular, pode extravasar na criatividade, mas tem que ser algo que seja rememoravel e facil de ler, para que a solucao para tal problema esteja sempre ali, e so consultar. Neste blog, criarei uma linguagem Algoritmica para facilitar o entendimento da programacao, assim como suas funcoes.Bem, isto e tudo por hoje. Espero que agora entendam mais um pouco do que e a programacao e porque me encantei por ela!Ate a proxima! :)
E / OU. Qual a diferenca entre essas duas palavrinhas? E o que acontece se colocar um NAO no meio? A logica de funcionamento desses conectores parece tao natural para nos, humanos, que nem percebemos como, quando e nem porque os usamos. Ja o computador nao consegue ter o mesmo processo mental que nos temos. Nisso nos somos e sempre seremos mais eficazes que o computador. Nao, caros amigos, o mundo nao sera dominado pelas maquinas, NUNCA, pois as maquinas dependem dos seres humanos, nos as controlamos, comandamos e ordenamos a fazer o que nos der na telha (sinto-me com poderes agora). Nao podemos dar inteligencia a maquina, nem que a tecnologia avance 300 milhoes de anos. E principalmente nessas comparacoes, tao faceis a vista do ser humano, mora o principal defeito da maquina. Ela nao sabe decidir o que e verdadeiro e falso. Os seres humanos tiveram que colocar regras de comparacao baseados na comparacao binaria que a maquina faz para acrescentar o E, o OU e o NAO. Ainda nao acrescentarei pratica a este assunto, pois isto precisa de um pouco mais de estudo. E como teoria SUCKS, procurarei ser breve.Comecemos pela mais basica das 3 palavras: o NAO. E uma negacao, ou seja, inversao. Quando voce nega uma sentenca, voce esta invertendo-a de sentido. O mesmo principio se aplica a algebra. Quando negamos algo, queremos o oposto. Assim, VERDADEIRO negado vira FALSO e vice-versa. Em numeros:0' = 11' = 0( ' e um simbolo para NAO)Facil, nao e? Passemos para a proxima. A palavra E e um conector que "amarra" duas sentencas, ou seja, para que a sentenca formada com as duas unidas pelo E seja verdadeira, as DUAS tem que ser verdadeiras. Um exemplo pratico:A bola e redondaverdadeiroAcucar e salgadofalsoA bola e redonda Eacucar e salgadofalsoA bola e redondaverdadeiroAcucar e doceverdadeiroA bola e redonda Eacucar e doceverdadeiroUsamos a tabela verdade para nos orientar sobre os possiveis valores dos conectores para determinados valores de sentencas.Tabela VerdadeABA ^ B111100010000( "^" e um simbolo para E)Podemos comparar o operador conectivo (ou logico) E ao operador matematico de multiplicacao (.), ja que para que o resultado seja nao-nulo, ambos os fatores tem de ser nao-nulos (zero multiplicado por qualquer numero e igual a zero).O OU e um pouco mais dificil de abstrair. Mesmo porque ha duas situacoes no dia-a-dia em que usamos a palavra OU. Em questao de gramatica, OU e uma conjuncao alternativa e optativa. Quando e optativa, ha duas opcoes, mas ambas nao podem ser verdadeiras, ha de se escolher apenas UMA. Mas nao e somente essa a aplicacao do OU. Na verdade, este e o OU exclusivo. Na informatica, usaremos mais o OU inclusivo, ou seja, ha duas opcoes, e pode ser qualquer uma delas verdadeira, e inclusive ambas. Na tabela verdade temos:Tabela VerdadeABA v B111101011000( "v" e um simbolo para OU)Praticamente temos que, para duas sentencas, uma sentenca formada por elas unidas pelo conectivo OU sera verdadeira se uma delas for verdadeira, ou ate ambas.Podemos comparar o operador conectivo (ou logico) OU ao operador matematico de adicao (+),
ja que para que o resultado seja nao-nulo, pelo menos um dos dois fatores tem de ser nao-nulos (qualquer numero somado a zero e igual ao proprio numero).Ao inves de ^ ou v, podemos usar para E e OU os operadores matematicos nas sentencas:A . B (A E B);A + B (A OU B);Tambem podemos misturar os conectores em uma unica sentenca, para formarmos circuitos logicos:A' + B . (C + D') => A negado OU B E (C OU D negado)Bem, e isso por hoje. Aprendemos bastante teoria matematica e logica nos dois ultimos artigos. Nos proximos, colocaremos em pratica!Ate a proxima! :)
de repeticao. Mas que diabos seria isto? Pense num laco, em questoes de montaria. O cavaleiro faz um laco de corda para envolver qualquer que seja o objeto mirado, ou seja, figurativamente, uma prisao, armadilha ou cativeiro. Em programacao, temos mais ou menos esta ideia para lacos. Um local onde o codigo fica aprisionado, rodando dependentemente de alguma condicao imposta. Por repeticao se entende que o codigo delimitado sera executado tantas vezes quanto forem definidas. Ou seja, ele ficara la repetindo ate chegar a uma condicao estabelecida.Temos tres maneiras formais de se delimitar lacos de repeticao. Existem outras, que falarei ao final deste artigo, mas nao sao consideradas verdadeiros lacos de repeticao, e sim, estruturas de dados que simulam este artificio. O primeiro e mais elementar, e o laco Enquanto. Ele simplesmente conta com uma condicao que, ao ser respeitada, os comandos que estao dentro do bloco serao executados. Quando a condicao nao for respeitada, passa-se o laco e a execucao vai diretamente para a linha posterior ao fechamento do bloco, deixando o laco para tras. E bem util, mas geralmente exige mais que uma linha de codigo no bloco. Vamos fazer um exercicio que perdure para todos os comandos deste artigo: calcular o Fatorial de um numero. Utilizarei as linguagens Java e VB.Net, apenas para notar as diferencas entre elas.public static double Fatorial(int n){ int c = n; while(c>1){ c--; n *= c; } return n;}Public Function Fatorial(ByVal n As Integer) As Double Dim c = n 'nao precisamos definir o tipo, quando ja igualamos a outra variavel. While c > 1 c = c - 1 n = n * c End While Return nEnd FunctionBem simples, nao e? Declara uma variavel "c" que e igual ao numero informado. Enquanto c for maior que 1 (ao se multiplicar por 0, o resultado se anula), c e diminuido em 1 e o n pega o valor do resultado dele mesmo multiplicado por c (x *= y significa x = x * y). Perceba que o retorno nao se repete junto com o laco, pois esta fora do escopo (parte do codigo que esta dentro de um bloco delimitado por chaves, que nao pode ser acessado por outras partes do codigo). Um bug notavel neste codigo (bug = defeito, falha, erro) aparece quando o numero fornecido for 0. O resultado retornado e 0. Sabemos que nenhum fatorial da 0, porque zero nao tem numero natural antes de si mesmo, portanto, o fatorial de 0 e 1, pois nenhum numero multiplicado por outro da 1, a nao ser ele mesmo. Uma solucao seria colocar uma condicao, como:if(n == 0) return 1;//lembrando que nao precisamos abrir o bloco de chaves quando so ha uma instrucao. Isto serve tambem para lacos.Outra forma, bem semelhante, mas sutilmente diferente no conceito e o laco Faca - Enquanto:public static double Fatorial(int n){ if(n == 0) return 1; //debugador int c = n; do{ c--; n *= c; }while(c>1) return n;}Public Function Fatorial(ByVal n As Integer) As Double If n = 0 Then Return 1 End If 'sim, temos
que abrir e fechar o bloco em VB.Net :( Dim c = n Do c = c - 1 n = n * c While n > 1 Return nEnd FunctionEste laco tem a diferenca de que, a verificacao, ao inves de ser feita na volta do codigo, e feita no final, podendo representar uma melhoria (embora nao significativa) na performance, sem ter que contar com o desvio para a volta do laco.Existe mais um tipo de laco que consegue reunir muitas caracteristicas dos outros dois, alem de ser mais funcional e contar com um inicializador, uma comparacao e um incrementador proprio. E o laco For:public static double Fatorial(int n){ if(n == 0) return 1; //debugador for(int c = n;c>1;c--) //sem abrir bloco, pois so ha uma instrucao n *= c; return n;}Public Function Fatorial(ByVal n As Integer) As Double If n = 0 Then Return 1 End If 'sim, temos que abrir e fechar o bloco em VB.Net :( For c = n To 2 Step -1 n = n * c Next Return nEnd FunctionEste laco e praticamente uma funcao inteira dentro de outra. Conta com um escopo de declaracao de variavel, sendo que a variavel declarada dentro dele (int c = n) so pode ser usada DENTRO DELE. Se for tentar usar o c fora do laco, vai dar erro de compilacao, pois o c simplesmente nao vai existir. A comparacao e igual a do while em Java, mas em VB, ha a diferenca de que o For e um contador, e nao um comparador. Voce declara uma variavel e ele vai incrementando ou decrementando ate (To) o valor especificado. Para definir se queremos incrementar ou decrementar a variavel, colocamos o passo, que no Java e representado pelo "c--" (pode ser c++ [sendo assim, podendo ser ocultado] ou entao c+=2, qualquer numero para incrementar / decrementar) e no VB e representado pelo Step (que pode ser positivo ou negativo. Quando queremos Step 1, podemos ocultar o Step que o VB reconhece automaticamente o passo 1).Temos duas formas de fazer algo parecido com os lacos de repeticao, embora nao sejam reais lacos. Temos o desvio incondicional e uma verdadeira obra-prima da programacao, a recursao, que nada mais e do que um aproveitamento de regras matematicas.Primeiramente com o Desvio Incondicional (nao existe em Java):Public Function FatorialDI(ByVal n As Integer) As Double If n = 0 Then Return 1 End If 'sim, temos que abrir e fechar o bloco em VB.Net :( c = n inicio: n = n * c c = c - 1 If(c > 2) GoTo inicio Return nEnd FunctionO grande truque e o GoTo, que existe em C, C++, C#, VB, e em muitas outras linguagens, mas nao em Java :(Ele define um rotulo (neste caso, "inicio", mas poderia ser qualquer palavra) que pode ser acessado por meio da palavra-chave GoTo, ou seja, desviando o fluxo natural do codigo para onde o programador quiser, quando ele quiser, ou seja, incondicionalmente. Pode-se acrescentar uma condicao como foi feita neste trecho, mas o comando GoTo realmente, nao possui condicao,