Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: PHP ::: Dicas & Truques ::: Upload de Arquivos

Quer fazer upload de arquivos em PHP? Comece entendendo o array $_FILES

Quantidade de visualizações: 11954 vezes
O array associativo $_FILES, que é uma variável superglobal, ou seja, pode ser acessada a partir de qualquer lugar de nossos scripts, foi introduzido na versão 4.1.0 do PHP, o que tornou $HTTP_POST_FILES obsoleto.

O array $_FILES contém informações sobre o arquivo enviado ao servidor por meio de um formulário de upload. Entre estas informações podemos citar ("arquivo" é o nome do controle <input type="file"> no formulário):

$_FILES['arquivo']['name'] - O nome original do arquivo na máquina do usuário.

$_FILES['arquivo']['type'] - O mime type do arquivo, desde que o navegador forneça esta informação. Um exemplo seria "image/gif". Este mime type não é verificado pelo PHP e, portanto, não é uma boa idéia confiar nesta informação.

$_FILES['arquivo']['size'] - O tamanho, em bytes, do arquivo enviado.

$_FILES['arquivo']['tmp_name'] - O nome temporário atribuído ao arquivo pelo servidor.

$_FILES['arquivo']['error'] - O código de erro associado a este upload de arquivo. Em geral checamos pela ocorrência do valor 0, igual à constante UPLOAD_ERR_OK, o que significa que o upload foi feito com sucesso.

Antes de continuarmos, lembre-se de que os arquivos enviados ao servidor via upload são armazenados temporariamente no diretório temp do servidor, ou qualquer outro diretório indicado na diretiva upload_tmp_dir do php.ini. O arquivo fica neste local até o fim da execução do script atual. Para movê-lo para seu local definitivo, temos que usar a função move_uploaded_file().

Veja agora um exemplo de como obter as informações fornecidas no array $_FILES. Comece criando o seguinte formulário:

<html>
<head>
<title>Upload de arquivos usando PHP</title>
</head>
<body>

<form action="testes.php" method="post" 
  enctype="multipart/form-data">......


Note que o valor da propriedade name do campo <input type="file"> é "arquivo". Tenha isso em mente enquanto continuamos. Veja agora o código para o arquivo PHP responsável por tratar o upload (testes.php):

<?
  // vamos obter o nome original do arquivo na máquina do usuário
  echo "O nome do arquivo é: " . $_FILES['arquivo']['name'];
  echo "<br>O mime type do arquivo é: " . 
    $_FILES['arquivo']['type'];
  echo "<br>O tamanho do arquivo é: " . 
    $_FILES['arquivo']['size'] . " bytes";......


Ao executar este exemplo, você terá um resultado parecido com:

O nome do arquivo é: arquivo.txt
O mime type do arquivo é: text/plain
O tamanho do arquivo é: 84 bytes......


Em outras dicas nesta seção você aprenderá como usar a função move_uploaded_file() para salvar o arquivo enviado em seu local definitivo.

Link para compartilhar na Internet ou com seus amigos:

C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de C - Desafio do número ausente. Dado um vetor de números naturais 1..n, encontre o valor ausente

Quantidade de visualizações: 402 vezes
Pergunta/Tarefa:

Dado o vetor:

int valores[] = {1, 8, 7, 2, 6, 5, 3};


Encontre o elemento ausente na sequência de valores do vetor, sabendo que o primeiro valor é 1 e o último elemento é 8. Perceba que o vetor não precisa estar ordenado. Além disso, o entrevistador se certificará de que os valores serão sempre positivos e não haverá valores repetidos.

Sua saída deverá ser parecida com:

O número ausente é: 4
Resposta/Solução:

Dica: Use a fórmula n * (n + 1) / 2 para facilitar a resolução do exercício.

Veja a resolução comentada deste exercício usando C:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

// função principal do programa
int main(int argc, char *argv[]){
  // vamos declarar um vetor de inteiros faltando
  // um valor na sequência (não necessariamente ordenada)
  // Note a ausência do número 4
  int valores[] = {1, 8, 7, 2, 6, 5, 3};
  int i, soma_n, ausente, soma_elementos;
  int quant = 8; // tamanho do vetor + 1
	
  setlocale(LC_ALL,""); // para acentos do português 
  
  // o primeiro passo é obter a soma de 1..n elementos
......



C# ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de C# - Criando dois vetores de inteiros de forma que a soma dos elementos individuais de cada vetor seja igual a 30

Quantidade de visualizações: 102 vezes
Pergunta/Tarefa:

Considere os seguintes vetores:

// dois vetores de 5 inteiros cada
int[] a = { 50, -2, 9, 5, 17 };
int[] b = new int[5];
Escreva um programa C# que preencha o segundo vetor de forma que a soma dos respectivos elementos individuais de cada vetor seja igual a 30.

Sua saída deverá ser parecida com:

Valores no vetor a: 50   -2   9   5   17   
Valores no vetor b: -20   32   21   25   13
Resposta/Solução:

Veja a resolução comentada deste exercício usando C#:

using System;

namespace Estudos {
  class Principal {
    // função principal do programa C#
    static void Main(string[] args) {
      // dois vetores de 5 inteiros cada
      int[] a = { 50, -2, 9, 5, 17 };
      int[] b = new int[5];

      // vamos preencher o segundo vetor de forma que a soma dos
      // valores de seus elementos seja 30
      for (int i = 0; i < b.Length; i++) {
        b[i] = 30 - a[i];
      }

      // vamos mostrar o resultado
......



C# ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar a instrução de salto incondicional goto da linguagem C#

Quantidade de visualizações: 17134 vezes
A instrução goto na linguagem C# é uma instrução de salto incondicional. Quando esta instrução é encontrada, o fluxo de execução de código salta imediatamente para a localização definida pelo goto. Embora não muito usada, esta instrução, ás vezes, tem sua utilidade.

A instrução goto exige um rótulo (label), que é um identificador C# válido seguido por dois pontos. Além disso, este rótulo deve estar dentro do mesmo método no qual a instrução goto estará contida. Isso quer dizer que não é possível usar goto para saltar de um método para outro. Veja um trecho de código no qual usamos goto para contar de 0 até 10:

using System;

namespace Estudos{
  class Program{
    static void Main(string[] args){
      int valor = 0;

      // define o rótulo para o goto
      inicio:

      // exibe os números de 0 até 10
      if (valor <= 10){
......


Ao executar este código nós teremos o seguinte resultado:

0
1
2
3
4
5
6
7
8
9
10

Pressione uma tecla para sair...

É claro que este código, ainda que seja um bom exemplo do uso de goto, pode e deve ser substituído por um laço for ou while. Lembre-se: goto é usado somente em casos nos quais nenhuma outra instrução ou construção esteja disponível.

Veja, por exemplo, como podemos usar goto para saltar entre as cláusulas case de uma instrução switch:

using System;

namespace Estudos{
  class Program{
    static void Main(string[] args) {
      for (int i = 1; i < 3; i++) {
        switch (i) {
          case 1:
            Console.WriteLine("Estou na cláusula 1.");
            goto case 3;
          case 2:
            Console.WriteLine("Estou na cláusula 2.");
            goto case 1;
......


Ao executar este código nós teremos o seguinte resultado:

Estou na cláusula 1.
Estou na cláusula 3.
Estou na cláusula padrão.
Estou na cláusula 2.
Estou na cláusula 1.
Estou na cláusula 3.
Estou na cláusula padrão.

Outro uso útil da instrução goto é quando precisamos sair de um laço profundamente aninhado (três ou quatro níveis já é uma tarefa complicada). Veja:

using System;

namespace Estudos{
  class Program{
    static void Main(string[] args) {
      int i = 0, j = 0, k = 0;

      for (i = 0; i < 10; i++) {
        for (j = 0; j < 10; j++) {
          for (k = 0; k < 10; k++) {
            Console.WriteLine("i, j, k: " + i + " " +
              j + " " + k);
......


Ao executar este exemplo nós teremos o seguinte resultado:

i, j, k: 0 0 0
i, j, k: 0 0 1
i, j, k: 0 0 2
i, j, k: 0 0 3
Parei! i, j, k: 0 0 3

Para finalizar, tenha em mente que goto é usado para sair de um bloco de instruções. Tentar usar esta instrução para saltar para dentro de um bloco de instruções é um erro de síntaxe e o seu código não compilará.


TypeScript ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular o coeficiente angular de uma reta em TypeScript dados dois pontos no plano cartesiano

Quantidade de visualizações: 916 vezes
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x.

Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano:



Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é:

\[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \]

Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente.

Veja agora o trecho de código na linguagem TypeScript que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos:

// x e y do primeiro ponto
var x1:number = 3;
var y1:number = 6;
  
// x e y do segundo ponto
var x2:number = 9;
var y2:number = 10;   
......


Ao executar este código TypeScript nós teremos o seguinte resultado:

O coeficiente angular é: 0.6666666666666666

Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$):

// x e y do primeiro ponto
var x1:number = 3;
var y1:number = 6;
  
// x e y do segundo ponto
var x2:number = 9;
var y2:number = 10;   
   
// vamos obter o comprimento do cateto oposto
var cateto_oposto:number = y2 - y1;
// e agora o cateto adjascente
var cateto_adjascente:number = x2 - x1;
// vamos obter o ângulo tetha, ou seja, a inclinação da hipotenusa
......


Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta:

1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0;

2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0;

3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0).

4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Exercícios Resolvidos de Java - Como contar de 10 até 0 usando recursividade em Java - Funções recursivas em Java

Quantidade de visualizações: 5917 vezes
Pergunta/Tarefa:

Escreva um método recursivo em Java que conta e exibe os valores de 10 até 0. Seu método deverá possuir a seguinte assinatura:

public static void contarRecursivamente(int n){
  // sua implementação aqui
}
Veja que o método deverá receber o valor 10 e efetuar novas chamadas a si mesmo até que os valores de 10 até 0 sejam exibidos. O ponto de parada da recursividade é a exibição do valor 0.

Sua saída deverá ser parecida com:

10 9 8 7 6 5 4 3 2 1 0
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

package exercicio;

public class Exercicio {
  public static void main(String[] args) {
    // efetua uma chamada ao método recursivo
    // fornecendo o primeiro valor
    contarRecursivamente(10);
  }
  
  // método recursivo que conta de 10 até 0;
  public static void contarRecursivamente(int n){
......



Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 13 usuários muito felizes estudando em nosso site.