quinta-feira, maio 03, 2007

ESTRUTURA DE REPETIÇÃO - PARTE III

Comando repita

Ao contrário do comando enquanto, repita vai fazer acontecer a condição desde que este seja falso. A partir do momento que este for verdadeiro ele simplesmente irá parar de repetir a tarefa.

Exemplo 8:

var
    nome : caractere
    sexo : caractere
inicio
    escreva “Digite seu nome”
    leia nome

    repita
        escreva “Digite seu sexo”
        leia sexo

        ate (sexo = “M” .OU. Sexo = “F”)
    fim_repita
fim

Neste exemplo temos algumas diferenças com relação ao comando enquanto. Por exemplo, a condição repita sempre executa uma tarefa antes de verificar se esta é verdadeira ou falsa.

Marcadores:

Comando Enquanto

Diferentemente do comando para, enquanto não possui uma estrutura onde se define o valor inicial, o final e o complemento desta operação. Neste caso ele irá operar até que a condição seja falsa, ou seja, enquanto permanecer verdadeira irá realizar aquela mesma tarefa.

Exemplo 7:

var
    nome : caractere
    sexo : caractere
inicio
    escreva “Digite seu nome”
    leia nome
    escreva “Digite seu sexo”
    leia sexo
    enquanto (sexo = “M” .E. sexo = “F”)
        escreva “Digite M ou F apenas”
        leia sexo
    fim_enquanto
fim

Como pôde ser observado enquanto a condição não for selecionada corretamente a mensage Digite M ou F continuará sendo exibida de forma ininterrupta, até o usuário colocar apenas M ou F (neste exemplo somente em maiúsculo, não em minúsculo).

Marcadores:

sexta-feira, abril 27, 2007

ESTRUTURAS DE REPETIÇÃO

As estruturas de repetição tem a finalidade de ajudar um programa a retornar em uma função comum. Ou seja, tem o objetivo de fazer novamente uma tarefa comum ao programa. Um exemplo desta tarefa é uma agenda, a qual tem a função de cadastrar o nele e telefone. Ao invés de se escrever 20 vezes para que o programa grave 20 nomes a melhor alternativa é utilizar uma seqüência de repetição chamada for.

Utilizaremos alguns exemplos, os quais serão explicados em seguida.

Exemplo 1:

#include
main()
{
int n;
for(n = 1; n <= 10; n++)
{
printf(“%i \n”, n);
}
system(“pause”);
}

Em primeiro lugar n foi tratado como um valor inteiro. Neste caso, por inicialmente não ser apresentado um valor de início o seu conteúdo fica valendo zero. Quando é ativado o for o valor de n inicial passa a ser 1 e ele, além de inteiro, só poderá ser no máximo 10. A cada vez que esta seqüência é executada aumenta mais um número inteiro (n++).

Exemplo 2:

#include
main()
{
int n;
for(n=2; n <=20; n = n + 2)
{
printf(“%i \t”, n);
}
system(“pause”);
}

Como podemos observas neste exemplo é parecido com o anterior, só mudando poucos elementos. Ao invés de aumentar um valor neste exemplo sempre aumentará 2 o valor de n.

Exemplo 3:

#include
main()
{
int x;
for(x = 10; x >= 1; x --)
{
printf(“%i \n”, x);
}
system(“pause”)
}

Este exemplo é exatamente igual ao exemplo 1, no entanto ao invés de aumentar o valor de x aqui está diminuindo.

Exercício 1: Neste exemplo os números serão colocados pelo usuário, ou seja, uma
interação com o usuário.

#include
main()
{
int n1, n2;
printf(“Digite o valor inicial”);
scanf(“%i”, &n1);
printf(“Digite o valor final”);
scanf(“%i”, &n2);
if(n1 <>
{
for(n1 = n1; n1 <= n2; n1++)
{
printf(“%i \n”, n1);
}
}
else
{
if(n1 > n2)
{
for(n1 = n1; n1 >= n2; n1--)
{
printf(“%i \n”, n1);
}
}
}
else
{
printf(“Números iguais”);
}
system(“pause”)
}

Neste exemplo foi adicionado a condição if, pois tanto o usuário
pode digitar um número n1 maior que n2 quanto ele pode digitar
n1 menor que n2. O único porém é caso o usuáriio digitar valores
iguais, neste caso o processamento não será feito e será apresentada
uma mensagem “Números iguais”, comunicando o erro do usuário.

Exercício 2: A partir dos valores 1, 9, 25, 49, 81, 121 crie uma estrutura para
utilização do for.

#include
main()
{
for(int n = 1; n <= 11; n = n + 2)
{
printf(“%i”, n*n);
}
system(“pause”);
}

Neste exercício todos estes números tem algo em comum, pois
todos podem ser extraídas suas raízes. O melhor é que todos são
de números ímpares.

Marcadores:

quarta-feira, abril 18, 2007

ESTUDO DE ALGORITMOS

Quando se cria um programa e o programa é carregado ele procura um local vago na memória RAM. Todas as informações, incluindo cadastros como usuários e senhas são colocados provisoriamente na memória RAM para um acesso rápido. Estes espaços de memória são chamados de variáveis.

Em programação existem vários tipos de dados, os quais são:

Numérico Inteiros => tanto números positivos quanto negativos sem vírgula
Reais => Todos os números, incluindo os com numerais depois da vírgula.
Caractere Todos caracteres existentes como letras, números e símbolos. Todos os caracteres são representados entre aspas duplas, como por exemplo: “*”
Lógico 0 ou 1, verdadeiro ou falso, true or false, T or F, V ou F.
Alfabético “2”, “d”, “Felipe” São caracteres e palavras/textos.

NOMEAR VARIÁVEIS

Regras

1)Obrigatório iniciar com letra
2)Após o primeiro dígito pode existir número
3)Não pode conter espaços
4)Não use caractéres especiais (*, :, ;, $, @ etc)
5)Pode ser usado sublinha (_) desde que após o primeiro dígito
6)Não usar nomes de comandos

Exemplos de nomes válidos para variáveis
Nome, Nomefunci, end, sal, endereco_1, funcao, A13B

Exemplos de nomes inválidos
Nome do funcionário, 1nome, “nome, nome*cidade

OPERADORES ARITMÉTICOS

+ soma
- subtração
* multiplicação
/ divisão
↑ exponenciação (2↑2)
1

Exemplo 1:

Area = base x altura
Algoritmo
area ← base * altura

Exemplo 2:

G ← T/2 * 3 + 5 – 3/2

ALGORITMOS BÁSICOS

Criando sistema de algoritmos básico

Exemplo 3:

Neste exemplo será criado um sistema para cálculo da área de um retângulo.

var
Q : real
num : real
inicio
escreva “digite a medida da base do retângulo: “
leia num
Q ← num ↑ 2
escreva “area do retangulo =”, Q
Fim

Exemplo 4:

Algoritmo para calcular a área de um retângulo

var
area : real
base : real
altura : real
inicio
escreva “digite a medida da base do retângulo”
leia base
escreva “digite a medida da altura”
leia altura
area ← base * altura
escreva “area retângulo = “, area
fim

CONDIÇÕES

O comando que será empregado será representado pela palavra “se” (desvio de fluxo).

Sintaxe
se ()
entao
senão

fim-se

TABELA DA VERDADE (OPERADORES LÓGICOS)
(portas lógicas)

E (and)

Condição 1 Condição 2 Resultado
V V V
V F F
F V F
F F F

Ou (or)

Condição 1 Condição 2 Resultado
V V V
V F V
F F V
F F F

Não (not)

Condição 1 Não Resultado
V Não V F
F Não F V

OPERADORES RELACIONAIS

> maior >= maior igual <> diferente
< menor <= menor igual = igual

Exemplo 5:

Calcular a área do retângulo. Se a base E altura forem maiores que 10.

var
altura : real
base : real
area : real
inicio
escreva “digite a altura”
leia altura
escreva “digite a base”
leia base
se(base > 10 E altura > 10) então
area ← base * altura
escreva “base =”, area
senao
se(altura <= 10) entao
escreva “altura fora”
fim-se
fim-se
fim

Marcadores:

ESTRUTURA BÁSICA DE UM PROGRAMA ESCRITO EM LINGUAGEM C

Na definição de sua forma, a linguagem C possui padrões que regem a preparação de um programa. É case-sensitive, sendo totalmente diferentes, por exemplo, "main", "Main" e "MAIN". Como padrão é utilizado apenas letras minúsculas, seja para nomes de variáveis, funções e comandos, sendo utilizadas letras maiúsculas somente para a formação dos nomes de constantes simbólicas definidas para serem manipuladas pelo pré-processador.
O aspecto de C é modular e funcional, onde o programa principal é a função, permitindo o emprego de formas estruturadas e modulares.

Delimitadores

Comentários

Os delimitadores /* e */ são para serem colocados comentários. Ou seja, tudo que estiver entre eles não será incluído ao código do programa, sendo só uma ajuda para o programador. Exemplo:

/* Programa para calcular vetores */

Iniciando

Todo programa escrito em C inicia com o comando main. Este acessa todas as funcionalidades (direta ou indiretamente) da linguagem C. Um exemplo de estrutura na linguagem C será apresentada abaixo:




main()
{
/* corpo da função principal, com declarações de suas variáveis, seus comandos e funções */
}

func()

{
/*Corpo da função func(), com suas declarações de variáveis, comandos e funções */
}

PS: Os campos em verde são opcionais, naõ sendo necessários para o perfeito
funcionamento do programa. No caso o comando func() pode ser opcional
ou não, mas não necessita dos demais elementos em verde.

Como podemos perceber no exemplo acima todos comandos terminam com (). Estes parênteses podem inclementar funcionalidades ao programa em si.
Como podem perceber estou começando e não sei muita coisa ainda, mas conforme for aprendendo e tendo disponibilidade de tempo estarei postando aqui mais sobre este assunto.

Marcadores:

NECESSIDADE PARA CONSTRUÇÃO DA LINGUAGEM C

A necessidade de uma linguagem de alto nível com a portabilidade do Assembly gerou a construção da C. Apesar de seu fácil acesso ao baixo nível sua escrita é fácil tanto quanto as demais linguagens de auto nível. Esta característica convertou a linguagem C como uma forma de se programar com a facilidade de mudança quanto as características do computador.
Com tais conceitos surge uma nova tendência, as linguagens de médio nível. São chamadas assim tanto por usarem o alto nível (linguagens da época), quanto realizarem tarefas de baixo nível (antes só programado em Assembly). A vantagem de utilização de uma linguagem de médio nível é poder estruturar um programa de qualidade sem a necessidade de se conhecer Assembly.
Outra importante característica da C é por ter agregado importantes conceitos de Basic, Fortran e Pascal (hoje todas estas caíram em desuso).
As principais características da linguagem C são:

  • A possibilidade de portabilidade do código-fonte para outras arquiteturas de computadores;
  • Pode ser utilizada para se programar em inúmeras realidades;
  • Seu código compilado normalmente exige menos do hardware, deixando-o mais rápido;
  • Total compatibilidade com os sistemas operacionais;
  • Sintaxe com poucos comandos e muitos operadores aritméticos;
  • Linguagem estruturada e modular;
  • Permite estruturas de dados compostos na forma de registros
Com estes conceitos hoje temos uma realidade muito grande com esta linguagem, inclusive muitos sistemas operacionais como UNIX, FreeBSD, OpenBSD e Linux são escritos, quase totalmente, em linguagem C.

Marcadores:

sábado, fevereiro 10, 2007

Ajude a manter a Wikipédia no ar - mesmo sem colocar a mão no bolso!

O BR-Linux.org lançou uma campanha para ajudar a Wikimedia Foundation a manter a Wikipédia no ar. Se você puder doar diretamente, é sempre a melhor opção. Mas se não puder, veja as regras da promoção do BR-Linux e ajude a divulgar - quanto mais divulgação, maior será a doação do BR-Linux, e você ainda concorre a um pen drive!

Todos que estão dispostos a ajudar é por uma causa nobre, pois a Wikimedia é uma enciclopédia muito completa, usada por pessoas do mundo todo para todas as áreas. Mantê-la no ar é ajudar à estudantes e também profissionais no desenvolvimento de seus conhecimentos.

quarta-feira, janeiro 17, 2007

ESPECULANDO 2007

Estava olhando as notícias da semana e observei algumas mudanças na área de TI muito interessantes.

A primeira mudança foi a respeito do projeto Classmate da HP, onde fará um laptop para concorrer com o OLPC. Este projeto da HP inicialmente iria ser vendido com o Windows XP, mas agora tiveram mudanças do projeto e colocarão a distribuição Linux chamada Mandriva. De fato uma mudança radical, possibilitando um resultado ainda melhor deste produto. Particularmente é um produto que pretendo comprar quando for lançado no mercado.

A outra mudança diz respeito ao novo insentivo do governo para produção de notebooks. O fato é vigiar para não acontecer o mesmo desastre com relação ao projeto computador para todos. Apesar deste porém, o único já sendo produzido desta categoria, um Positivo, foi elogiado por compradores. Um grande passo a ponto de promover em muito o Linux. Se os clientes ficam satisfeitos com este sistema operacional, então não terão a necessidade de posteriormente removê-lo. Com isso a espectativa é a correção do acontecimento com o projeto de computadores pessoais.

O governo não ficou atrás, está investindo e colocando em várias escolas do país computadores novos e todos com Linux. Um grande passo, ensinando as crianças com este novo sistema, o qual está se expandindo a níveis altíssimos.

A tendência, a qual muitos estão relatando é sobre o OpenSolaris entrar dentro da GPL. Apesar de ter este conteúdo em inúmeros lugares na net a Sun Microsystem nega esta informação, alegando permanecer na atual patente CDDL. Como o Java está sendo transferido para a GPL, a possibilidade do Solaris entrar é grande, apesar de ser uma informação não oficial. Além disso existe todo um preparo e análise por parte de uma empresa para uma mudança grande como esta.

Existem outros inúmeros acontecimentos e quem começa a ganhar com tudo isso são as pessoas em si, afinal vai barateando a tecnologia. Ao menos desta vez a tecnologia poderia ser de acordo com nas necessidades do povo e não de alguns poucos detentores de poder.

segunda-feira, janeiro 01, 2007

GENTOO: A PRIMEIRA IMPRESSÃO

Comecei a realizar alguns testes com o Gentoo e posso considerar algumas impressões iniciais.

Ao instalar pelo liveCD encontrei detalhes que ainda não vi no Linux e de certa forma é proveitoso, pois assim precisarei estudar mais sobre como funciona alguns arquivos de configuração.

Depois de instalado observei a respeito do Portage e me impressionou a quantidade de recursos por ele possuída. Existe um controle muito completo e preciso. O problema para os iniciantes é configurar corretamente, pois exige um conhecimento antecipado de Linux e seus pacotes. Apesar deste ponto, após terminar os "USE" as buscas na árvore do Portage fica limitada apenas aos pacotes desejados, nunca procurando pacotes indesejosos. Neste aspecto senti uma qualidade impressionante.

Claro, nem tudo foram flores. Após feita esta instalação inicial entrei com meu usuário normalmente, após fui, se sair do meu usuário, entrar na conta de root com o comando su e a resposta foi negativa. Existem certas mudanças para não aceitar a entrada. No caso para se entrar é necessário fazer logout e daí sim entrar como root. Este bloqueio é interessante para alguns usuários, no entanto para eu que sempre uso meu usuário e mexo bastante no terminal como root pode significar uma falha tremenda de segurança. Logicamente pode ser configurado posteriormente, mas não é desejoso ao meu ver limitar desta maneira.

A rapidez foi realmente interessante, como também a precisão e qualidade. Sem sombra de dúvidas o Gentoo tem muito potencial e estarei ainda testando-o de forma mais detalhista, expressando aqui minha opinião sobre. O próximo passo que irei fazer é instalá-lo através do estágio 1, ou seja, o mais demorado para avaliar melhor. Depois desta instalação, configuração e testes expressarei uma opinião mais detalhada. Inclusive pretendo escrever exatamente os passos por mim seguidos para seu sucesso.

sexta-feira, dezembro 29, 2006

TUDO TEM UM COMEÇO...

Hoje estou inaugurando meu blog. A intenção é facilitar a vida com textos por mim escritos e tornando acessível a todos no dia-a-dia. Hoje estou inaugurando-o e com o tempo vou escrevendo a respeito de impressões, estudos, críticas e muito mais relacionado a software livre. Todos os textos que escreverei aqui serão experiências pessoais adquirida com o passar do tempo.

Espero que todos gostem e mandem suas impressões.