sexta-feira, 28 de agosto de 2009

Contando caracteres sem o Lenght no C#

Salve salve amigos desenvolvedores, ontem foi proposto na faculdade criar um metodo que retorna-se o numero de caracteres de uma string, sem usar funções como o Lenght, abaixo segue uma solução em C# para o desafio proposto




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Desenvolvido por Momô
//visite jedidevelopers.blogspot.com

namespace dev5{
class Program
{
public void contadorString(string nome)
{
string letras;
//variavel usada para imprimir as letras q ja foram contadas
int contador = 1;
//contador de letras
Console.WriteLine(nome + "\n");
int a;
a = Convert.ToInt16(nome.ToCharArray().Count());

while (a >= contador)
{
//extraindo letra por letra da string principal
letras = nome.Substring(0, contador);
contador = contador + 1;
//imprime a letra extraida da string e o numero de letras ate o momento
Console.WriteLine("letras do nome " + letras + "\n" + "numero de caracteres " + (contador - 1));
Console.ReadLine();
}

//saiu do loop, fim da contagem de caracteres
Console.WriteLine("Fim da contagem de caracteres");
Console.ReadLine();
}
static void Main(string[] args)
{
//instância a classe
Program p = new Program();
//chama o metodo contadorString e passa a string a ser contada
p.contadorString("jedidevelopers.blogspot.com");
}
}
}


Isso ae,
Abraço e bom fds

quinta-feira, 27 de agosto de 2009

What is Enterprise Portal? (Parte 1)

Hoje falaremos sobre Microsoft Dynamics Ax Enterprise Portal 2009 voltado pra um público que busca sua certificação MB6-825.
Enterprise Portal é uma combinação de muitas technologias standart da Microsoft, que tem por finalidade extender a interface disponível no Client do Microsoft Dynamics Ax 2009 para um portal web. Seus componentes principais são:
  • Windows SharePoint Services and Microsoft Office SharePoint Server

  • .NET Business Connector

  • IIS

  • Criação e Implantação do Site

  • Role Centers and User Interface
Arquitetura do Enterprise Portal

Enterprise Portal Web Site Parts

O Enterprise Portal (EP) usa o Windows SharePoint Services (WSS) componentes para construir as páginas da web.
Na terminologia do SharePoint, uma página de Web Part (Web page do SharePoint) é montada usando Web Parts. Exemplos de Web Part:


  • Discussion lists

  • Announcements

  • Document Workspaces

Navegando pelo Enterprise Portal

As Web Parts do EP são agrupadas para assegurar uma consistência e um leiaute uniforme para o usuário em todo o portal. Uma visão esquemática é mostrada no diagrama a seguir:

Por hoje é isso, futuramente daremos algumas dicas para a prova de certificação MB6-825, peço que comentem nossos posts pedindo assuntos a serem abordados, tanto Enterprise Portal como outros assuntos sobre desenvolvimento. Até a próxima!!

quarta-feira, 26 de agosto de 2009

Dica de Livos C#

Pra vocês que estão começando a programar e escolheram o C#, seguem algumas dicas de alguns ótimos livros pra começar a desenvolver!

C# HOW TO PROGRAM - DEITEL

Bom, este é um ótimo livro de C#, e como diria um amigo meu "Se a sua mãe ler este livro e se empenhar, ela aprende a programar"

http://www.amazon.com/How-Program-Harvey-M-Deitel/dp/0130622214

tem edição em portugues tambem

Head firs C#

Livro com uma abordagem diferente sobre programação, muito bom também e até com algumas piadinhas perdidas pelo livro

http://www.amazon.com/Head-First-C-Andrew-Stellman/dp/0596514824

Também tem edição em portugues


BEGINNING C# Programando
Um bom livro sobre C#, este eu não cheguei a ver, mas tenho indicações de amigos como um livro muito interessante tambem sobre C#

Logo mais, mais dicas sobre livros
=D

terça-feira, 25 de agosto de 2009

x++ Ajustando a declaração de Variaveis

O método abaixo, deve ser criado na Classe EditorScript, e ajustara a declaração de variavéis conforme às BEST PRACTICES do AX.



void adjust_Declaration(editor e)
{
str copiaLinha;
str ajustadeclaracao;
int maiorEpaco;
int contamaiorLinha;
int contaPosCaracter;
int quantEspVazio;
int verifmaiorLinha;
int posInicial = e.selectionStartLine();
int posFinal = e.selectionEndLine();
int nivel;
int maiorLinha;
container linhas;
;

//Esse laço percorre todas as linhas selecionadas e insere as linhas no container
for (contamaiorLinha = posInicial; contamaiorLinha <= posFinal; contamaiorLinha++)
{
e.gotoLine(contamaiorLinha);
verifmaiorLinha = 0;
nivel = 1;
copiaLinha = ""; //variavel auxiliar para tratar os dados inseridos no container

//Esse laço percorre toda a linha para verificar qual é o maior tipo de variavel para
//ajustar as melhores práticas nas outras linhas
for (contaPosCaracter = 1; contaPosCaracter <= strlen(e.currentLine()); contaPosCaracter++)
{
if (substr(e.currentLine(),contaPosCaracter,1) != " " && (nivel == 1 || nivel == 2))
{
verifmaiorLinha++;
nivel = 2;
}
else if (nivel == 2 && substr(e.currentLine(),contaPosCaracter,1) == " ")
{
nivel = 3;
}
if (nivel != 1)
{
copiaLinha += substr(e.currentLine(),contaPosCaracter,1);
}

}
//seta o maior tipo de variavel
if (verifmaiorLinha > maiorEpaco)
{
maiorEpaco = verifmaiorLinha;
maiorLinha = contamaiorLinha;
}
linhas = conins(linhas, contamaiorLinha, copiaLinha);
}

copiaLinha = "";
nivel =1;
e.gotoLine(maiorLinha);

//esse laço trata o a maior tipo de variavel inserindo a quantidade de espaços em branco
//entre o tipo e o nome da variavel
for (contaPosCaracter = 1; contaPosCaracter <= strlen(e.currentLine()); contaPosCaracter++)
{
if (substr(e.currentLine(),contaPosCaracter,1) != " " && (nivel == 1 || nivel == 2))
{
nivel = 2;
}
if (nivel == 2 && substr(e.currentLine(),contaPosCaracter,1) == " ")
{
nivel = 3;
do
{
maiorEpaco++;
if(substr(e.currentLine(),contaPosCaracter,1)== " ")
{
copiaLinha += substr(e.currentLine(),contaPosCaracter,1);
contaPosCaracter++;
}
else
{
if((strlen(copiaLinha) mod 4) != 0)
{
copiaLinha += " ";
}
}
verifmaiorLinha++;
}
while ((strlen(copiaLinha) mod 4) != 0);
copiaLinha += substr(e.currentLine(),contaPosCaracter,1);
}
else if (nivel != 1)
{
copiaLinha += substr(e.currentLine(),contaPosCaracter,1);
}
}
//apaga a linha que tem o maior tipo do container
linhas = condel(linhas, maiorLinha - (posInicial - 1), 1);
//insere a linha que tem o maior tipo no container com a linha tratada
linhas = conins(linhas, maiorLinha - (posInicial - 1), copiaLinha);

//esse laço apaga todas a linhas selecionadas do codigo
for ( contamaiorLinha = posFinal; contamaiorLinha >= posInicial; contamaiorLinha--)
{
e.gotoLine(contamaiorLinha);
e.deleteLines(contamaiorLinha);
}
e.gotoLine(PosInicial);
e.gotoCol(1);
e.insertLines("\n");

//Esse laço trata as linhas e insere as linhas no codigo.
for ( contamaiorLinha = posInicial; contamaiorLinha <= posFinal; contamaiorLinha++)
{
ajustadeclaracao = " ";
if(contamaiorLinha != maiorLinha)
{
nivel = 1;
for (contaPosCaracter = 1; contaPosCaracter <= strlen(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1)))); contaPosCaracter++)
{
if (substr(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))), contaPosCaracter, 1) == " " && nivel == 1)
{
copiaLinha = "";
for (quantEspVazio = 0; quantEspVazio < (maiorEpaco + 4) - strlen(ajustadeclaracao); quantEspVazio++)
{
copiaLinha += " ";
}
while (substr(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))), contaPosCaracter, 1) == " ")
{
contaPosCaracter++;
}
quantEspVazio = strlen(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))));
ajustadeclaracao = ajustadeclaracao + copiaLinha + substr(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))), contaPosCaracter, quantEspVazio);
nivel = 2;
contaPosCaracter = strlen(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1)))) + 1;
}
else
{
ajustadeclaracao = ajustadeclaracao + substr(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))), contaPosCaracter, 1);
}
}
if (contamaiorLinha != posFinal)
{
ajustadeclaracao += "\n";
}
e.gotoLine(contamaiorLinha);
e.insertLines(ajustadeclaracao);
ajustadeclaracao = " ";
}
else
{
if (contamaiorLinha != posFinal)
{
ajustadeclaracao = "\n";
}
e.insertLines(" " + any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))) + ajustadeclaracao);
}
}





Abaixo um exemplo de como funciona o adjust_Declaration Script.
Observar a Identação do Código.

segunda-feira, 24 de agosto de 2009

X++ Hello World!!!!

public void helloworld()
{
;

print('HelloWorld!');
pause;
}