SlideShare uma empresa Scribd logo
Adriano Marinho   Graduando em Computação na UFPB


Raphael Marques   Mestrando em Informática na UFPB
São as linguagens mais utilizadas no mundo.


    C no Desktop e Java na Web


    Porque saber as duas?

     Mais conhecimento sobre programação.
     Nem tudo se resolve numa linguagem só.
     Não seja limitado.



                                                  R2
Java:

     Programação Orientada a Objetos
     Compilada para Bytecodes
     “Interpretada” em tempo de execução pela JVM
     Write once! Run Anywere!
     A JVM TEM O PODER!




                                                     R3
C:

     Programação Estruturada
     Compilada diretamente para código nativo
     VOCÊ TEM O PODER!




                                                 A4
#include <stdio.h>

int main ()
{
   printf(“Hello World!n”);
   return 0;
}


                               A5
public class Classe{

    public static void main(String[] args){
      System.out.println(“Hello World!”);
    }

}


                                              R6
Use o console (prompt de comando no

    Windows) para compilar!

    Você deve ter o Java JDK instalado na sua

    máquina.

    Exemplo:

     javac NomeDaClasse.java
     java NomeDaClasse

                                                R7
Em Java, módulo é descrito por uma classe.

  Classes adicionais são carregadas

  automaticamente.
 Importar outras classes:
       import pacote.Classe;
       import pacote.*;
       import static pacote.Classe.campo
       import static pacote.Classe.*;
    Classpath:

     java –cp biblioteca.jar SuaClasse

                                               R8
Use o console (prompt de comando no

    Windows) para compilar!

    Você deve ter algum compilador C instalado

    na sua máquina.

    Exemplo:

     gcc nomeDoPrograma.c –o nomeDoPrograma
     nomeDoPrograma

                                                 A9
Para isso escrevemos arquivos de cabeçalho

    (.h), além dos arquivos .c.

    Nos arquivos .h devem ficar:

     protótipos das funções, definições de estruturas e
      variáveis globais.
     gcc main.c Arq1.c Arq2.c -o MeuProg

    #include<modulo.h>


                                                           A10
C                                JAVA

    char     (8 bits)                boolean   (false,true)
                                
    int      (? bits c/ sinal)       byte      (8 bits c/ sinal)
                                
    float    (tamanho do int)        short     (16 bits c/ sinal)
                                
    double   (?)                     char      (16 bits s/ sinal)
                                
                                     int       (32 bits c/ sinal)
                                 
                                     long      (64 bits c/ sinal)
                                 
                                     float     (32 bits)
                                 
                                     double    (64 bits)
                                 




                                                                    A11
Modificadores:       Exemplos:
                    
     short               short int
     long                short
     signed              signet char
     unsigned            unsigned long int




                                               A12
Em C, um ponteiro contêm um endereço de

    memória.
     Um ponteiro pode ser utilizado para qualquer
      estrutura na memória.
     Ponteiros permitem operações aritméticas.

    Em Java, uma referência faz referência a um

    objeto na memória.
     Uma referência só é utilizada com objetos.
     Referências NÃO permitem operações aritméticas.

                                                        R13
C

     lixo
     Ponteiros com lixo podem causar travamentos do
        SO
    Java

     null
     false
    0
     0.0
                                                       R14
Usamos System.out.println()

    Exemplos:

     System.out.println();
     System.out.println(x);
     System.out.println(“HelloWorld”);
     System.out.print(“valor: ” + x);
     System.out.println(“valor: ” + x + 1);
     System.out.printf(...);

                                              R15
Usamos System.in.read()

     Lê um byte por vez
    A classe Scanner

    Scanner scan = new Scanner(System.in)
    int x = scan.nextInt();
    float f = scan.nextFloat();
    String token = scan.next();
    String linha = scan.nextLine();

                                            R16
Usamos printf(), uma função da biblioteca

    stdio.h
    Exemplos:

printf(“%cn”, 'a‟);        →a
                            →a
printf(“%cn”, 65);
                            →1977
printf(“%dn”, 1977);
                            →650000
printf(“%ldn”, 650000L);
                            →0xABC
printf(“%xn”, 2748);
                            →123
printf(“%on”, 83);
                                                A17
Exemplos:

                                → 1977
printf(“%6d n”, 1977);
                                →001977
printf(“%06d n”, 1977);
                                →3.14
printf(“%4.2f n”, 3.1416);
                                →????
printf(“%+.0e n“,3.1416);
                                →3.1416e1
printf(“%En”, 3.1416);
                                → 10
printf(“%*d n”, 5, 10);
printf(quot;%sn”, “Adrianoquot;);      →Adriano
                                →1 + 2 = 3
printf(“%d + %d = %d”,1,2,3);

                                             A18
Usamos scanf(), uma função da biblioteca

    stdio.h
    Exemplos:

       char str [80];
       scanf (quot;%squot;,str);
       int i;
       scanf (quot;%dquot;,&i);
       scanf (quot;%xquot;,&i);
       scanf (quot;%dquot;,i);
                                               A19
Conversão implícita:

     Tipos:
      ▪ Por atribuição;
      ▪ Alargamento de inteiros;
      ▪ Compatibilidade de operandos;
     Todos os tipos de C são compatíveis entre si!!!
    Conversão explícita: type cast.

     (int)x
     (float)y
                                                        A20
Conversão implícita:

     Onde não houver perda de precisão
     Ex:
      ▪ float f = 5;
      ▪ double d = f + 1.5;
      ▪ byte b = 1000;
      ▪ int x = 1.0;
    Conversão explícita: type cast

     (int)x
     (float)y
                                          R21
Java e C:

     +      -         *   /    >    >=   <    <=   |

     &      !         ^   --   ++   -=   +=   <<   >>

     =      ==    !=      %    ~    ^    ?:   &&   ||



    Sizeof em C:

     sizeof( int )



                                                        R22
Em C:

     O modificador const
      ▪ const int PI = 3.1415;
     Macros
      ▪ #define PI 3.1415

    Em Java:

     O modificador final
      ▪ final int PI = 3.1415;

                                 R23
C:

     A condição é um inteiro
      ▪ false: zero
      ▪ true: qualquer valor diferente de zero
     Ex:
      ▪ if(x == 5){...}
      ▪ if(x = 5){...}
      ▪ if(x == 1){...} →   if(x != 0){...} → if(x){...}


                                                           A24
Java:

     A condição é sempre um boolean
      ▪ int x = 4;
      ▪ if( x == 4 ){...}
      ▪ if( x ){...}      → apenas se x for boolean




                                                      A25
Java e C:

     if
     if-else
     while
     do-while
     switch-case
     break
     continue

                    A26
int i;
for(i = 0; i < 10; i++){
  ...
}




                           A27
for(int i = 0; i < 10; i++){
  ...
}

int[] numeros = ...
foreach(int n : numeros){
  ...
}

                               R28
Escreva um programa na sua nova linguagem

    que leia um valor de raio e calcule a área e o
    perímetro.

    Exiba a área e perímetros calculados.


    O programa pergunta o raio até que o usuário

    digite um valor negativo.


                                                     R30
Sequência de posições de memória

    C não faz controle de limite do array

    Representado por um ponteiro.

     Estático:
      ▪ int p[10];
      ▪ int[] p = int[10];
      ▪ int p[x];
     Dinâmico
      ▪ int p* = (int*) malloc( sizeof( int ) * tamanho );
      ▪ free(p);
    Tamanho de um array:

     sizeof( array ) / sizeof( tipoDoArray)
      ▪ sizeof( p ) / sizeof( int )
     O mais comum é guardar o tamanho do array numa variável.

                                                                 A31
Arrays são objetos.

    São acessados pela sua referência.

    Ex:

                                     → referência nula
    int[] a;
                                     → inicialização
    int[] a = new int[10];
                                     → inicialização
    int[] a = new int[x];
    int[] a = new int[]{1,2,3,4,5}; → inicialização
                                     → abreviação
    int[] a = new {1,2,3,4,5};
                                     → n de elementos
    a.length
                                     → 3 elemento do array
    a[2]
    int a[10];
    a++;

                                                             R32
Métodos:

    Ex:

    static void imprimeValor(int valor){
      System.out.println(valor);
    }
    static float soma(float valor1, float valor2){
      return valor1 + valo2;
    }

                                                     R33
Sobrecarga de métodos:

     Java diferencia 2 métodos com o mesmo nome
      pela quantidade e tipo de parâmetros.
    Ex:

    static float metodo(float v1, float v2){...}
    static float metodo(float v1){...}
    static float metodo(float v1, int v2){...}
    static int metodo(float v1, float v2){...}

                                                   R34
Passagem de parâmetro sempre por cópia.

     Objeto como parâmetro
      ▪ É feita uma copia da referência.
      ▪ Simula passagem de parâmetro por referência.




                                                       R35
Funções:

     C diferencia funções apenas pelo nome!
     Nada de sobrecarga de funções!!!
    Ex:

      int SomarDoisNumeros (int a, int b){
          return a + b;
      }

      void ImprimirOi(){
        printf(“Oi!n”);
      }

                                               A36
Passagem de parâmetro sempre por cópia.

     Ex:
       int SomarDoisNumeros (int a, int b)
    Passagem de parâmetro por referência.

     É emulada utilizando-se ponteiros
     Ex:
       int SomarDoisNumeros (int *a, int *b){...}
       ...
       int c = SomarDoisNumeros (&a, &b);

                                                    A37
Strings em C são arrays! (e podem ser alterados)

     char str[] = “String”;
     char *str = “String”;
    termina com ‘0’

     “String” → „S‟ , „t‟ , „r‟ , „i‟ , „n‟ , „g‟ , „0‟
    Operações (definidas em string.h):

       strcpy
       strlen
       strcmp
       strstr
       strtkn

                                                            A38
Classe String

    Não precisa de „0‟ no final!!!

    Strings não podem ser alteradas!!!

     Para isso use StringBuffer.




                                         R39
Operações:

    String nome = “Raphael”
                               →7
    nome.length()
    nome + “ Marques”          → “Raphael Marques”
                               → „a‟
    nome.charAt(1)
                               → true
    nome.contains(“Raphael”)
                               → false
    nome.equals(“Raphael”)
                               → ”raphael marques”
    nome.toLowerCase()
                               → “500”
    String.valueOf(500)

                                                     R40
C:

     O programador aloca e libera memória.
     Não existe gerenciamento automático de
     memória.

    Java:

     O programador aloca memória
     O Garbage Collector libera memória quando um
      objeto não é mais referenciado.
     System.gc() é apenas uma SUGESTÃO.

                                                     A41
Escreva um programa na sua nova linguagem

    que leia N notas do usuário.

    Calcule a média das notas e exiba o resultado.


    Informe se o aluno foi aprovado, reprovado

    ou está na final.

    No caso da final, informe quanto ele precisa

    tirar na prova final para passar.
                                                     A43
Erros típicos:

     Redeclaração de variáveis/funções;
     Avisos de variáveis sem inicialização;
     Funções com número de parâmetros incorretos;
     Etc;




                                                     A44
Exceções

     Param a execução do programa sem travar o SO.
     Exceções de vários tipos:
      ▪ NullPointerException
      ▪ ArrayIndexOutOfBoundsException
    StackTrace:

Exception in thread quot;main“ ArrayIndexOutOfBoundsException: 500
       at Teste.metodo2(Teste.java:4)
       at Teste.metodo1(Teste.java:8)
       at Teste.main(Teste.java:13)

                                                                 R45
JAVA NÃO É C!!!



    Deixe o Garbage Collector trabalhar...

     objetoInutil = null;


    Declare as variáveis quando for utilizá-las.





                                                   R46
C NÃO É JAVA!!!



    Todo cuidado com ponteiros é pouco!!!


    Não esqueça do lixo!!!


    Cuidado com o tamanho dos tipos primitivos.



    Lembre de liberar memória.

                                                  A47
C:

     Notas de aula do Prof. Ulysses Oliveira
         ▪ http://www.ulysseso.com/
     Biblioteca padrão de C
         ▪ http://www.utas.edu.au/infosys/info/documentation/C/CStdL
           ib.html

    Java:

     Procure no Google: java api 1.6
         ▪ http://java.sun.com/javase/6/docs/api/
     Procure no Google: tutorial sun
         ▪ http://java.sun.com/docs/books/tutorial/

                                                                       A48
C:               Java:
                
     math.h          System
     string.h        File
     time.h          Math
                      Arrays




                                A49
C:

     Tenha paciência e cuidado!

    Java:

     Toda classe começa com letra maiúscula:
      ▪ Pessoa, Carro, String, System, etc...
     O nome do arquivo deve ser IGUAL ao nome da
     classe:
      ▪ class Pessoa → Pessoa.java

                                                    R50
C:               Java:
                
     Dev C++         JBuilder
     CBuilder        NetBeans
     NetBeans        Eclipse
     Eclipse




                                  R51
Adriano Marinho   Graduando em Computação na UFPB


Raphael Marques   Mestrando em Informática na UFPB

Mais conteúdo relacionado

Mais procurados

Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - Comparando
Wesley Lemos
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
Luciano Ramalho
 
Programacao orientada-a-objetos-java
Programacao orientada-a-objetos-javaProgramacao orientada-a-objetos-java
Programacao orientada-a-objetos-java
Renato Sousa
 

Mais procurados (20)

PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducao
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sério
 
Introdução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPIntrodução às Redes Neurais com PHP
Introdução às Redes Neurais com PHP
 
Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - Comparando
 
Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
pSets TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)
pSets TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)pSets TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)
pSets TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões Regulares
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Fundamentos de C#
Fundamentos de C#Fundamentos de C#
Fundamentos de C#
 
Atribuições
AtribuiçõesAtribuições
Atribuições
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Swift!.opcionais.oh!.my()?!?
Swift!.opcionais.oh!.my()?!?Swift!.opcionais.oh!.my()?!?
Swift!.opcionais.oh!.my()?!?
 
Java script para adultos
Java script para adultosJava script para adultos
Java script para adultos
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Curso Java #01 - Introdução
Curso Java #01 - IntroduçãoCurso Java #01 - Introdução
Curso Java #01 - Introdução
 
Programacao orientada-a-objetos-java
Programacao orientada-a-objetos-javaProgramacao orientada-a-objetos-java
Programacao orientada-a-objetos-java
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 

Semelhante a Minicurso Java && Cl

Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2
engenhariadecomputacao
 
Python Mini Curso V0812
Python Mini Curso V0812Python Mini Curso V0812
Python Mini Curso V0812
Luiz Aldabalde
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
Dalton Martins
 

Semelhante a Minicurso Java && Cl (20)

Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
 
Olá Python!
Olá Python!Olá Python!
Olá Python!
 
JAVA - Introdução
JAVA - IntroduçãoJAVA - Introdução
JAVA - Introdução
 
Scala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) IntroduçãoScala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) Introdução
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
 
Aula01
Aula01Aula01
Aula01
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Python Mini Curso V0812
Python Mini Curso V0812Python Mini Curso V0812
Python Mini Curso V0812
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
 
Aula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfAula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdf
 
Rachinations
RachinationsRachinations
Rachinations
 
Codificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadosCodificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcados
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
1.introducao java
1.introducao java1.introducao java
1.introducao java
 

Mais de Raphael Marques

Introdução a Informática - Arquitetura
Introdução a Informática - ArquiteturaIntrodução a Informática - Arquitetura
Introdução a Informática - Arquitetura
Raphael Marques
 
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Raphael Marques
 
Slides de PDI 2009 - Raphael Update 5
Slides de PDI 2009 - Raphael Update 5Slides de PDI 2009 - Raphael Update 5
Slides de PDI 2009 - Raphael Update 5
Raphael Marques
 
slides PDI 2007 leonardo
slides PDI 2007 leonardoslides PDI 2007 leonardo
slides PDI 2007 leonardo
Raphael Marques
 
Slides PDI 2009 Raphael versao4
Slides PDI 2009 Raphael versao4Slides PDI 2009 Raphael versao4
Slides PDI 2009 Raphael versao4
Raphael Marques
 

Mais de Raphael Marques (20)

Sistemas numéricos
Sistemas numéricosSistemas numéricos
Sistemas numéricos
 
Windows explorer
Windows explorerWindows explorer
Windows explorer
 
Interface do windows
Interface do windowsInterface do windows
Interface do windows
 
Internet
InternetInternet
Internet
 
Introdução a Informática - Arquitetura
Introdução a Informática - ArquiteturaIntrodução a Informática - Arquitetura
Introdução a Informática - Arquitetura
 
O que você produz além de código?
O que você produz além de código?O que você produz além de código?
O que você produz além de código?
 
JavaFX
JavaFXJavaFX
JavaFX
 
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
 
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Slides de PDI 2009 - Raphael Update 5
Slides de PDI 2009 - Raphael Update 5Slides de PDI 2009 - Raphael Update 5
Slides de PDI 2009 - Raphael Update 5
 
Mini-curso JavaFX Aula3 UFPB
Mini-curso JavaFX Aula3 UFPBMini-curso JavaFX Aula3 UFPB
Mini-curso JavaFX Aula3 UFPB
 
Mini-curso JavaFX Aula2
Mini-curso JavaFX Aula2Mini-curso JavaFX Aula2
Mini-curso JavaFX Aula2
 
Mini-curso JavaFX Aula1
Mini-curso JavaFX Aula1Mini-curso JavaFX Aula1
Mini-curso JavaFX Aula1
 
slides PDI 2007 leonardo
slides PDI 2007 leonardoslides PDI 2007 leonardo
slides PDI 2007 leonardo
 
Slides PDI 2009 Raphael versao4
Slides PDI 2009 Raphael versao4Slides PDI 2009 Raphael versao4
Slides PDI 2009 Raphael versao4
 
Classes Internas
Classes InternasClasses Internas
Classes Internas
 
Operadores Java
Operadores JavaOperadores Java
Operadores Java
 
JavaFX
JavaFXJavaFX
JavaFX
 

Minicurso Java && Cl

  • 1. Adriano Marinho Graduando em Computação na UFPB Raphael Marques Mestrando em Informática na UFPB
  • 2. São as linguagens mais utilizadas no mundo.  C no Desktop e Java na Web  Porque saber as duas?   Mais conhecimento sobre programação.  Nem tudo se resolve numa linguagem só.  Não seja limitado. R2
  • 3. Java:   Programação Orientada a Objetos  Compilada para Bytecodes  “Interpretada” em tempo de execução pela JVM  Write once! Run Anywere!  A JVM TEM O PODER! R3
  • 4. C:   Programação Estruturada  Compilada diretamente para código nativo  VOCÊ TEM O PODER! A4
  • 5. #include <stdio.h> int main () { printf(“Hello World!n”); return 0; } A5
  • 6. public class Classe{ public static void main(String[] args){ System.out.println(“Hello World!”); } } R6
  • 7. Use o console (prompt de comando no  Windows) para compilar! Você deve ter o Java JDK instalado na sua  máquina. Exemplo:  javac NomeDaClasse.java java NomeDaClasse R7
  • 8. Em Java, módulo é descrito por uma classe.  Classes adicionais são carregadas  automaticamente.  Importar outras classes:  import pacote.Classe;  import pacote.*;  import static pacote.Classe.campo  import static pacote.Classe.*; Classpath:   java –cp biblioteca.jar SuaClasse R8
  • 9. Use o console (prompt de comando no  Windows) para compilar! Você deve ter algum compilador C instalado  na sua máquina. Exemplo:  gcc nomeDoPrograma.c –o nomeDoPrograma nomeDoPrograma A9
  • 10. Para isso escrevemos arquivos de cabeçalho  (.h), além dos arquivos .c. Nos arquivos .h devem ficar:   protótipos das funções, definições de estruturas e variáveis globais.  gcc main.c Arq1.c Arq2.c -o MeuProg #include<modulo.h>  A10
  • 11. C JAVA char (8 bits) boolean (false,true)   int (? bits c/ sinal) byte (8 bits c/ sinal)   float (tamanho do int) short (16 bits c/ sinal)   double (?) char (16 bits s/ sinal)   int (32 bits c/ sinal)  long (64 bits c/ sinal)  float (32 bits)  double (64 bits)  A11
  • 12. Modificadores: Exemplos:    short  short int  long  short  signed  signet char  unsigned  unsigned long int A12
  • 13. Em C, um ponteiro contêm um endereço de  memória.  Um ponteiro pode ser utilizado para qualquer estrutura na memória.  Ponteiros permitem operações aritméticas. Em Java, uma referência faz referência a um  objeto na memória.  Uma referência só é utilizada com objetos.  Referências NÃO permitem operações aritméticas. R13
  • 14. C   lixo  Ponteiros com lixo podem causar travamentos do SO Java   null  false 0  0.0 R14
  • 15. Usamos System.out.println()  Exemplos:  System.out.println(); System.out.println(x); System.out.println(“HelloWorld”); System.out.print(“valor: ” + x); System.out.println(“valor: ” + x + 1); System.out.printf(...); R15
  • 16. Usamos System.in.read()   Lê um byte por vez A classe Scanner  Scanner scan = new Scanner(System.in) int x = scan.nextInt(); float f = scan.nextFloat(); String token = scan.next(); String linha = scan.nextLine(); R16
  • 17. Usamos printf(), uma função da biblioteca  stdio.h Exemplos:  printf(“%cn”, 'a‟); →a →a printf(“%cn”, 65); →1977 printf(“%dn”, 1977); →650000 printf(“%ldn”, 650000L); →0xABC printf(“%xn”, 2748); →123 printf(“%on”, 83); A17
  • 18. Exemplos:  → 1977 printf(“%6d n”, 1977); →001977 printf(“%06d n”, 1977); →3.14 printf(“%4.2f n”, 3.1416); →???? printf(“%+.0e n“,3.1416); →3.1416e1 printf(“%En”, 3.1416); → 10 printf(“%*d n”, 5, 10); printf(quot;%sn”, “Adrianoquot;); →Adriano →1 + 2 = 3 printf(“%d + %d = %d”,1,2,3); A18
  • 19. Usamos scanf(), uma função da biblioteca  stdio.h Exemplos:  char str [80]; scanf (quot;%squot;,str); int i; scanf (quot;%dquot;,&i); scanf (quot;%xquot;,&i); scanf (quot;%dquot;,i); A19
  • 20. Conversão implícita:   Tipos: ▪ Por atribuição; ▪ Alargamento de inteiros; ▪ Compatibilidade de operandos;  Todos os tipos de C são compatíveis entre si!!! Conversão explícita: type cast.   (int)x  (float)y A20
  • 21. Conversão implícita:   Onde não houver perda de precisão  Ex: ▪ float f = 5; ▪ double d = f + 1.5; ▪ byte b = 1000; ▪ int x = 1.0; Conversão explícita: type cast   (int)x  (float)y R21
  • 22. Java e C:  + - * / > >= < <= | & ! ^ -- ++ -= += << >> = == != % ~ ^ ?: && || Sizeof em C:   sizeof( int ) R22
  • 23. Em C:   O modificador const ▪ const int PI = 3.1415;  Macros ▪ #define PI 3.1415 Em Java:   O modificador final ▪ final int PI = 3.1415; R23
  • 24. C:   A condição é um inteiro ▪ false: zero ▪ true: qualquer valor diferente de zero  Ex: ▪ if(x == 5){...} ▪ if(x = 5){...} ▪ if(x == 1){...} → if(x != 0){...} → if(x){...} A24
  • 25. Java:   A condição é sempre um boolean ▪ int x = 4; ▪ if( x == 4 ){...} ▪ if( x ){...} → apenas se x for boolean A25
  • 26. Java e C:   if  if-else  while  do-while  switch-case  break  continue A26
  • 27. int i; for(i = 0; i < 10; i++){ ... } A27
  • 28. for(int i = 0; i < 10; i++){ ... } int[] numeros = ... foreach(int n : numeros){ ... } R28
  • 29.
  • 30. Escreva um programa na sua nova linguagem  que leia um valor de raio e calcule a área e o perímetro. Exiba a área e perímetros calculados.  O programa pergunta o raio até que o usuário  digite um valor negativo. R30
  • 31. Sequência de posições de memória  C não faz controle de limite do array  Representado por um ponteiro.   Estático: ▪ int p[10]; ▪ int[] p = int[10]; ▪ int p[x];  Dinâmico ▪ int p* = (int*) malloc( sizeof( int ) * tamanho ); ▪ free(p); Tamanho de um array:   sizeof( array ) / sizeof( tipoDoArray) ▪ sizeof( p ) / sizeof( int )  O mais comum é guardar o tamanho do array numa variável. A31
  • 32. Arrays são objetos.  São acessados pela sua referência.  Ex:  → referência nula int[] a; → inicialização int[] a = new int[10]; → inicialização int[] a = new int[x]; int[] a = new int[]{1,2,3,4,5}; → inicialização → abreviação int[] a = new {1,2,3,4,5}; → n de elementos a.length → 3 elemento do array a[2] int a[10]; a++; R32
  • 33. Métodos:  Ex:  static void imprimeValor(int valor){ System.out.println(valor); } static float soma(float valor1, float valor2){ return valor1 + valo2; } R33
  • 34. Sobrecarga de métodos:   Java diferencia 2 métodos com o mesmo nome pela quantidade e tipo de parâmetros. Ex:  static float metodo(float v1, float v2){...} static float metodo(float v1){...} static float metodo(float v1, int v2){...} static int metodo(float v1, float v2){...} R34
  • 35. Passagem de parâmetro sempre por cópia.   Objeto como parâmetro ▪ É feita uma copia da referência. ▪ Simula passagem de parâmetro por referência. R35
  • 36. Funções:   C diferencia funções apenas pelo nome!  Nada de sobrecarga de funções!!! Ex:  int SomarDoisNumeros (int a, int b){ return a + b; } void ImprimirOi(){ printf(“Oi!n”); } A36
  • 37. Passagem de parâmetro sempre por cópia.   Ex: int SomarDoisNumeros (int a, int b) Passagem de parâmetro por referência.   É emulada utilizando-se ponteiros  Ex: int SomarDoisNumeros (int *a, int *b){...} ... int c = SomarDoisNumeros (&a, &b); A37
  • 38. Strings em C são arrays! (e podem ser alterados)   char str[] = “String”;  char *str = “String”; termina com ‘0’   “String” → „S‟ , „t‟ , „r‟ , „i‟ , „n‟ , „g‟ , „0‟ Operações (definidas em string.h):   strcpy  strlen  strcmp  strstr  strtkn A38
  • 39. Classe String  Não precisa de „0‟ no final!!!  Strings não podem ser alteradas!!!   Para isso use StringBuffer. R39
  • 40. Operações:  String nome = “Raphael” →7 nome.length() nome + “ Marques” → “Raphael Marques” → „a‟ nome.charAt(1) → true nome.contains(“Raphael”) → false nome.equals(“Raphael”) → ”raphael marques” nome.toLowerCase() → “500” String.valueOf(500) R40
  • 41. C:   O programador aloca e libera memória.  Não existe gerenciamento automático de memória. Java:   O programador aloca memória  O Garbage Collector libera memória quando um objeto não é mais referenciado.  System.gc() é apenas uma SUGESTÃO. A41
  • 42.
  • 43. Escreva um programa na sua nova linguagem  que leia N notas do usuário. Calcule a média das notas e exiba o resultado.  Informe se o aluno foi aprovado, reprovado  ou está na final. No caso da final, informe quanto ele precisa  tirar na prova final para passar. A43
  • 44. Erros típicos:   Redeclaração de variáveis/funções;  Avisos de variáveis sem inicialização;  Funções com número de parâmetros incorretos;  Etc; A44
  • 45. Exceções   Param a execução do programa sem travar o SO.  Exceções de vários tipos: ▪ NullPointerException ▪ ArrayIndexOutOfBoundsException StackTrace:  Exception in thread quot;main“ ArrayIndexOutOfBoundsException: 500 at Teste.metodo2(Teste.java:4) at Teste.metodo1(Teste.java:8) at Teste.main(Teste.java:13) R45
  • 46. JAVA NÃO É C!!!  Deixe o Garbage Collector trabalhar...   objetoInutil = null; Declare as variáveis quando for utilizá-las.  R46
  • 47. C NÃO É JAVA!!!  Todo cuidado com ponteiros é pouco!!!  Não esqueça do lixo!!!  Cuidado com o tamanho dos tipos primitivos.  Lembre de liberar memória.  A47
  • 48. C:   Notas de aula do Prof. Ulysses Oliveira ▪ http://www.ulysseso.com/  Biblioteca padrão de C ▪ http://www.utas.edu.au/infosys/info/documentation/C/CStdL ib.html Java:   Procure no Google: java api 1.6 ▪ http://java.sun.com/javase/6/docs/api/  Procure no Google: tutorial sun ▪ http://java.sun.com/docs/books/tutorial/ A48
  • 49. C: Java:    math.h  System  string.h  File  time.h  Math  Arrays A49
  • 50. C:   Tenha paciência e cuidado! Java:   Toda classe começa com letra maiúscula: ▪ Pessoa, Carro, String, System, etc...  O nome do arquivo deve ser IGUAL ao nome da classe: ▪ class Pessoa → Pessoa.java R50
  • 51. C: Java:    Dev C++  JBuilder  CBuilder  NetBeans  NetBeans  Eclipse  Eclipse R51
  • 52. Adriano Marinho Graduando em Computação na UFPB Raphael Marques Mestrando em Informática na UFPB