quinta-feira, 25 de setembro de 2014

2014/2: Algoritmos e Lógica de Programação: Notas de Aula 24/09/2014

Trabalho Prático 1

1) Calcular a diferença entre o ano
- Positivo
2) Calcular a diferença entre o mês
- Positivo: OK
- Negativo:
  - Ano: subtrair 1 do ano
  - Mês: adicionar 12 ao valor calculado

  d1: 23/08/2014
  d2: 29/09/2010

  dx = d1 - d2
  dxa = d1a - d2a
      = 2014 - 2010 = 4
  dxa = 4 - 1 = 3

  dxm = d1m - d2m
      = 8   -  9  = -1
  dxm = 12 - 1 = 11

3) Calcular a diferença entre o dia
- Positivo: OK
- Negativo:
  - Mes: subtrair 1 do mes
  - dia: somar 30

  dxd = d1d - d2d
         23 - 29 = -6
  dxd = 30 - 6 = 24

Planos de teste
- Plano 1: datas 23/09/2014 e 10/05/2010
- Plano 2: datas com diferenca entre o mês negativa
- Plano 3: datas com diferença entre o dia negativa
- Plano 4: valores invalidos (numeros negativos, zero)



Exercícios em Sala:

Problema 1:
Entrada: um numero inteiro digitado pelo usuário (N)
Saída: exibir na tela a taboada de N

Descrição textual
1) Ler o numero do usuário
2) Para cada numero de zero a 10 (de 1 em 1)
2.1) Calcular a multiplicacao de N pelo numero
2.2) Exibir o resultado do calculo

Algoritmo estruturado
Var N, C, R: inteiro
Inicio
  Escrever "Digite um numero inteiro:"
  Ler N
  Para C De 0 Até 10 Passo 1 Faça
    R <- N * C
Escrever N " x " C "=" R
  Fim Para
Fim

Código fonte
#include <iostream>

int main(){
  int n, c, r;
  cout << "Digite um numero inteiro:";
  cin >> n;
  for (c = 0; c<=10; c++){
    r = n * c;
cout << n << " x " << c << "=" << r << endl;
  }
  return 0;
}


Problema 2
Entrada: número inteiro informado pelo usuário (N)
Saída: Apresentar todos os números divisíveis por 4
       entre zero e N

Descricao textual 1
1) Ler o numero inteiro do usuário
2) Para cada numero entre zero e N (de 1 em 1)
2.1) dividir o numero por 4
2.2) calcular o resto da divisao por 4
2.3) se o resto for zero
2.3.1) exibir o numero

Algoritmo estruturado 1
Var N, C, R: inteiro
Inicio
  Escrever "Digite um numero inteiro:"
  Ler N
  Para C De 0 Até N Passo 1 Faça
    R <- C % 4 // modulo resto da divisao
Se (R == 0) Então
 Escrever C
Fim Se
  Fim Para
Fim


Descricao textual 2
1) Ler o numero inteiro do usuário
2) Para cada numero entre zero e N (de 4 em 4)
2.1) exibir o numero


Problema 3
Entrada: letra digitada pelo usuário (a-z)
Saída: exibir a letra na tela enquanto ela for vogal,
       sair se for diferente de letra (a-z)

Descrição textual
1) Ler do usuário um caractere (a-z)
2) Enquanto o caractere for uma letra (a-z)
2.1) Se o caractere for uma vogal (a-e-i-o-u)
2.1.1) Exibir o caractere na tela
2.2) Ler do usuário um caractere (a-z)

Algoritmo Estruturado
Var C: caractere
Inicio
  Escrever "Digite um caractere: "
  Ler C
  Enquanto ((C >='A' E C <='Z') OU
(C >='a' E C <='z')) Faça
    Se (C == 'A' OU C == 'E' OU C == 'I' OU C == 'O' OU
C == 'U') Então
 Escrever C
Fim Se
    Escrever "Digite um caractere: "
    Ler C
  Fim Enquanto
Fim











quinta-feira, 4 de setembro de 2014

2014-2-AED2: Leitura de arquivo texto em Java

package br.edu.pitagoras.aed2.arquivo;

import java.io.FileInputStream;
import java.util.NoSuchElementException;
import java.util.Scanner;

public class LerArquivoTeste {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String nomeArquivo = "arq-texto.txt";

        try {
            Scanner sc = new Scanner(new FileInputStream(nomeArquivo));
            String s = sc.next();
            while (s != null) {
                s = s.replace(".", "");
                s = s.replace(",", "");
                System.out.println(s);
                s = sc.next();
            }
            sc.close();
        } catch (NoSuchElementException e) {
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

segunda-feira, 1 de setembro de 2014

2014-2-OdA: Listador de Diretórios em Java

import java.io.File;


public class ListadorArquivosDiretorio {

/**
* @param args
*/
public static void main(String[] args) {

// listar arquivos de um determinado diretorio

// 1) obter/ler o caminho absoluto do diretorio
String nomeArquivo = "c:/temp/java.rar";
File f = new File(nomeArquivo);
// 2) Se o caminho não existir
if (!f.exists()){
// 2.1) informar um erro caminho nao existe
System.out.println("ERRO: caminho não existe");
} // 3) Se o caminho nao for um diretorio (arquivo)
else if (!f.isDirectory()){
// 3.1) informar um erro caminho nao eh diretorio
System.out.println("ERRO: caminho nao eh diretorio");
} else {// 4) Caso contrário
// 4.1) Criar um objeto do tipo arquivo (File)
// 4.2) obter a listagem dos arquivos do arquivo acima
File[] lista = f.listFiles();
// 4.3) Para cada arquivo na lista
System.out.println("Listando arquivos em " + f.getAbsolutePath());
for (File a: lista){
// 4.3.1) exibir o nome do arquivo na lista
System.out.println(a.getName());
}
}//

}

}

quarta-feira, 27 de agosto de 2014

2014/2-ALP: Laboratório 1 Problema 3

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    // Problema:
    // Entrada: um número inteiro digitado pelo usuário
    // Saída: informar se o número é par ou impar
    
    // descricao textual
    // 1) Ler o numero inteiro do usuario
    // 2) Dividir o numero por 2
    // 3) Calcular o resto da divisao por 2
    // 4) Se o resto for zero
    // 4.1) o numero é par
    // 5) Senão
    // 5.1) o numero é impar
    
                            // ALGORITMO
    int r, q, n;            // VAR  N, Q, R: inteiro
    // INICIO
    cout << "Digite um numero inteiro:"<< endl;//   Escrever "Digite um numero:"
    cin >> n;               //   Ler N
    q = n / 2;              //   Q <- N / 2
    r = n - (q * 2);        //   R <- N - (Q * 2)
    if (r == 0){//   Se (R == 0) Então
      cout << "Numero "<<n<<" eh par!"<<endl;//     Escrever "Numero eh par!"
    }else{//   Senão
      cout << "Numero "<<n<<" eh impar!"<<endl;//     Escrever "Numero eh impar!"
    }//   Fim Se
    // FIM                
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

segunda-feira, 25 de agosto de 2014

2014/2: OdA: RandomAccessFile + java nio: Exemplo 3

RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw");
    FileChannel inChannel = aFile.getChannel();

    ByteBuffer buf = ByteBuffer.allocate(48);

    int bytesRead = inChannel.read(buf);
    while (bytesRead != -1) {

      System.out.println("Read " + bytesRead);
      buf.flip();

      while(buf.hasRemaining()){
          System.out.print((char) buf.get());
      }

      buf.clear();
      bytesRead = inChannel.read(buf);
    }
    aFile.close();

2014/2: OdA: RandomAccessFile: Exemplo 2

package br.pit.oda.arquivos.java;

import java.io.IOException;
import java.io.RandomAccessFile;

public class RandomAccessFileEx {

    static final String FILEPATH = "C:/Users/nikos7/Desktop/input.txt";

    public static void main(String[] args) {
        try {
            System.out.println(new String(readFromFile(FILEPATH, 150, 23)));
            writeToFile(FILEPATH, "JavaCodeGeeks Rocks!", 22);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static byte[] readFromFile(String filePath, int position, int size) throws IOException {

        RandomAccessFile file = new RandomAccessFile(filePath, "r");
        file.seek(position);
        byte[] bytes = new byte[size];
        file.read(bytes);
        file.close();
        return bytes;

    }

    private static void writeToFile(String filePath, String data, int position) throws IOException {

        RandomAccessFile file = new RandomAccessFile(filePath, "rw");
        file.seek(position);
        file.write(data.getBytes());
        file.close();

    }

}