domingo, 27 de março de 2011

IF - ELSE em C

   
Nas linguagens de programação sempre haverá uma estrutura que controla o programa executando algumas instruções de acordo com uma regra definida pelo programador. Regras são para que o usuário chegue onde quer ir da melhor forma possível, quanto mais direto melhor (tanto para quem faz o código quanto para o usuário).
Essa estrutura é fundamental, imagine que você quer fazer um programa que rode de um jeito para os que fizerem algumas escolhas e de outro jeito para os que fizerem outras, todos os sistemas que fizerem isso precisam de um IF (traduzindo para os que realmente odeiam inglês: se). Se o usuário clicar num botão faça isso, se clicar em outro faça aquilo, se não clicar faça essa outra coisa... e por aí vai. Quem quiser saber o peso de um "se" veja essa o texto:



Sabendo que precisava subjugar Esparta para ter o domínio total sobre a Grécia, Felipe cercou as fronteiras da Lacônia e enviou uma mensagem aos espartanos.
            - Se não se renderem imediatamente - ameaçava -, invadirei suas terras. Se meus exércitos as invadirem, pilharão e queimarão tudo o que vocês mais prezam. Se eu marchar sobre a Lacônia, arrasarei suas cidades.
            Alguns dias depois, Felipe recebeu a resposta. Abriu a carta e encontrou somente uma palavra escrita:
            “Se”.

Fera não é? Continuemos programando

A estrutura do if é bem simples:
if(condição)
{
    comandos a serem executados *só entra aqui se a condição for satisfeita!
}

Existe também como usar um complemento para quando a condição não for satisfeita:
if(condição)
{
    comandos a serem executados *só entra aqui se a condição for satisfeita!
}
else
{
    comandos a serem executados *só entra aqui se a condição de cima NÃO for satisfeita!
}

Agora veremos como isso funciona na prática:
Vamos fazer um programa bem básico onde o aluno coloca sua nota e descobre se foi aprovado ou reprovado, abaixo o código-fonte:

#include <stdio.h>

void main ()
{
     float nota;             //nota pode ter uma parte fracionária Ex: 6 e 1/2 = 6,5
    
     printf("Informe o valor de sua nota: ");
     scanf("%f", &nota);     //guardando o valor da nota informado pelo usuário
    
     if(nota >= 6)           // se a nota for maior ou igual a 6, o usuário está aprovado (6 é a média para aprovação no caso)
     {
           printf("Voce passou!\n");
     }
     else            // se a nota for menor que 6, o usuário foi reprovado
     {
           printf("Voce foi reprovado...\n");
     }
    
     system("pause");        // esperando que usuário digite uma tecla para fechar programa
}


No próximo post eu continuo essa estrutura introduzindo os operadores e o "else if".
Imagine que você quer colocar mais de uma condição, por exemplo ser homem e ter idade maior ou igual a de 18 anos, como você faria esse programa? E se em vez de duas condições com diferentes comandos tivesse uma terceira, como usar if e else que só abrangem duas condições??? Próximo post! "se"

quarta-feira, 16 de março de 2011

Iniciando a lógica em PHP

Apóstrofes e aspas 


No PHP, um valor pode ser atribuído a uma string usando-se aspas ("string") ou apóstrofes ('string'). Caso só existam caracteres normais dentro da string, o efeito será o exatamente o mesmo, independentemente do uso de aspas ou apóstrofes. Porém, quando se usa variáveis dentro de strings, o efeito é completamente diferente. As aspas permitem que você insira o valor de variáveis dentro de strings sem precisar fazer concatenação, já as apóstrofes não. Perceba:

<?php
$nome = 'João';

echo "Olá, meu nome é $nome !"; // O resultado é 'Olá, meu nome é João !'

echo 'Olá, meu nome é $nome !'; // O resultado é 'Olá, meu nome é $nome !'

echo 'Olá, meu nome é '. $nome . ' !'; // O resultado é 'Olá, meu nome é João !'
?>

Dica

Eu recomendo sempre utilizar aspas, pois facilita muito, além disso, chegará uma etapa em que teremos que usar ambos (apóstrofo e aspas). Então sempre nesta hierarquia: aspas depois apóstrofo.
Operadores

Operadores Aritméticos 

Exemplo
Nome
Resultado
$a + b
Adição
Soma de $a e $b
$a - $b
Subtração
Diferença entre $a e $b
$a * $b
Multiplicação
Produto de $a e $b
$a / $b
Divisão
Quociente de $a e $b
$a % $b
Módulo
Resto da divisão de $a e $b

Operadores de Atribuição 


O operador básico de atribuição é o "=", que significa "recebe" (nunca confunda com "igual").

<?php
$a = '3'; 

echo $a; // retorna 3
?>

É importante mencionar que existem também os operadores combinados, que são o operador de atribuição mais um operador aritmético.

<?php
$a =+ 5; // o mesmo que $a = $a + 5;
?>

Operadores de comparação 

Exemplo
Nome
Resultado
$a == $b
Igual
Verdadeiro se $a igual a $b
$a === $b
Idêntico
Verdadeiro se $a igual a $b e eles são do mesmo tipo (PHP4)
$a != $b
Diferente
Verdadeiro se $a diferente de $b
$a <> $b
Diferente
Verdadeiro se $a diferente de $b
$a !== $b
Não idêntico
Verdadeiro se $a diferente de $b, ou se eles não são do mesmo tipo (PHP4)
$a < $b
Menor
Verdadeiro se $a menor que $b
$a > $b
Maior
Verdadeiro se $a maior que $b
$a <= $b
Menor ou igual
Verdadeiro se $a menor ou igual a $b
$a >= $b
Maior ou igual
Verdadeiro se $a maior ou igual a $b

Operadores Lógicos 

Exemplo
Nome
Resultado
$a and $b
e
Verdadeiro quando $a e $b são verdadeiros
$a or $b
ou
Verdadeiro se $a ou $b são verdadeiros
$a xor $b
xor
Verdadeiro se $a ou $b são verdadeiros, mas não ambos
!$a
não
Verdadeiro se $a falso
$a && $b
e
Verdadeiro quando $a e $b são verdadeiros
$a || $b
ou
Verdadeiro se $a ou $b são verdadeiros

Operadores de string 


Existem apenas 2 operadores de string. O de concatenação (".") e o de atribuição de concatenação (".="). Eles funcionam assim:

<?php
$a = 'Meu nome é ';

$a .= 'José'; // a mesma coisa que $a = $a . 'José';
?>

segunda-feira, 14 de março de 2011

Entrada e Saída em JAVA

          Pois bem, após conseguirmos fazer nosso primeiro programa em JAVA, podemos começar a saber direitinho o conceito dos termos de entrada e saída desta linguagem de programação. Para podermos desfrutar dos comandos de saída desta linguagem não precisaremos usar o comando import, pois os comandos necessários para saída já estão contidos no pacote java.Lang, já para os comando de entrada, importaremos o pacote java.util.Scanner, que funcionará como  o scanf em C.

         Para comandos de saída usaremos o console, para desfrutarmos disso temos o comando System.out.println(“seu texto aqui”); para imprimir o texto no console do compilador. Por exemplo, transcreverei todo um código aqui para mostrar uma linha de texto comum e que já usamos antes o Hello World:

 

public class HelloWorld{

      public static void main(String[] args){

                       System.out.println(“Hello World!”);

 

                       System.exit(0);

                      }

     }

            O comando println(print line) serve para imprimir algo no console, seguindo este formato:

      System.out.println(lista_de_controle, lista_de_argumentos);

            Como você pode perceber , temos antes do println os comandos System.out, significa o seguinte, dentro do pacote java.Lang, temos o “subpacote” dele chamado java.Lang.System, e dentro desta classe temos o comando out, que significa saída, e dentro deste out temos comandos de saída de dados, como o println. A separação destes pacotes por pontos se deve ao encapsulamento, pelo fato de um comando estar dentro de outro, como no caso do out e println, o comando println está encapsulado em out que está encapsulado em System que está encapsulado em Lang que por fim está encapsulado em java. Mais tarde veremos o conceito de superclasses.

            Para comandos de entrada precisaremos importar o pacote Scanner, declarando-o antes da classe:

 

import java.util.Scanner;

public class Saida{

              private static Scanner scan = new Scanner(System.in);

 

              public static void main(String[] args){

                       String teste;

                       System.out.println(“Digite alguma string:”);

             teste = scan.nextLine();

            }

}

 

            Assim conseguimos ler nossa primeira string, atente para a linha de leitura teste = scan.nextLine(); e perceba que atribuimos um comando à string teste, que é scan.nextLine(); e note também que mais acima declaramos scan em private static Scanner scan = new Scanner(System.in); e que basicamente quer dizer o seguinte: uma função privada(só essa classe conhece), estática (não muda durante o programa) do tipo Scanner (ou leitura), com o nome de scan (mais simples, mas pode colocar o que quiser) está sendo atribuída a um novo Scanner (pois tenho que declarar para o programa reconhecer) que usa System.in (assim como o out de saída, temos o in de entrada no pacote System).

            Entretanto, contudo, todavia, nem tudo é um mar de rosas como declarar a entrada de dados para strings, pois temos outros formatos como double, int, char e float, pelo menos nos básicos, e digamos que variáveis como bytes são de usos mais ‘avançados’ por assim dizer. Para podermos fazer leitura de uma variável do tipo int precisamos de: mudar o tipo de variável que queremos para leitura (óbvio diga-se de passagem), e também modificar a linha de leitura de dados, onde estávamos lendo string no código anterior, e deixemos da seguinte maneira: teste = Double.parseDouble(scan.nextLine()); , e que quer dizer que estamos lendo uma variável do tipo Double, e queremos que seja lida como Double, então convertemos de string para Double, por isso o parseDouble, pois tudo que é lido vem no formato de String, por isso que quando desejamos ler realmente uma String não precisamos de algo do tipo String.parseString, já podemos ir direto para o scan.nextLine();, e este tem o significado de que usamos nosso comando que usa a função Scanner, que no nosso caso é o scan, e pedimos para ler a próxima linha, que é onde os dados serão lidos. Para ler uma variável do tipo int, só trocaremos o Double.parseDouble(scan.nextLine(); por Integer.parseInt(scan.nextLine());, fácil não? Agora tente você com o float e veja no que dá! Já para o char, temos algo mais diferente, e não é só colocar Character.parseChar(scan.nextLine());, aposto que você pensou que seria fácil assim, para podermos ler uma variável do tipo Char, leremos ele como ‘string’, colocando apenas a linha de comando na hora da leitura teste = scan.nextLine().toCharArray();, isso quer dizer que, estamos lendo uma string, porém quero trabalhar com cara caractere separado, para isso precisamos lançar para um array, ou vetor se preferir assim, para isso não finalizamos a linha em nextLine(), mas adicionamos mais um comando que ‘existe’ em nextLine() que é toCharArray(), este nos fazendo com que cada caractere seje trabalhado separadamente.

           Agora você pensa: “Beleza, agora sei como trabalhar com o básico de entrada de dados em JAVA, mas cadê a saída desses dados?Quero, também, poder ler uma variável e depois mostrá-la na tela! Isso é possível?”. Meu caro, praticamente TUDO é possível de se fazer com linguagem de programação, se não TUDO mesmo, a imaginação é o limite, embora algumas linguagens também sejam bastante limitadas, o que nos faz preferir outras. Aqui, a coisa é parecida com a hora que você mostra na tela em linguagem C, por exemplo, em C para mostrar algo na tela, com uma variável você fazia assim, vou usar de exemplo um int: printf(“%d”, variavel); certo?; Em JAVA, após a leitura da variável, ou após ‘setar’ o valor de determinada variável no próprio código fonte, não esquecendo que inicializar uma váriavel logo na declaração da mesma é uma boa prática de programação e é ALTAMENTE RECOMENDÁVEL, usaremos este comando: System.out.println(“blablablabla “ + variavel); simples não? Não se precisa de algo como %d, %c, %s, etc… Quando você coloca o + e  o nome da variável, o compilador concatena, ou seja aloca o valor da variável à string que você provavelmente colocou entre aspas, mas não necessariamente você precisa colocar uma string antes ou depois, apenas lembre-se de que ao colocar uma string no começo coloque um + depois dessa string para poder colocar a variável, caso contrário é erro de sintaxe, e se colocar depois da variável, coloque um + depois do nome da variável, caso não coloque nenhuma string neste comando, não precisa de nenhum +.

           Pois bem, desculpem a demora do post, as coisas no trabalho tem sido corridas, e tenho escrito este post aos poucos, qualquer coisa/dúvida/erro meu ou mesmo seu, podem me enviar email: carlospecter@gmail.com. Abraços a todos! E até a próxima (: