quarta-feira, 25 de março de 2015

2015/1-ALP-Ter: Exercício 3 Para-casa

Exercício 3

Problema
Entrada: três números digitados pelo usuário
Saída: informar:
  a) a média aritmética dos três números informados
  b) o maior valor dos três informados

Solução em:
  a) descrição textual
  b) algoritmos estruturado
  c) código fonte em C++

obs: para ser feito em duplas e entregue de forma impressa na próxima aula 31/3/15

2015/1-ALP-Ter: Laboratório 01

Exercício 1

#include <cstdlib>
#include <iostream>

using namespace std;

// data: 24/3/15
// nome: waldir ribeiro
int main(int argc, char** argv) {

// problema
// entrada: nome do usuario
// saida: exibir uma frase de boas vindas com o nome

// solucao
// 1) solicitar o nome do usuario
// 2) ler a entrada do usuario
// 3) exibir a frase de boas vindas na tela com o nome

// algoritmo estruturado
// var N: caractere
char n;
// inicio
//   Escrever (Digite o seu nome:)
cout << "Digite o seu nome: ";
//   Ler N
cin >> n;
//   Escrever (Bem vindo ao C++, N)
cout << "\nBem vindo ao C++, " << n << endl;
// fim
system("pause");
return 0;
}





Exercício 2

#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;
// nome: waldir ribeiro
// data: 24/3/15
int main(int argc, char** argv) {

// problema
// entrada: raio de um circulo (real)
// saida: exibir a circunferencia e a area do circulo

// solucao - descricao textual
// 1) solicitar o raio do usuario
// 2) ler o raio
// 3) calcular a circunferencia (2 PI r)
// 4) calcular a area (PI r 2)
// 5) exibir a circunferencia
// 6) exibir a area

// algoritmo estruturado
// var R, A, C: real
float r, a, c;
// const PI: 3,14158
const float PI = 3.14158;
// inicio
//   Escrever (Digite o raio do circulo:)
cout << "Digite o raio do circulo: ";
//   Ler R
cin >> r;
//   C <- 2 * PI * R
c = 2 * PI * r;
//   A <- PI * R * R
a = PI * pow(r, 2);
//   Escrever (Circunferencia: C)
cout << endl << "Circunferencia: " << c << endl;
//   Escrever (Area: A)
cout << endl << "Area: " << a << endl;
// fim
system("PAUSE");
return 0;
}

terça-feira, 24 de março de 2015

OdA: Exercícios com Arquivos

Disciplina: Organização em Arquivos
Exercícios com Arquivos


1) Problema 1 (Fácil)
Entrada: um caractere e um arquivo (nome)
Saída: informar a quantidade de vezes que o caractere ocorre no arquivo

2) Problema 2 (Fácil)
Entrada: uma palavra e um arquivo (nome)
Saída: informar a quantidade de vezes que a palavra ocorre no arquivo

3) Problema 3 (Fácil)
Entrada: dois arquivos (origem e destino)
Saída: criar uma cópia do arquivo de origem no destino

4) Problema 4 (Difícil)
Entrada: um arquivo texto contendo números separados por quebra de linha
Saída: exibir dados dos números contidos no arquivo:
- Soma total
- Média
- Maior valor
- Menor valor

5) Problema 5 (Fácil)
Entrada: um arquivo texto contendo palavras e números separados por quebra de linha
Saída: reescrever o arquivo removendo as palavras e permitindo somente números

6) Problema 6 (Médio)
Entrada: Um arquivo texto contendo campos separados por vírgula (dados pessoais)
Saída: Criar um tokenizador do arquivo criando objetos a partir dos dados em arquivo

7) Problema 7 (Fácil)
Entrada: Um arquivo contendo palavras separadas por quebra de linha
Saída: duas partes
a) Imprimir as palavras na tela em ordem alfabética
b) Escrever as palavras em ordem alfabética em arquivo

8) Problema 8 (Fácil)
Entrada: três arquivos texto
Saída: informar a quantidade de linhas que cada arquivo possui. O programa deve sempre conseguir
processar todos os arquivos, mesmo em casos de erros de leitura

9)

2015/1-OdA: Laboratório 2 - Exercícios

package br.edu.pitagoras.oda.arquivo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class ProgramaExercicio1 {
  // 1) Problema 1 (Fácil)
  // Entrada: um caractere e um arquivo texto (nome)
  // Saída: informar a quantidade de vezes que
  // o caractere ocorre no arquivo

  public static void main(String[] args) {
    
  // solucao
  // 1) definir a entrada de dados: caractere e nome do arquivo
  char c = 'a';
  String nomeArquivo = "teste.txt";
  try {
    contarCharEmArquivo(c, nomeArquivo);
  } catch (FileNotFoundException e) {
    System.out.println("ERRO: arquivo " + nomeArquivo + 
        " não existe!");
    e.printStackTrace();
  } catch (IOException e) {
    System.out.println("ERRO: erro de leitura do arquivo!");
    e.printStackTrace();
  }
  }
  // casos de teste
  // 1) arquivo informado nao existe -> mensagem de erro
  // 2) arquivo vazio -> sem erros, contador zero
  // 3) arquivo com dados -> sem erros, contador com valor correto
  // 4) arquivo sem permissao para leitura - mensagem de erro

  static void contarCharEmArquivo(char c, String nomeArquivo)
      throws FileNotFoundException, IOException {
    // 2) abrir o arquivo
    InputStream is = new FileInputStream(nomeArquivo);
    // 3) Se o arquivo nao existir
    // 3.1) exibir uma mensagem de erro
    // 4) Senao
    // 4.1) Abrir o arquivo para leitura de caracteres
    InputStreamReader isr = new InputStreamReader(is);
    // 4.2) Ler o primeiro caractere
    int d = isr.read();
    int count = 0;
    // 4.3) Enquanto nao for fim de arquivo
    while (d != -1){
    //   4.3.1) Se o char lido for igual a char informado
      if (d == c){
        //   4.3.1.1) incrementar o contador de caracteres
        count++;
      }
    }
    // 4.4) Exibir a quantidade de vezes que o char ocorre
    System.out.println("Buscando pelo caractere " + c + 
        " no arquivo " + nomeArquivo + " ...");
    System.out.println("Quantidade de vezes: " + count);
    // 4.5) fechar o arquivo
    isr.close();
  }
  
  
  
  
  
  
  
  
  
  
}



package br.edu.pitagoras.oda.arquivo;

public class ProgramaExercicio2 {

  
//  2) Problema 2 (Fácil)
//  Entrada: uma palavra e um arquivo (nome)
//  Saída: informar a quantidade de vezes que a 
  //     palavra ocorre no arquivo

//  Apresentar:
  // - solução em algoritmo
  // - código fonte em Java
  // - casos de testes a serem testados
  
  //  http://www.yuml.me/8c3df1a2
  //  http://www.yuml.me/edit/8c3df1a2
  
  public static void main(String[] args) {

  }

  public static int countPalavraEmArquivo(
      String palavra, String nomeArquivo){
    // solucao
    // 1)
    return 0;
  }
  

}




package br.edu.pitagoras.oda.arquivo;

import static org.junit.Assert.*;

import java.io.FileNotFoundException;
import java.io.IOException;

import org.junit.Test;

public class TesteProgramaExercicio1 {

  @Test
  public void testArquivoNaoExiste() {
    
    // caso de teste 1: arquivo nao existe
    char c  = 'a';
    String nomeArquivo = "blah.txt";
    ProgramaExercicio1 ex1 = new ProgramaExercicio1();
    try {
      ex1.contarCharEmArquivo(c, nomeArquivo);
      fail("Erro nao ocorreu");
    } catch (FileNotFoundException e) {
      System.out.println("Erro esperado");
    } catch (IOException e) {
      fail(e.getMessage());
      e.printStackTrace();
    } 
  }
  
  @Test
  public void testArquivoVazio(){
    
  }

  @Test
  public void testArquivoComDados(){
    
  }
}


  

2015/1-OdA: Arquivos: Exercício em sala 2015.03.16

Problema
Entrada: diretorio definido pelo usuario
Saida: informar o numero de arquivos dentro do diretorio

Solução
1) Solicitar o diretorio do usuario
2) Se o diretorio nao existir
2.1) Mostrar mensagem de erro
3) Senao
3.1) Acessar os metadados do diretorio (classe File)
3.2) Se o arquivo nao for um diretorio
3.2.1) Mostrar um erro ao usuario
3.3) Senao
3.3.1) Obter a listagem dos arquivos no diretorio
3.3.2) Exibir a quantidade de arquivos existentes

Código Fonte em Java

import java.io.*;
import java.util.*;

public class NumeroArquivos{

  public static void main(String [] args){
    Scanner sc = new Scanner(System.in);
  System.out.println("Digite um caminho de diretorio");
  String dir = sc.nextLine();
  File arq = new File(dir);
  if (!arq.exists()){
    System.out.println("ERRO: caminho nao existe");
  } else {
    if (arq.isFile()){
      System.out.println("ERRO: caminho nao eh um diretorio");
    } else {
      int num = arq.listFiles().length;
    System.out.println("Número de arquivos: " + num);
    }
  }
  }

}

Problema 2
Entrada: diretorio definido pelo usuario
Saida: informar o arquivo de maior tamanho no diretório

Código Fonte em Java

import java.io.File;
import java.util.Scanner;


public class NumeroArquivos {

  public static void main(String [] args){
      Scanner sc = new Scanner(System.in);
    System.out.println("Digite um caminho de diretorio");
    String dir = sc.nextLine();
    File arq = new File(dir);
    if (!arq.exists()){
      System.out.println("ERRO: caminho nao existe");
    } else {
      if (arq.isFile()){
        System.out.println("ERRO: caminho nao eh um diretorio");
      } else {
        File[] listFiles = arq.listFiles();
        int num = listFiles.length;
      System.out.println("Número de arquivos: " + num);
      long tam = 0;
      String maiorArquivo = null;
      for (File f: listFiles){
        System.out.println(f);
        if (f.isFile() && f.length() > tam){
          tam = f.length();
          maiorArquivo = f.getAbsolutePath();
        }
      }
      System.out.println("Maior arquivo: " + maiorArquivo);
      System.out.println(tam + " bytes");
      }
    }
    sc.close();
    }

}

quinta-feira, 19 de março de 2015

2015-1: Algoritmos e Lógica de Programação: Tipos de Dados - Exercícios Práticos

2015/1
Algoritmos e Lógica de Programação
Tipos de Dados, Variáveis e Constantes
Exercícios Práticos

Problema 1
Entrada: um raio de um círculo digitado pelo usuário
Saída: informar a circunferência e a área do círculo

Problema 2
Entrada: um numero inteiro digitado pelo usuário
Saída: informar o sucessor do número informado

Problema 3
Entrada: um número inteiro digitado pelo usuário
Saída: informar o próximo número par a partir do número informado pelo usuário

Problema 4
Entrada: uma letra (a-z) digitada pelo usuário
Saída: informar a próxima letra do alfabeto

Problema 5
Entrada: um numero inteiro digitado pelo usuário (lado de um quadrado
Saída: informar a área e o perímetro do quadrado

Problema 6
Entrada: uma quantidade (inteiro) e o custo por unidade de Dolar
Saída: informar quantos Reais devem ser pagos para comprar a quantia em Dólares

Problema 7
Entrada: um número inteiro informado pelo usuário (quantidade de segundos)
Saída: informar quantos minutos equivalem ao numero de segundos informado

Problema 8
Entrada: três números digitados pelo usuário (X, Y e Z)
Saída: informar o maior deles

Problema 9
Entrada: três números digitados pelo usuário (X, Y e Z)
Saída: informar a média deles

2015-1: Algoritmos e Lógica de Programação (Qua): Laboratório 1

Problema 1:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    // Problema
    // Entrada: um número inteiro digitado pelo usuario (raio)
    // Saída: exibir a circunferência e a área do círculo
    
    
    // descricao textual
    // 1) Solicitar do usuario o numero inteiro (raio)
    // 2) Calcular a circunferencia do circulo (2PiR)
    // 3) Calcular a área do circulo (PiRxR)
    // 4) Exibir a circunferencia do circulo
    // 5) Exibir a area do circulo
    
    // Algoritmo estruturado
    // Var R: inteiro    
    int r;
    //     C, A: real
    float c, a;
    const float PI = 3.14158;
    // Inicio
    // Escrever "Digite um numero inteiro: (raio)"
    cout << "Digite um numero inteiro: (raio)" << endl;
    // Ler R
    cin >> r;
    // C <- 2 * 3,14 * R
    c = 2 * PI * r;
    // A <- 3,14 * R * R
    a = PI * r * r; // potenciacao
    // Escrever "Circunferencia: " C
    cout << "Circunferencia: " << c << endl;
    // Escrever "Area: " A
    cout << "Area: " << a << endl;
    // Fim
              
    system("PAUSE");
    return EXIT_SUCCESS;

}


Problema 2:


#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    // Problema
    // Entrada: três números inteiros digitados pelo usuario
    // Saída: informar a média dos três numeros
    
    // Descricao textual
    //
    
    // Algoritmo estruturado
                
    // testes:
    // 1, 2, 3
    // 0, 0, 1
    // 7, 3, 1
    // 1, 1, 1
                    
    system("PAUSE");
    return EXIT_SUCCESS;
}



quinta-feira, 5 de março de 2015