Um exemplo de algoritmo em C multiplicando matriz usando threads.
#include <cstdlib>
#include <stdio.h>
#include <pthread.h>
//using namespace std
pthread_t thread_1;
pthread_t thread_2;
pthread_t thread_3;
int a[3][2] = {{1, 4}, {2, 5}, {3, 6}};
int b[2][3] = {{7, 8, 9}, {10, 11, 12}};
int c[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
void* tarefa_1(void *p)
{
//----------Região critica
printf("\nThread1\n");
for (int col = 0; col < 3; col++) {
// Multiplica a linha de A pela coluna de B.
for (int i = 0; i < 2; i++) {
c[1][col] += a[1][i] * b[i][col];
}
printf("%i\t",c[1][col]);
printf("\n");
}
}
void* tarefa_2(void *p)
{
//----------Região critica
printf("\nThread2\n");
for (int col = 0; col < 3; col++) {
// Multiplica a linha de A pela coluna de B.
for (int i = 0; i < 2; i++) {
c[2][col] += a[2][i] * b[i][col];
}
printf("%i\t",c[2][col]);
printf("\n");
}
}
void* tarefa_3(void *p)
{
//----------Região critica
printf("\nThread3\n");
for (int col = 0; col < 3; col++) {
// Multiplica a linha de A pela coluna de B.
for (int i = 0; i < 2; i++) {
c[3][col] += a[3][i] * b[i][col];
}
printf("%i\t",c[3][col]);
printf("\n");
}
}
int main()
{
printf("Inicio das Threads...\n");
// inicia as duas threads, passando como parametroa thread e a função que cada uma deve executar
pthread_create(&thread_1, NULL, tarefa_1, NULL);
pthread_create(&thread_2, NULL, tarefa_2, NULL);
pthread_create(&thread_3, NULL, tarefa_3, NULL);
// faz com que a thread principal espere a thread 1 e a thread 2 acabarem;
pthread_join(thread_1, NULL);
pthread_join(thread_2, NULL);
pthread_join(thread_3, NULL);
system("PAUSE");
return EXIT_SUCCESS;
}
sexta-feira, 25 de janeiro de 2013
Achar matriz inversa em C
Este é um código em C para multiplicar matrizes, achando a matriz inversa. Você pode notar que eu comentei todo o código, então fica mais fácil de entender, e posso garantir que funciona.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int i, j, l = 0, c = 0, k = 0;
printf("\n Digite o numero de variaveis: \n");//Define o tamanho da matriz A
scanf("%i",&l);
c = l;//coluna recebe o valor da linha ex: 3x3
float A[l][c], ident[l][c], pivo = 0, p = 0, m = 0;
//Definindo a Matriz Identidade
for(i = 0; i < l; i++)
{
for(j = 0; j < c; j++)
{
if(i == j)
{
ident[i][j] = 1;
}
else
{
ident[i][j] = 0;
}
}
}
//Inserindo valores na matriz A
printf("\n Digite os valores para os coficientes da Matriz A: \n");
for (i = 0; i < l; i++)
{
for (j = 0; j < c; j++){
printf("\n Digite o valor do termo a(%i,%i):",i+1,j+1);
scanf("%f",&A[i][j]);
}
}
printf("\n Matriz A: \n");
//Mostrando a Matriz
for(i = 0; i < l; i++)
{
for (j = 0; j < c; j++)
{
printf ("%.2f",A[i][j]);
if(j < c - 1) printf("\t");
else printf("\n");
}
}
//Calculando a Matriz Inversa
for(j = 0; j < c; j++)
{
pivo = A[j][j];
p = pivo/pivo;
for(k = j; k < c; k++)
{
A[j][k] = (A[j][k])/(pivo);
ident[j][k] = (ident[j][k])/(pivo);
}
for(i = 0; i < l; i++)
{
if(i != j)
{
m = A[i][j]/p;
for(k = 0; k < c; k++)
{
A[i][k] = (A[i][k]) - (m * A[j][k]);
ident[i][k] = (ident[i][k]) - (m * ident[j][k]);
}
}
}
}
//Resultado das Matrizes Identidade e Inversa
printf("\n Matriz Identidade A: \n");
for(i = 0; i < l; i++)
{
for (j = 0; j < c; j++)
{
printf ("%.2f",A[i][j]);
if(j < c - 1) printf("\t");
else printf("\n");
}
}
printf("\n Matriz Inversa: \n");
for(i = 0; i < l; i++)
{
for (j = 0; j < c; j++)
{
printf ("%.2f",ident[i][j]);
if(j < c - 1) printf("\t");
else printf("\n");
}
}
getch();
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int i, j, l = 0, c = 0, k = 0;
printf("\n Digite o numero de variaveis: \n");//Define o tamanho da matriz A
scanf("%i",&l);
c = l;//coluna recebe o valor da linha ex: 3x3
float A[l][c], ident[l][c], pivo = 0, p = 0, m = 0;
//Definindo a Matriz Identidade
for(i = 0; i < l; i++)
{
for(j = 0; j < c; j++)
{
if(i == j)
{
ident[i][j] = 1;
}
else
{
ident[i][j] = 0;
}
}
}
//Inserindo valores na matriz A
printf("\n Digite os valores para os coficientes da Matriz A: \n");
for (i = 0; i < l; i++)
{
for (j = 0; j < c; j++){
printf("\n Digite o valor do termo a(%i,%i):",i+1,j+1);
scanf("%f",&A[i][j]);
}
}
printf("\n Matriz A: \n");
//Mostrando a Matriz
for(i = 0; i < l; i++)
{
for (j = 0; j < c; j++)
{
printf ("%.2f",A[i][j]);
if(j < c - 1) printf("\t");
else printf("\n");
}
}
//Calculando a Matriz Inversa
for(j = 0; j < c; j++)
{
pivo = A[j][j];
p = pivo/pivo;
for(k = j; k < c; k++)
{
A[j][k] = (A[j][k])/(pivo);
ident[j][k] = (ident[j][k])/(pivo);
}
for(i = 0; i < l; i++)
{
if(i != j)
{
m = A[i][j]/p;
for(k = 0; k < c; k++)
{
A[i][k] = (A[i][k]) - (m * A[j][k]);
ident[i][k] = (ident[i][k]) - (m * ident[j][k]);
}
}
}
}
//Resultado das Matrizes Identidade e Inversa
printf("\n Matriz Identidade A: \n");
for(i = 0; i < l; i++)
{
for (j = 0; j < c; j++)
{
printf ("%.2f",A[i][j]);
if(j < c - 1) printf("\t");
else printf("\n");
}
}
printf("\n Matriz Inversa: \n");
for(i = 0; i < l; i++)
{
for (j = 0; j < c; j++)
{
printf ("%.2f",ident[i][j]);
if(j < c - 1) printf("\t");
else printf("\n");
}
}
getch();
}
domingo, 20 de janeiro de 2013
Classe Porta e seu Teste em python
Como esse é pequeno vou colocar o código e seu teste, mas os dois estão relacionados aos posts anteriores o da casa e seu teste.
Implementação da Classe Porta:
class Porta(object):
def __init__(self, cor):
self.aberta = False
self.cor = cor
def abre(self):
if self.aberta == False:
self.aberta = True
def pinta(self, nova_cor):
self.cor = nova_cor
def estaAberta():
if self.aberta == True:
return self.aberta
Teste da Classe Porta:
import unittest
from should_dsl import should
from porta import Porta
class TestePorta(unittest.TestCase):
def test_criar_porta(self):
p1 = Porta("vermelho")
p1.cor |should| equal_to("vermelho")
p1.aberta |should| be(False)# be e um testador, comparador do should para saber que objeto e aquele
def test_abrir_porta(self):
p1 = Porta("vermelho")
p1.abre()
p1.aberta |should| be(True) #p1.aberta olha o atributo
def test_pinta(self):
p1 = Porta("vermelho")
p1.pinta("preto")
p1.cor |should| equal_to("preto")
def test_estaAberta(self):
p1 = Porta("vermelho")
p1.estaAberta() |should| be(False)#p1.estaAberta() chama o metodo para fazer a comparacao
def test2_estaAberta(self):
p1 = Porta("vermelho")
p1.abre()
p1.estaAberta() |should| be(True)
if __name__ == "__main__":
unittest.main()
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
Implementação da Classe Porta:
class Porta(object):
def __init__(self, cor):
self.aberta = False
self.cor = cor
def abre(self):
if self.aberta == False:
self.aberta = True
def pinta(self, nova_cor):
self.cor = nova_cor
def estaAberta():
if self.aberta == True:
return self.aberta
Teste da Classe Porta:
import unittest
from should_dsl import should
from porta import Porta
class TestePorta(unittest.TestCase):
def test_criar_porta(self):
p1 = Porta("vermelho")
p1.cor |should| equal_to("vermelho")
p1.aberta |should| be(False)# be e um testador, comparador do should para saber que objeto e aquele
def test_abrir_porta(self):
p1 = Porta("vermelho")
p1.abre()
p1.aberta |should| be(True) #p1.aberta olha o atributo
def test_pinta(self):
p1 = Porta("vermelho")
p1.pinta("preto")
p1.cor |should| equal_to("preto")
def test_estaAberta(self):
p1 = Porta("vermelho")
p1.estaAberta() |should| be(False)#p1.estaAberta() chama o metodo para fazer a comparacao
def test2_estaAberta(self):
p1 = Porta("vermelho")
p1.abre()
p1.estaAberta() |should| be(True)
if __name__ == "__main__":
unittest.main()
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
Teste em python
Esse teste está vinculado ao post anterior onde agente implementava uma casa em OO, agora agente fez um teste e asseguro que passou.
import unittest
from should_dsl import should
from casa import Casa
from porta import Porta
class TesteCasa(unittest.TestCase):
def setUp(self):
Casa.totalCasasCriadas = 0
def test_criar_casa(self):
c1 = Casa()
c1.portas |should| have(0).itens
# A casa e criada sem porta o "have" verifica o numero de itens "portas" na casa
def test_totalCasasCriadas(self):
c1 = Casa()
c2 = Casa()
Casa.totalCasasCriadas |should| equal_to(2)
def test_adicionaPorta(self):
c1 = Casa()
p1 = Porta("vermelho")
c1.adicionaPorta(p1)
c1.portas |should| have(1).itens
def test_totalPortas(self):
c1 = Casa()
p1 = Porta("vermelho")
p2 = Porta("preto")
c1.adicionaPorta(p1)
c1.adicionaPorta(p2)
c1.totalPortas() |should| equal_to(2)
def test_totalPortasAbertas(self):
c1 = Casa()
p1 = Porta("vermelho")
p2 = Porta("preto")
p1.abre()
c1.adicionaPorta(p1)
c1.adicionaPorta(p2)
c1.totalPortasAbertas() |should| equal_to(1)
if __name__ == "__main__":
unittest.main()
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
import unittest
from should_dsl import should
from casa import Casa
from porta import Porta
class TesteCasa(unittest.TestCase):
def setUp(self):
Casa.totalCasasCriadas = 0
def test_criar_casa(self):
c1 = Casa()
c1.portas |should| have(0).itens
# A casa e criada sem porta o "have" verifica o numero de itens "portas" na casa
def test_totalCasasCriadas(self):
c1 = Casa()
c2 = Casa()
Casa.totalCasasCriadas |should| equal_to(2)
def test_adicionaPorta(self):
c1 = Casa()
p1 = Porta("vermelho")
c1.adicionaPorta(p1)
c1.portas |should| have(1).itens
def test_totalPortas(self):
c1 = Casa()
p1 = Porta("vermelho")
p2 = Porta("preto")
c1.adicionaPorta(p1)
c1.adicionaPorta(p2)
c1.totalPortas() |should| equal_to(2)
def test_totalPortasAbertas(self):
c1 = Casa()
p1 = Porta("vermelho")
p2 = Porta("preto")
p1.abre()
c1.adicionaPorta(p1)
c1.adicionaPorta(p2)
c1.totalPortasAbertas() |should| equal_to(1)
if __name__ == "__main__":
unittest.main()
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
OO em Python
Essa eu aprendi na faculdade,.
Esse código implementa uma casa, portas e adiciona estas portas na casa, mas em Orientação à Objetos o que deixa o código mais interessante. O código importa uma classe porta que vou mostrar no próximo post.
from porta import Porta
class Casa(object):
totalCasaCriadas = 0
def __init__(self):
self.portas = []
Casa.totalCasasCriadas += 1
def adicionaPorta(self, porta):
self.portas.append(porta)
def totalPortas(self):
total = len(self.portas) #len(self.portas) le o numero de elementos da lista
return total
def totalPortasAbertas(self):
contador = 0
for item in self.portas:
if item.aberta == True:
contador += 1
return self.aberta
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
Esse código implementa uma casa, portas e adiciona estas portas na casa, mas em Orientação à Objetos o que deixa o código mais interessante. O código importa uma classe porta que vou mostrar no próximo post.
from porta import Porta
class Casa(object):
totalCasaCriadas = 0
def __init__(self):
self.portas = []
Casa.totalCasasCriadas += 1
def adicionaPorta(self, porta):
self.portas.append(porta)
def totalPortas(self):
total = len(self.portas) #len(self.portas) le o numero de elementos da lista
return total
def totalPortasAbertas(self):
contador = 0
for item in self.portas:
if item.aberta == True:
contador += 1
return self.aberta
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
Introdução à Algoritmo
As
disciplinas de um curso de computação utilizam-se como base o algoritmo que
nada mais é do que uma
sequência definida de passos (instruções), que devem ser seguidos para se
chegar a um resultado esperado. Mas esses passos não são fixos e obrigatórios
cada individuo tem sua forma e maneira de fazer e utilizar-se dele para chegar
ao fim esperado.
A
computação através da programação é apenas uma das áreas de utilização dos
algoritmos. Na vida diária, há inúmeros casos que podem exemplificar o uso de
algoritmos, tais como no lazer, no trabalho, nas fábricas, em uma tarefa
doméstica, até mesmo para a padronização de tarefas rotineiras como acender ou trocar
uma lâmpada.
Abaixo
um exemplo de algoritmo na forma de fluxograma de um domingo de lazer, e depois
dois exemplos de algoritmo para acender uma lâmpada.
1.1 Trocar uma lâmpada.
1. acionar o interruptor;
2. se a lâmpada não acender, então
3. pegar uma escada;
4. posicionar a escada debaixo da lâmpada;
5. buscar uma lâmpada nova;
6. subir na escada;
7. retirar a lâmpada queimada;
8. colocar a lâmpada nova;
1.2
Trocar uma lâmpada.
1. acionar um interruptor;
2. se a lâmpada não acender, então
3. pegar uma escada;
4. posicionar a escada debaixo da lâmpada;
5. buscar uma lâmpada nova;
6. subir na escada;
7. retirar a lâmpada queimada;
8. colocar a lâmpada nova;
9. enquanto a lâmpada não acender, faça
10. retirar a lâmpada queimada;
11. colocar outra lâmpada nova;
Como
foi dito acima cada pessoa executa um algoritmo de forma diferente, nos
exemplos de trocar uma lâmpada mostramos na pratica essa teoria, pois no
primeiro temos oito passos e trocamos a lâmpada de forma simples, já no segundo
temos três passos a mais já que no passo nove temos um laço de repetição para o
caso de a lâmpada escolhida não acender.
O algoritmo não esta
restrito a computação, mas a computação está restrita ao algoritmo, uma vez que
para todo o funcionamento computacional existe um algoritmo em funcionamento.
Para que um computador possa desempenhar uma tarefa é necessário que
esta seja detalhada passo-a-passo, numa forma compreensível pela máquina,
utilizando aquilo que se chama de programa. Neste sentido, um programa de
computador nada mais é que um algoritmo escrito numa forma compreensível pelo
computador (linguagem de programação).
Os
cursos superiores de computação vêm tendo um grande desenvolvimento segundo
dados do INEP. Na tabela 1 tem-se um demonstrativo dos matriculados dos cursos
superiores de computação no Brasil, estes cursos são lecionados também nesta
Instituição tendo como base o CENSO do ensino superior do MEC de 2008.
Curso
|
2006
|
2007
|
2008
|
Sistemas
de Informação
|
79.575
|
84.887
|
91.577
|
Cursos
de Tecnologia (Todos)
|
65.635
|
85.356
|
117.354
|
Tabela
1: Matriculados por curso no Brasil entre 2006 e 2008.
Já
na tabela 2 tem-se o demonstrativo dos concluintes nestes mesmos cursos segundo
dados do CENSO 2008.
Curso
|
2006
|
2007
|
2008
|
Sistemas
de Informação
|
9.638
|
9.728
|
10.699
|
Cursos
de Tecnologia (Todos)
|
10.942
|
13.692
|
15.084
|
Tabela
2: Concluintes por curso no Brasil entre 2006 e 2008.
Analisando
os dados das duas tabelas pode-se verificar que é grande a evasão escolar. O
número de concluintes é muito menor do que o número de matriculados neste mesmo
período.
Algumas Definições de Algoritmo
Segundo Ziviani:
”Um algoritmo pode ser visto como uma sequência de ações executadas para
obtenção de uma solução para determinado tipo de problema.”
Segundo Lopes:
“Algoritmo é uma sequência de passos finitos com o objetivo de solucionar um
problema.”
Ferramentas
para construção de algoritmos
Para quem quiser fazer algoritmo e saber se funciona realmente
temos alguns programas que podem ser utilizados.
FADIX – É utilizado para a escrita do algoritmo utilizando o
Pseudocódigo.
Portugol/Plus – Editor de algoritmos utilizando a lógica de programação.
UAL (Unesa Algorithmic Language) – é um interpretador animado.
REFERÊNCIAS:
- ZIVIANI, Nivio. Projeto de Algoritmos: com implementação
em Java e C++. São Paulo: Thomson Learning, 2007.
- LOPES, Anita, Garcia, Guto. Introdução à Programação. Rio
de Janeiro: Elsevier, 2002 – 11ª Reimpressão.
- NUNES, D. J.
(2008). Estatísticas da Educação Superior: Área da Computação. Disponível em:
http://www.sbc.org.br/, último acesso 16/11/2010.
sábado, 19 de janeiro de 2013
Calculando peso ideal em python
O algoritmo proposto foi para calcular em python o Peso Ideal, utilizando as seguintes fórmulas.
- Para homens: (72.7*h) - 58
- Para mulheres: (62.1*h) - 44.7 (h = altura)
Pedindo o peso da pessoa e informando se ela está dentro, acima ou abaixo do peso.
Alguns comentários importantes do código são:
Quando agente coloca float na frente do input agente está forçando a converção, uma vez que nativamente o input no python recebe string.
altura = float (input('Digite a sua altura: '))
sexo = input('Digite o seu sexo: F - Feminino M - Masculino ')
peso = float (input('Digite seu peso: '))
if sexo == 'F' or sexo == 'f':
peso_ideal = (62.1*altura) - 44.7
print("O peso ideal é %.0f"%(peso_ideal))
if peso > peso_ideal:
print('Você está acima do peso ideal')
elif peso < peso_ideal:
print('Você está abaixo do peso ideal')
else:
print('Você está dentro do peso ideal')
else:
peso_ideal = (72.7*altura) - 58
print("O peso ideal é %.0f"%(peso_ideal))
if peso > peso_ideal:
print('Você está acima do peso ideal')
elif peso < peso_ideal:
print('Você está abaixo do peso ideal')
else:
print('Você está dentro do peso ideal')
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
- Para homens: (72.7*h) - 58
- Para mulheres: (62.1*h) - 44.7 (h = altura)
Pedindo o peso da pessoa e informando se ela está dentro, acima ou abaixo do peso.
Alguns comentários importantes do código são:
Quando agente coloca float na frente do input agente está forçando a converção, uma vez que nativamente o input no python recebe string.
altura = float (input('Digite a sua altura: '))
sexo = input('Digite o seu sexo: F - Feminino M - Masculino ')
peso = float (input('Digite seu peso: '))
if sexo == 'F' or sexo == 'f':
peso_ideal = (62.1*altura) - 44.7
print("O peso ideal é %.0f"%(peso_ideal))
if peso > peso_ideal:
print('Você está acima do peso ideal')
elif peso < peso_ideal:
print('Você está abaixo do peso ideal')
else:
print('Você está dentro do peso ideal')
else:
peso_ideal = (72.7*altura) - 58
print("O peso ideal é %.0f"%(peso_ideal))
if peso > peso_ideal:
print('Você está acima do peso ideal')
elif peso < peso_ideal:
print('Você está abaixo do peso ideal')
else:
print('Você está dentro do peso ideal')
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
Verificação de maior número em python
Esse código serve para verificação de qual é o maior entre três números.
num1 = int(input('Digite o primeiro numero'))
num2 = int(input('Digite o segundo numero'))
num3 = int(input('Digite o terceiro numero'))
if num1 > num2 and num1 > num3:
print('O primeiro numero é maior')
elif num2 > num1 and num2 > num3:
print('O segundo numero é maior')
else:
print('O terceiro numero é maior')
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
num1 = int(input('Digite o primeiro numero'))
num2 = int(input('Digite o segundo numero'))
num3 = int(input('Digite o terceiro numero'))
if num1 > num2 and num1 > num3:
print('O primeiro numero é maior')
elif num2 > num1 and num2 > num3:
print('O segundo numero é maior')
else:
print('O terceiro numero é maior')
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
Código em python
Esse código em python serve para receber a idade do usuário e verifiar se ele tem mais de 21 anos. É um código relativamente fácil para um usuário que está começando a caminhar na programação nesta linguagem.
idade = input('Qual sua idade?')
idade = int(idade)
if idade > 21:
print('Sua idade é maior de 21 anos')
else:
print('Sua idade é menor de 21 anos')
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
idade = input('Qual sua idade?')
idade = int(idade)
if idade > 21:
print('Sua idade é maior de 21 anos')
else:
print('Sua idade é menor de 21 anos')
Uma forma de aprender de verdade sobre o python é fazendo cursos on-line, com isso você não irá depender de terceiros.
Hoje recomendo o curso Python para DevOPS: 14 HORAS clicando no link https://go.hotmart.com/W5976139G
Códigos em php - parte 3
Nesta terceira postagem mostrarei em um só código como calcular a área de um circulo, um quadrado e um retângulo.
O formulário em html serve para rodar o código que será mostrado.
<html>
<head>
<title>Funções</title>
</head>
<body>
<form action="execute.php" method="get">
<label>Quadrado </label><br>
<label>Digite o lado do quadrado: </label>
<input type="text" name="num" id="num"> <br><br>
<label>Retangulo </label><br>
<label>Digite a base do retangulo: </label>
<input type="text" name="num2" id="num2"> <br><br>
<label>Digite a altura do retangulo: </label>
<input type="text" name="num3" id="num3"> <br><br>
<label>Circulo</label><br>
<label>Digite o raio do quadrado: </label>
<input type="text" name="num4" id="num4"> <br>
<input type="submit" name="Enviar" value="Enviar valores">
<input type="reset" />
</form>
</body>
</html>
Ao receber de um formulário html através de um método "get" os números e a opção correspondente a função que deseja calcular o código executa a opção desejada.
<?php
function circulo ()
{
$a = $_GET['num'];
$c = 3.14 * ($a *$a);
}
function quadrado ()
{
$a = $_GET['num'];
$q = $a * $a;
}
function retangulo ()
{
$a = $_GET['num'];
$b = $_GET['num'];
$r = $a * $b;
}
?>
Uma forma de aprender de verdade sobre o php é fazendo cursos on-line, com isso você não irá depender de ferramentas e bibliotecas de terceiros.
Hoje recomendo o curso ULTIMATE PHP 2.0 clicando no link https://go.hotmart.com/A5972583D
O formulário em html serve para rodar o código que será mostrado.
<html>
<head>
<title>Funções</title>
</head>
<body>
<form action="execute.php" method="get">
<label>Quadrado </label><br>
<label>Digite o lado do quadrado: </label>
<input type="text" name="num" id="num"> <br><br>
<label>Retangulo </label><br>
<label>Digite a base do retangulo: </label>
<input type="text" name="num2" id="num2"> <br><br>
<label>Digite a altura do retangulo: </label>
<input type="text" name="num3" id="num3"> <br><br>
<label>Circulo</label><br>
<label>Digite o raio do quadrado: </label>
<input type="text" name="num4" id="num4"> <br>
<input type="submit" name="Enviar" value="Enviar valores">
<input type="reset" />
</form>
</body>
</html>
Ao receber de um formulário html através de um método "get" os números e a opção correspondente a função que deseja calcular o código executa a opção desejada.
<?php
function circulo ()
{
$a = $_GET['num'];
$c = 3.14 * ($a *$a);
}
function quadrado ()
{
$a = $_GET['num'];
$q = $a * $a;
}
function retangulo ()
{
$a = $_GET['num'];
$b = $_GET['num'];
$r = $a * $b;
}
?>
Uma forma de aprender de verdade sobre o php é fazendo cursos on-line, com isso você não irá depender de ferramentas e bibliotecas de terceiros.
Hoje recomendo o curso ULTIMATE PHP 2.0 clicando no link https://go.hotmart.com/A5972583D
Códigos em php - parte 2
Como já postei antes, ai vai mais alguns códigos em php.
Esse código soma 2 números fixos em seu corpo. E retorna essa soma.
<?php
function soma ()
{
return 2 + 3;
}
echo "A soma é " . soma();
?>
O soma2 já é um pouquinho mais elaborado.
Na linha do "echo" - que é o que será mostrado em tela, chamamos a função soma2 e passamos como parametro os números 6 e 3.
A função recebe e armazena nas variáveis n1 e n2, no corpo da função executa a soma e retorna o resultado para ser mostrado em tela.
<?php
function soma2 ($n1, $n2)
{
return $n1 + $n2;
}
echo "A soma é " . soma2(6,3);
?>
Uma forma de aprender de verdade sobre o php é fazendo cursos on-line, com isso você não irá depender de ferramentas e bibliotecas de terceiros.
Hoje recomendo o curso ULTIMATE PHP 2.0 clicando no link https://go.hotmart.com/A5972583D
Esse código soma 2 números fixos em seu corpo. E retorna essa soma.
<?php
function soma ()
{
return 2 + 3;
}
echo "A soma é " . soma();
?>
O soma2 já é um pouquinho mais elaborado.
Na linha do "echo" - que é o que será mostrado em tela, chamamos a função soma2 e passamos como parametro os números 6 e 3.
A função recebe e armazena nas variáveis n1 e n2, no corpo da função executa a soma e retorna o resultado para ser mostrado em tela.
<?php
function soma2 ($n1, $n2)
{
return $n1 + $n2;
}
echo "A soma é " . soma2(6,3);
?>
Uma forma de aprender de verdade sobre o php é fazendo cursos on-line, com isso você não irá depender de ferramentas e bibliotecas de terceiros.
Hoje recomendo o curso ULTIMATE PHP 2.0 clicando no link https://go.hotmart.com/A5972583D
Códigos em Php
Hoje resolvi postar códigos variados para ajudar meus amigos estudantes em várias linguagens que já estudei e sei que funciona.
Primeiro mostrarei um formulário html:
html>
<head>
<title>Função</title>
</head>
<body>
<form action="funcao.php" method="get">
<label>Valor: </label>
<input type="text" name="num" id="num"> <br>
<input type="submit" name="Enviar" value="Enviar valores">
<input type="reset" />
</form>
</body>
</html>
Entre as tags <body> no form action definimos o nome do meu arquivo php e definimos o método "get" para o recebimento no meu arquivo php denominado função.
Segundo, o nosso arquivo salvo que contem o código php em questão.
Esse código é uma função em php, serve para achar o triplo de um número qualquer. Ele recebe um número pelo método get do formulário acima. Executa a operação e retorna o valor para o formulário mostrar ao usuário.
<?php
function triplo ($numero)
{
$x = $numero * 3;
return $x;
}
$valor = $_GET['num'];
echo "O triplo de $valor é " . triplo($valor);
?>
Uma forma de aprender de verdade sobre o php é fazendo cursos on-line, com isso você não irá depender de ferramentas e bibliotecas de terceiros.
Hoje recomendo o curso ULTIMATE PHP 2.0 clicando no link https://go.hotmart.com/A5972583D
Primeiro mostrarei um formulário html:
html>
<head>
<title>Função</title>
</head>
<body>
<form action="funcao.php" method="get">
<label>Valor: </label>
<input type="text" name="num" id="num"> <br>
<input type="submit" name="Enviar" value="Enviar valores">
<input type="reset" />
</form>
</body>
</html>
Entre as tags <body> no form action definimos o nome do meu arquivo php e definimos o método "get" para o recebimento no meu arquivo php denominado função.
Segundo, o nosso arquivo salvo que contem o código php em questão.
Esse código é uma função em php, serve para achar o triplo de um número qualquer. Ele recebe um número pelo método get do formulário acima. Executa a operação e retorna o valor para o formulário mostrar ao usuário.
<?php
function triplo ($numero)
{
$x = $numero * 3;
return $x;
}
$valor = $_GET['num'];
echo "O triplo de $valor é " . triplo($valor);
?>
Uma forma de aprender de verdade sobre o php é fazendo cursos on-line, com isso você não irá depender de ferramentas e bibliotecas de terceiros.
Hoje recomendo o curso ULTIMATE PHP 2.0 clicando no link https://go.hotmart.com/A5972583D
sexta-feira, 11 de janeiro de 2013
Virtualização de servidores
Olá amigos!!!
Estava meio afastada mas acho que começarei a fazer postagens mais regulares e apesar de gostar de vários assuntos vou começar a me dedicar a minha área de atuação que é a informática.
Então vamos ao primeiro tema que foi um do meus trabalhos acadêmicos.
Isolamento: representa a separação entre máquinas
virtuais em execução e uma máquina física. Um processo de máquina virtual não
pode interferir em outra máquina virtual.
Estava meio afastada mas acho que começarei a fazer postagens mais regulares e apesar de gostar de vários assuntos vou começar a me dedicar a minha área de atuação que é a informática.
Então vamos ao primeiro tema que foi um do meus trabalhos acadêmicos.
O que é Virtualização?
A virtualização é um termo geral usado para descrever várias tecnologias
que dividem os recursos de hardware em múltiplos ambientes, aplicando um
ou mais conceitos ou tecnologias.
Na virtualização existem as instruções privilegiadas e não
privilegiadas. As instruções não-privilegiadas são aquelas que não modificam a
alocação ou o estado de recursos compartilhados por vários processos
simultâneos, tais como processadores, memória principal e registradores especiais.
Em oposição a essas instruções, temos as instruções privilegiadas, que podem
alterar o estado e a alocação desses recursos.
Em um ambiente virtualizado, também existem os conceitos, de sistema
operacional hospedeiro e o de sistema operacional visitante. Sistema
operacional hospedeiro (Host Operating System), refere-se ao sistema
operacional nativo da máquina na qual ocorrerá a virtualização, ou seja, o
sistema operacional que é executado diretamente sobre o hardware físico.
Sistema operacional visitante (Guest Operating System), refere-se ao sistema
operacional que é executado sobre o hardware virtualizado, ou seja, o sistema
operacional que é executado na máquina virtual. Uma máquina na qual é feita a
virtualização pode contar com apenas um Sistema Operacional hospedeiro sendo
executado por vez. Com tudo, podemos ser executar vários Sistemas visitantes
simultaneamente.
O Virtual Machine Monitor (VMM) é uma camada de software entre o
hardware e o sistema operacional. O VMM é responsável pela virtualização e
controle dos recursos compartilhados pelas máquinas virtuais, tais como,
processadores, dispositivos de entrada e saída, memória, armazenagem. Também é
função do VMM escalonar qual máquina virtual vai executar a cada momento,
semelhante ao escalonador de processos do Sistema Operacional .
O VMM é executado no modo de supervisor, no entanto as máquinas virtuais
são executadas em modo de usuário. Como as máquinas virtuais são executadas em
modo de usuário, quando estas tentam executar uma instrução privilegiada, é
gerada uma interrupção e o VMM se encarrega de emular a execução desta
instrução.
Emulação, Simulação e Virtualização, Não Confundam!
Muitas vezes a virtualização é confundida com emulação e simulação,
porém são conceitos diferentes. De maneira simples, simulação é fazer algo se
parecer ou funcionar como outra coisa. Na emulação um software é
responsável por simular um computador real traduzindo todas as instruções. No
caso da virtualização ocorre a multiplexação (combina múltiplas entradas num
único terminal) do hardware real, possibilitando assim a criação de
diversas máquinas virtuais que podem ser consideradas uma cópia idêntica e
isolada do hardware real.
Emulação ou Simulação
Alguns pesquisadores não consideram a emulação como um tipo de
virtualização. Esta técnica utiliza-se de um sistema operacional host ou
hospedeiro. Nesta técnica, o software de virtualização é comumente chamando de
VMM (Virtual Machine Monitor) ou Hypervisor e é visto como uma aplicação pelo
host.
Exemplos: Qemu (roda sobre Linux), VirtualPC (roda sobre Windows) e
alguns emuladores de vídeo-games.
Figura 2: Virtualização de servidores utilizando emulação.
Virtualização Nativa ou Virtualização Cheia
É uma camada de software que simula todos os dispositivos de hardware de um computador. Também conhecida como virtualização completa. Nesta situação o VMM controla o hardware, simula todos os dispositivos de hardware de um computador e disponibiliza um ambiente propício às maquinas virtuais. Neste ambiente, cada maquina virtual se comporta como se fosse uma máquina real, ou seja, uma maquina física e tem a "ilusão" de estar rodando sobre um hardware exclusivo. Assim, cada maquina virtual "pensa" que trabalha isoladamente no hardware e pode rodar o seu próprio sistema operacional sem modificações. Cabe ao VMM evitar que uma maquina virtual execute operações de hardware que possa prejudicar as outras maquinas virtuais ou a maquina física.
Exemplos: Xen e o VMware
Figura 3: Virtualização de servidores utilizando nativa.
Paravirtualização
A paravirtualização é um método que
consiste em apresentar ao sistema operacional que está sendo emulado uma
arquitetura virtual que é similar, mas não idêntica, à arquitetura física real.
Neste modelo a VM sabe que está rodando sobre o VMM e interage com ele. O
objetivo disso é que uma boa interação entre o VMM e a maquina virtual pode
acarretar em um ganho substancial no desempenho desta. A paravirtualização pode
ser implementada de três maneiras diferentes como visto a seguir.
Exemplo: XEN, VMware, VirtualBox e o Hyper
V.
Primeiro sub-tipo:
Para possibilitar a comunicação mais rápida
entre a VM e o hardware, o VMM acessa as APIs (Interface de Programação de
Aplicativos) do sistema hospedeiro e repassa algumas partes dessas APIs para a
VM. Para que o acesso às APIs funcione corretamente, é necessário fazer
alterações no kernel do Sistema Operacional da VM.
Figura 4: Virtualização de servidores utilizando
paravirtualização (primeiro tipo).
Segundo sub-tipo:
Neste sub-tipo o hardware é acessado
diretamente pela VM. Para que isso seja possível são necessárias modificações
no sistema hospedeiro e no VMM. Neste caso é utilizado um driver de
dispositivos específicos.
Figura 5: Virtualização de servidores utilizando paravirtualização
(segundo tipo).
Terceiro sub-tipo:
Neste sub-tipo de paravirtualização, o
hardware é acessado diretamente pelo VMM. Para possibilitar esse acesso, um
driver de dispositivos específicos é instalado no sistema hospedeiro.
Figura 6: Virtualização de Servidores utilizando
paravirtualização (terceiro tipo).
Virtualização no Nível do Sistema Operacional
Permite a criação de maquinas virtuais no
nível do sistema operacional. Este tipo de virtualização não emprega VMM
(hypervisors). Em vez disso, a capacidade de virtualização é parte do sistema
operacional do hospedeiro que executa todas as funções de um VMM. Assim, é
possível ter varias maquinas virtuais isoladas e seguras em um único servidor
físico. Nesta técnica, o sistema operacional das maquinas virtuais e do
hospedeiro devem ser iguais.
Exemplos: ParallelsVirtuozzo e UserMode
Linux.
Figura 7: Virtualização de servidores no nível do
sistema operacional.
Virtualização por Hardware
Chamamos virtualização de hardware quando o
hardware da maquina host provê recursos para a virtualização, ou seja, como o
nome sugere, não existe um software que implementa a virtualização.
Propriedades Básicas da Virtualização
·
Particionamento: é a capacidade de partilhar o
hardware físico.
·
Encapsulamento: na virtualização, uma máquina
virtual é implementada na forma de arquivo ou conjunto de arquivos. Esse
arquivo, ou conjunto de arquivos, contém o hardware virtual, o sistema operacional
e as aplicações instaladas.
· Desempenho: por inserir uma camada extra de software,
pode haver um comprometimento no desempenho de um Sistema Operacional (SO),
porém este é compensado pelos benefícios adquiridos com o uso da virtualização.
· Gerenciabilidade: capacidade de gerenciar uma máquina
virtual independente das outras máquinas virtuais.
· Compatibilidade de software: todo software
escrito para executar em uma determinada plataforma deve ser capaz de rodar em
um máquina virtual que virtualiza essa plataforma.
Eficiência: instruções que não comprometam o
hospedeiro podem ser executadas diretamente no hardware.
O que Ganhamos com Isso?
- A virtualização possibilita um melhor uso dos recursos, eliminando a necessidade de grandes ambientes climatizados e cheios de máquinas, que com o passar do tempo, seriam sucateadas. Além disso, é possível uma redução do consumo de energia e de manutenção (POLLON, 2008).
- A virtualização reduz o tempo de indisponibilidade dos servidores e elimina a necessidade de compra de equipamentos, restringindo somente para o caso de ser necessária a reposição.
- A maioria dos produtos de criação de cópias de segurança/restauração suportam a recuperação dos Sistemas Operacionais (SOs) e aplicações dos servidores físicos instalados como VMs.
- O uso de Virtual Desktops pode reduzir custos, enquanto permite manter o controle do ambiente cliente e fornece camadas adicionais de segurança sem custos adicionais.
- As máquinas virtuais (VMs) são ideais para criação e distribuição de ambientes de teste para viabilidades de soluções (Proof of Concept – POC) de forma segura e confiável. Caso esse ambiente criado obtiver sucesso, sua transferência para um ambiente produtivo torna-se fácil e relativamente rápida, sem ter que reconstruir o ambiente.
- A facilidade de gerenciamento oferecido pelas soluções de virtualização diminui o número de máquinas físicas, facilitando o trabalho dos técnicos responsáveis.
- A utilização eficiente dos recursos de processamento, memória e espaço de armazenamento e físico. Desta forma, pode-se criar vários sistemas heterogêneos ou não, isolados em um único hardware, obtendo-se uma melhor utilização de seus recursos.
- Possibilitar a criação de vários ambientes em um único hardware, permitindo que tarefas como consolidação de aplicações, consolidação de servidores e migrações entre ambientes sejam executadas sem riscos, e, em sua grande maioria, eliminando a necessidade de aquisição de um novo hardware.
O que Perdemos com Isso?
- Segurança: Segundo Neil MacDonald, especialista de segurança da Gartner, hoje em dia, as máquinas virtuais são menos seguras que as máquinas físicas justamente por causa do VMM. Este ponto é interessante, pois se o sistema operacional hospedeiro tiver alguma vulnerabilidade, todas as máquinas virtuais que estão hospedadas nessa máquina física estão vulneráveis, já que o VMM é uma camada de software, portanto, como qualquer software, está sujeito a vulnerabilidades.
- Gerenciamento: Os ambientes virtuais necessitam ser instanciados, monitorados, configurados e salvos. Existem produtos que fornecem essas soluções, mas esse é o campo no qual estão os maiores investimentos na área de virtualização, justamente por se tratar de um dos maiores contra-tempos na implementação da virtualização.
- Desempenho: Atualmente, não existem métodos consolidados para medir o desempenho de ambientes virtualizados. No entanto, a introdução de uma camada extra de software entre o sistema operacional e o hardware, o VMM ou hypervisor, gera um custo de processamento superior ao que se teria sem a virtualização. Outro ponto importante de ressaltar é que não se sabe exatamente quantas máquinas virtuais podem ser executadas por processador, sem que haja o prejuízo da qualidade de serviço.
Referências:
- POLLON, Vanderlei
– Virtualização de servidores em ambientes heterogêneos e distribuídos –
estudo de caso, 2008. Dissertação (Especializado em Tecnologias, Gerência e
Segurança de redes de computadores) – Universidade do Rio Grande do Sul, Rio
Grande do Sul.
- http://www.gta.ufrj.br/grad/08_1/virtual/index.html
- Último acesso 25 de outubro de 2012.
Assinar:
Postagens (Atom)