Menu

Estruturas de Repetição - While

Estruturas de repetição fazem parte do pacote básico de quem está aprendendo a programar, e ajudam no controle do fluxo de execução de determinada parte do código. É muito útil e bastante utilizado para... hum.. tudo. :)

Enquanto (while)

A estrutura mais simples, executa uma ação enquanto determinada condição for verdadeira.


Em C++/C:

while (condição)
{
    código;
    código;
    (...)
}


Podemos observar que logo depois do while, vem uma condição. Essa condição é verificada antes de entrar no "laço" de repetição e só vai parar de repetir quanto a condição se tornar falsa.
Por exemplo, vamos imprimir os números na tela começando do 100 e terminando no 0.



Entendendo o programa:


Começamos declarando uma variável inteira i e atribuímos o valor 100 a ela.
A linha seguinte é o inicio do while, a condição que usamos de parada é i ser menor ou igual a zero. Se for verdadeiro, o programa vai executar o que esta entre as chaves {}, caso for negativo o programa vai "pular" o que está entre chaves e executar o que tiver depois, se não tiver nada, é o fim do programa.
Como 100 é maior ou igual a 0, ele entra no loop. A primeira instrução é imprimir na tela o valor da variável i e quebrar uma linha (endl).
A segunda instrução no loop atribui um novo valor pra variável i, o que é importantíssimo pois ninguém quer cair num loop infinito, não é?!
Então i receberá o seu próprio valor subtraído de uma unidade, vamos fazer a conta:
i = 100 - 1;
i = 99;
Novo valor de i: 99!
Agora, o programa volta no while, e verifica a condição de novo.
(99 é maior ou igual a zero?)
É! Então ele executa as duas instruções de novo, imprimir o valor de i na tela e decrementar uma unidade do mesmo.
Isso vai acontecer até que i chegue a -1, em que a condição não será verificada e sairá do loop!
O return 0 é a instrução logo depois do loop que indica o fim do programa.

Outra possibilidade: Faça... Enquanto.

Outra forma de se utilizar o enquanto (while) é colocando sua condição de verificação (também chamada de flag) no final. Assim, o que estiver dentro do loop será executado uma vez e só se repetirá caso a condição seja verdadeira.  Dá pra ver claramente a diferença! O primeiro testa e depois executa este executa e depois testa. 


do {
   Código;
   Código;
} while(condição);
Pode ser utilizado para realizar cadastro de clientes, por exemplo. O programa pede os dados do cliente e solicita confirmação se deseja incluir mais... Enquanto o usuário desejar incluir mais cliente o programa não sairá do Loop. Essa condição pode ser enquanto o usuário não digitar zero ou clicando no botão de "ok"/"cancelar", etc
Qualquer coisa que seja fácil de implementar e você consiga fazer funcionar!!

JavaScript

Javascript, como muitos sabem (caso negativo: deveriam saber!), é uma linguagem baseada em objetos. Incorporada a páginas da web, é capaz de torná-las dinâmicas e interativas, mas tem suas limitações. Produz programas simples com aplicações limitadas, mas nem por isso insignificantes, não é mesmo?!

Antes de 1995 era chamada de LiveScript, mas quando a SUN (Sim, essa mesma que responsável pelo Java) comprou a tecnologia da Netscape,  a linguagem passou a se chamar JavaScript.

Como toda programação da web, cada browser interpreta de uma forma especifica os scripts enviados, mas na maioria dos casos, isso não interfere em muita coisa. Uma questão considerável é que o JavaScript não é considerado seguro, pois seu código fica visível em qualquer página da web.

Utilidades

  • Alterar dinâmicamente sites
  • Validar formulários
  • Trabalhar com eventos
  • Manipular Cookies, etc.

O código de JavaScript pode ser anexado em qualquer parte do conteúdo HTML, mas é uma boa prática que ele esteja dentro das tags <head></head> . Há duas formas de se incluir o código na página:

  1. Linkando um arquivo extreno, ou
  2. < script src="meuJS.js" type="text/javascript" >< /script>
  3. Colocando o código dentro da página
  4. < script type="text/javascript"> Codigo aqui < /script>

O Conceito de Objeto

Objeto é todo conjunto de elementos que pode ser finito ou infinito. Por exemplo o alfabeto é um conjunto finito, mas os números reais são infinitos. (Obs: mesmo os números sendo infinitos, há um limite nos valores os quais o computador exibe que varia de acordo com o tipo escolhido)

O JavaScript não tem uma palavra reservada para criarmos as Classes. Talvez a melhor maneira de explicar como as classes trabalham seja comparando-as com atributos CSS. Através deles dizemos como os elementos da página se comportam. E o melhor disso é que não serve apenas a uma página específica, a mesma folha de estilos pode ser usada para inúmeras outras páginas. Da mesma forma servem as Classes. Dizemos, através delas, como os objetos devem se comportar e assim podemos criar inúmeros objetos semelhantes. 

Declaração de Variáveis

var <NomeVariavel>;

Exemplos:

var a;
var num1;
var tam;

E ai pode surgir a pergunta, mas como eu especifico um tipo de váriavel? Como o programa vai saber se eu quero manipular um inteiro ou uma cadeia de caracteres?
Simples. O JavaScript é inteligente, o valor que você atribuir a sua variável é que definirá o tipo dela, e por tanto, a coisa fica linda!! Não precisa saber float, int, bool (embora seja altamente recomendável). Só VAR é suficiente.
Mas não se engane, nem tudo são rosas.

Continua em breve (...)

Conceitos Listas

Alguns conceitos relacionados a Listas, Pilhas, Filas e Recursividade. Não há exemplos de códigos por aqui.

Listas Contíguas

São nós alocados fisicamente em posições consecutivas na memória.


Lista Simplesmente Encadeada

Contém nós que, além de armazenarem um valor, armazenam o endereço para o nó seguinte.

Lista com Descritor

Além do TAD(Tipo Abstrado de Dado) da Lista Simplesmente Encadeada, cria-se outro TAD nomeado descritor, contendo informações como: número de nós e o endereço do último nó.

Lista Simplesmente Encadeada com Descritor

Ao invés de se criar dois TADs, inclui as informações extras necessárias dentro do próprio TAD da Lista.

Lista Duplamente Encadeada

Cada nó possui informações sobre o valor, um ponteiro para o próximo nó e um ponteiro para o nó anterior.

Lista Circular

É uma lista duplamente encadeada em que os dois nós dos extremos estão unidos.

Pilhas/Filas

São listas que possuem uma disciplina de acesso.

Pilha

Todas as inclusões e exclusões de nós são feitos por uma única extremidade. Sempre desempilhamos primeiro o último nó empilhado. Esse sistema é chamado de FILO. (First In Last Out)


Fila

Todas as inclusões são feitas numa extremidade e as exclusões em outra. Sempre desenfileiramos primeiro o primeiro item enfileirado. Esse sistema é chamado de FIFO. (First In First Out)


Estrutura de Dados - Teoria

Domínio de Dados

É um conjunto determinado de objetos que pode ser finito ou infinito.

Exemplos: 

Domínio de dados números inteiros: D = {..., -4, -3, -2, -1, 0, 1, 2, 3, 4, ...}
Domínio de dados letras do alfabeto brasileiro: A={A, a, B, b, ..., Z, z}
Domínio de dados de um despertador D={horaAtual, horaAlarme, modoAlarme}
Domínio de dados de uma agenda telefônica A={nome, endereço, telefone}

Quando queremos representar objetos de um determinado domínio criamos maneiras especiais para representá-los. Daí podemos ter um domínio simples ou estruturado.

Domínio simples

São objetos indivisíveis, atômicos, não acessíveis ao programador. 
  1. Primitivos: embutidos na linguagem de programação, não precisamos defini-los (garante invisibilidade e proteção). (ex em c++: int, float, char, double, bool).
  2. Definidos: enumeração ou restrição.(ex em c++: enum, short, signed e unsigned)

Domínio Estruturado

Construídos por componentes que são objetos de domínios  menos complexos.
  1. Homogêneo: componentes que pertencem ao mesmo domínio. (string, array, ponteiro)
  2. Heterogêneo: componentes que não são necessariamente do mesmo domínio. (struct)

Tipo de Dados

É um conjunto de objetos e um conjunto de operações aplicáveis a estes objetos.

Objetos + Operações = Tipo de Dados

Exemplo: 

Conjunto de objetos: Números naturais
Conjunto de operações: operações algébricas (+, -, *) + operações lógicas em que podem ser usados (&&, ||, !)

Tipos primitivos

Qualquer linguagem de programação oferece tipos de dados primitivos (próprios da linguagem), por exemplo: inteiro, float, character, booleano. E estas linguagens também nos permitem combinar esses tipos primitivos, por exemplo, conjunto de inteiros formando um vetor de números inteiros.


Em suma:


Listas - Html

Há três tipos de listas em HTML:

  1. Listas Ordenadas,
  2. Listas Não Ordenadas e,
  3. Listas de Definição

Listas Ordenadas

<ol>
<li>Primeiro Item</li>
<li>Segundo Item</li>
</ol>


Isso deve gerar itens numerados. Há estilos que podemos aplicar as listas ordenadas, assim como podemos definir o item do qual ela começará.

Atributos:

type:
"A" - A, B, C, D...
"a" - a, b, c, d....
"I" - I, II, III, IV, ...
"i" - i, ii, iii, iv, ....
"1" - 1, 2, 3, 4, ....

start: para indicar o elemento inicial.


Exemplo:

<ol type="I" start=3>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ol>

Este código gerará um lista ordenada do tipo algarismos romanos iniciando no terceiro (III).

Listas Não Ordenadas

Cria listas com pontinhos... 
Exemplo de código:

<ul>
<li>LNO 1</li>
<li>LNO 2</li>
<li>LNO 3</li>
</ul>

Listas de Definição

Cria listas para definição de algo, por exemplo, café.

<dl>
<dt>Café</dt>
<dd>Bebida quente e gostosa</dd>
<dt>Leite</dt>
<dd>Bebida derivada de animal</dd>
</dl>
Teste e veja como fica (:

Para quem quer aprender a programar...

Num mundo tão curto e com tanta informação fica difícil saber filtrar adequadamente como investir seu tempo. Neste planeta capitalista e egocêntrico, em que as pessoas são um pouco canibais - e eu realmente acho, além da metáfora, que elas só não comem umas as outras pra manter o status social -, ainda existem almas salvadoras que não te comem por você não saber quem é o prefeito da indonésia.

No que tange a educação, o site Codecademy se destaca. Para quem não sabe é uma startup que tem pouco mais de um ano, criada por dois jovens de 22 anos - Zach Sims e Ryan Rubinski.  O site tem o projeto de ensinar linguagem de programação sem custo nenhum a qualquer pessoa do mundo conectada a internet. Ao entrar no site, você já é incitado a programar numa pequena apresentação pessoal... e logo depois pode "guiar" seus estudos através de trilhas, de acordo com seu ritmo, quase um método Kumon virtual...

“Programação é parte das linguagens necessárias no século 21. Nós achamos que programar ajuda a pessoa a ter diferentes pontos de vista e a alcançar seus sonhos”

Palavras de Sims (co-fundador). Realmente, neste mundo canibal quem tem conhecimento se destaca e porque não conhecimento em programação? Até o prefeito de Nova York, no ano passado, postou no Twitter que utiliza o site. Qual a sua desculpa agora?

E aos colegas da área afobados de plantão, que acham que saber só uma linguagem é suficiente, tenho uma triste noticia: não é. Mesmo quem trabalha com suporte, nunca se sabe quando vai precisar saber SQLServer para implementar alguma coisa urgente (já tendo esse conhecimento, polpa-se tempo, e tempo costumam dizer é dinheiro). Uma vez que você aprende os conceitos em uma linguagem (ainda que não seja pseudo-linguagem) aprender outra linguagem [semelhante] torna-se intuitivo e quase uma brincadeira. Então nada de conversinhas do tipo "Ah, lá não tem java, não quero!". Desculpa. Lá tem sim conceitos de orientação a objetos... pode não estar com as definições formais, mas a idéia é a mesma. O principal é realmente entender como funciona, caso contrário nunca estará apto a criar nada sozinho...

E se você já tem experiência em programação e deseja participar de alguma maratona, o site SPOJ Brasil pode te ajudar. Tem a mesma "interface" do Codecademy, porém voltado para questões de maratona. Não te ensina absolutamente nada, mas te ajuda a saber se seu código é válido.. e possui suporte a praticamente todas as linguagens de programação existentes.

Classes e ID's

Classe

Classes aplicam estilos específicos a grupos de elementos.
Utilizamos o ponto para o seletor e class para a tag. 
Exemplo: 

p {
     font-family: Verdana;
     color: #000;}
p.azul {
          color:  #00F;}
p.verde {
          color: #0F0;}
No HTML, devemos usar a tag class, assim:

<p>Parágrafo comum</p>
<p class="azul"> Parágrafo Azul</p>
<p class="verde">Parágrafo Verde</p>

Este código deve produzir parágrafos com cores distintas.

Também é possível definir classes genéricas que podem ser usadas em qualquer atributo:

CSS:
.verde { color: #0F0;}

HTML:
<h1 class="verde">Título Verde</h1>
<p class="verde">Paragrafo Verde</p>

ID

Os IDs, assim como as classes, definem formatações especificas mas a diferença é que IDs atribuem estilos a um único elemento.
Utilizamos o # para o seletor e o id para a tag.
Exemplo:

No CSS:
p { color: #00F;}
#verde { color: #0F0;}

No HTML:
<p>Paragrafo comum</p>
<p id="verde">id = verde</p>

Recapitulando

Classes podem ser usadas para definir formatações genéricas ou especificas de vários elementos html (tags). Podem ser usados livremente quando declarados de forma genérica. Ao contrario, IDs são válidos apenas para o seletor ao qual foi declarado, tornando a formatação restrita.