Você está aqui: Cards de Engenharia Civil - Construção Civil |
||
|
||
|
|
||
PHP ::: Sistemas Completos com Código Fonte ::: Projetos PHP com Código Fonte - Códigos Fonte PHP |
Calendário de Eventos em PHP e MySQL - Código fonte completo com opções de cadastrar, listar, excluir, editar e listar eventosQuantidade de visualizações: 11182 vezes |
|
Aprenda como criar um Calendário de Eventos completo em PHP e MySQL. Código-fonte completo e comentado para programadores de nível iniciante e médio. Sobre este projeto PHP e MySQL Que tal aprender ou aprimorar as suas técnicas de programação em PHP e MySQL desenvolvendo um Calendário de Eventos completo, com as opções de cadastrar, listar, excluir, alterar e listar os eventos. Veja na imagem abaixo a tela inicial do sistema: ![]() O que vou aprender neste código fonte? Além de aprender como gravar dados em uma tabela MySQL usando PHP, você verá, de forma prática e sem enrolação, como ler os dados de volta, editar, listar e pesquisar. Porém, o mais importante é que você aprenderá a construir um calendário usando PHP. Essa é uma técnica que você poderá levar para várias outras linguagens. Uma característica interessante deste código é o uso de uma janela modal feita usando apenas HTML e CSS. Essa janela é exibida por cima do calendário ao clicarmos em um determinado evento. Veja: ![]() O código jQuery para exibir a janela é bem simples e poderá ser usado para várias outras aplicações. Além disso, o código para a requisição Ajax abrirá um mundo de possibilidades. Veja agora a tela para a criação de novos eventos: ![]() Para a construção desta tela de cadastro você aprenderá a usar os controles date e time do HTML5 para deixar seus códigos ainda mais robustos. Nesta tela você aprenderá também a validar os campos e exibir mensagens alertando ao usuário a necessidade do preenchimento correto. Para finalizar, veja a tela que lista todos os eventos cadastrados: ![]() Nesta tela de listagem você aprenderá a colocar as opções para a visualização individual de cada evento assim como as opções de editar ou excluir os eventos. Como posso obter este código fonte? Para adquirir este código fonte, me chama no WhatsApp ou no e-mail indicados na lateral do site. Se necessário podemos combinar e faço a instalação na sua máquina ou no seu domínio. Podemos também combinar as alterações ou a adição de novas funcionalidades. |
C ::: Dicas & Truques ::: Rotinas de Conversão |
Como converter uma string em um valor de ponto-flutuante usando a função atof() da linguagem CQuantidade de visualizações: 9434 vezes |
|
Em algumas situações, pode ser necessário converter uma string em um valor numérico de ponto-flutuante. Para isso podemos usar a função atof(). Esta função recebe uma matriz de caracteres e tenta transformá-la em um valor de ponto-flutuante. Se a conversão não for possível, o valor 0 é retornado. Os sinais "+" e "-", o ponto decimal e uma parte exponencial, representada por "e" ou "E" são válidos na string a ser convertida. Veja um exemplo:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// valor de ponto-flutuante em forma de string
char valor_str[] = "34.5";
// A linha abaixo causa um comportamento estranho
//float res = 10 + valor_str;
// temos que converter a string em um valor de ponto-flutuante válido
float res = 10 + atof(valor_str);
printf("O resultado e: %f", res);
puts("\n");
system("pause");
return 0;
}
|
Delphi ::: Dicas & Truques ::: Recursão (Recursividade) |
Como usar recursividade em Delphi - Como usar recursão ou funções recursivas em DelphiQuantidade de visualizações: 15937 vezes |
Recursão ou recursividade é a habilidade que uma procedure ou function (função) possui de chamar a si própria uma vez, várias, indefinidamente ou até que a solução do problema a ser resolvido seja encontrada. Assim, podemos definir uma função recursiva (aqui uma procedure recursiva) em Delphi da seguinte forma (atenção: não execute este código):// uma procedure recursiva procedure Recursiva; begin // chama a si própria Recursiva; end; // vamos chamar a procedure pela primeira vez // a partir do Click de um botão procedure TForm1.Button1Click(Sender: TObject); begin Recursiva; end; O fato de eu pedir para que você não execute o código é que, uma vez clicado o botão, a procedure Recursiva será chamada e continuará chamando a si mesma até que a pilha do sistema estoure, ou seja, como funções recursivas são implementadas usando a pilha do sistema operacional e não na área de memória destinada a cada aplicativo o resultado será um travamento do programa, e, caso não estejamos com sorte, um travamento do sistema operacional. Sabedor do risco, clique no botão para ver o resultado você mesmo. O que devemos saber a respeito das funções recursivas é que estas precisam saber o ponto de parada, de forma a evitar chamadas infinitas. Como exemplo, veja uma procedure recursiva que conta de 0 até 10. Note como cada chamada verifica se já é hora de interromper a cadeia:
// uma procedure recursiva que conta de 0 até 10
procedure Contar(valor: Integer);
begin
// vamos exibir o valor atual
ShowMessage(IntToStr(valor));
// é hora de parar?
if valor = 10 then
ShowMessage('Terminei')
else
begin
// chama a si própria (note que aumentamos o valor atual em 1)
Inc(valor);
Contar(valor);
end;
end;
// vamos chamar a procedure pela primeira vez
// a partir do Click de um botão
procedure TForm1.Button1Click(Sender: TObject);
begin
// chama a função recursiva fornecendo o valor inicial
Contar(0);
end;
Execute este código e veja o resultado. Observe que a cada chamada recursiva nós incrementamos a variável de controle. Ela é a responsável por evitar que chamadas infinitas sejam feitas. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
C++ ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como alocar memória dinâmica usando o operador new do C++Quantidade de visualizações: 12626 vezes |
|
Em algumas situações precisamos alocar memória dinamicamente. Em C++ isso é feito com o auxílio do operador new. Este operador permite alocar uma determinada quantidade de bytes, alinhados de forma a representar o objeto para o qual queremos reservar memória. Veja um exemplo de código no qual alocamos memória dinâmica para uma variável do tipo int:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
// aloca memória para um objeto do tipo int
int *ponteiro = new int;
// vamos definir o valor para o objeto recém-alocado
*ponteiro = 20;
// vamos exibir seu valor
cout << *ponteiro << endl;
// vamos liberar a memória
delete ponteiro;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Note que aqui a memória foi alocada e guardada em um ponteiro. Veja também o uso do operador delete para liberar a memória alocada. Isso evita os vazamentos de memória tão frequentes em aplicações que lidam com a memória dinâmica. É claro que este não é o exemplo mais prático. Qual a vantagem de se alocar memória para um int? Declarar uma variável teria sido mais eficiente. A alocação de memória dinâmica é mais útil quando estamos lidando com objetos mais complexos que os tipos básicos. Alguns exemplos envolvem a criação de objetos de classes, matrizes, estruturas de dados, etc. Veja um exemplo no qual temos uma declaração de uma classe chamada Cliente e em seguida alocamos memória para uma instância desta classe:
#include <iostream>
#include <string>
using namespace std;
// declaração da classe Cliente
class Cliente{
public:
Cliente();
string obterNome();
void definirNome(string);
private:
string nome;
};
// implementação dos métodos da classe
Cliente::Cliente(){} // construtor vazio
// obtém o nome do cliente
string Cliente::obterNome(){
return this->nome;
}
// define o nome do cliente
void Cliente::definirNome(string nome){
this->nome = nome;
}
int main(int argc, char *argv[]){
// aloca memória para um objeto da classe Cliente
Cliente *c = new Cliente();
// vamos definir o nome do cliente
c->definirNome("Osmar J. Silva");
// vamos exibir o nome do cliente
cout << c->obterNome() << endl;
// vamos liberar a memória usada
delete c;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Ao executar este código C++ nós teremos o seguinte resultado: Nome do cliente: Osmar J. Silva |
Delphi ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular MDC em DelphiQuantidade de visualizações: 12720 vezes |
|
Como calcular o MDC (Máximo Divisor Comum) em Delphi Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada: Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b. O trecho de código abaixo mostra como calcular o MDC de dois números informados:
// função personalizada que permite calcular o MDC de dois
// valores inteiros
function MDC(a, b: Integer): Integer;
var
resto: Integer;
begin
while b <> 0 do
begin
resto := a mod b;
a := b;
b := resto;
end;
Result := a;
end;
procedure TForm3.Button1Click(Sender: TObject);
var
x, y: Integer;
begin
x := StrToInt(Dialogs.InputBox('MDC',
'Informe o primeiro valor:', ''));
y := StrToInt(Dialogs.InputBox('MDC',
'Informe o segundo valor:', ''));
// vamos mostrar o resultado
ShowMessage('O Máximo Divisor Comum de ' + IntToStr(x) +
' e ' + IntToStr(y) + ' é ' + IntToStr(MDC(x, y)));
end;
Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |









