sexta-feira, 19 de junho de 2015

2015/1: AED2 - Notas de Aula - Programação Orientada por Objetos

Exemplo 1: Classe

class Color{
  int rgb;
}

public class Arvore{  // classe
  int tamanho; // atributo
  Color color; // atributo
  
  public Arvore(){ // construtor padrao
    this.color = green; 
  }

  public Arvore(int tam){// construtor customizado 1
    this(); // chama o construtor padrao primeiro
    this.tamanho = tam;
  }
  
  public Arvore(int tam, Color color){// construtor customizado 2
    this(tam); // chama o construtor customizado 1
    this.color = color;
  }
  
}

...
Arvore a = new Arvore();
a.tamanho = 12;

Arvore a2 = new Arvore(13);


Exemplo 2: Médico

class Medico {}

class Oftalmologista extends Medico {}

Medico m = new Oftalmologista();

Oftalmologista o = new Medico();

Oftalmologista o = new Cardiologista();

Cao c = new Tigre();


Exemplo 3: Animal

http://www.yuml.me/edit/413b7912

class Felino extends Mamifero(){

  public void miau(){
    this.miau(5);
  }
  
  public void miau(int volume){
    // miau!
  }
}

class Gato extends Felino{
}

class Leao extends Felino{
  public void miau(){
    super.miau(7);
  }  
}




quarta-feira, 3 de junho de 2015

2015-1-ALP-Qua: Lab 5.1 - Cadeias de Caracteres

#include <iostream>
#include <cstring>

using namespace std;

void buscarEmCadeia(char * str, char c){
char * pch;
pch=strchr(str,c);
    while (pch!=NULL)
    {
    cout << c << ": " << " found at " << pch-str+1 << endl;
      pch=strchr(pch+1,c);
    }
}

int main(int argc, char** argv) {
 char str[140];
  char * pch;
  cout << "Digite uma frase: " << endl;
  cin.get(str, 140);
  buscarEmCadeia(str, 'a');
  buscarEmCadeia(str, 'e');
  return 0;
}

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();
    }

}