Minicurso Java && Cl

  • 1,720 views
Uploaded on

Minicurso sobre Java && C ministrado na I Semana da Computação do DI/UFPB.

Minicurso sobre Java && C ministrado na I Semana da Computação do DI/UFPB.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,720
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
78
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 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
  • 30. 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
  • 31. 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
  • 32. Métodos:  Ex:  static void imprimeValor(int valor){ System.out.println(valor); } static float soma(float valor1, float valor2){ return valor1 + valo2; } R33
  • 33. 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
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. Classe String  Não precisa de „0‟ no final!!!  Strings não podem ser alteradas!!!   Para isso use StringBuffer. R39
  • 39. 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
  • 40. 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
  • 41. 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
  • 42. 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
  • 43. 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
  • 44. JAVA NÃO É C!!!  Deixe o Garbage Collector trabalhar...   objetoInutil = null; Declare as variáveis quando for utilizá-las.  R46
  • 45. 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
  • 46. 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
  • 47. C: Java:    math.h  System  string.h  File  time.h  Math  Arrays A49
  • 48. 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
  • 49. C: Java:    Dev C++  JBuilder  CBuilder  NetBeans  NetBeans  Eclipse  Eclipse R51
  • 50. Adriano Marinho Graduando em Computação na UFPB Raphael Marques Mestrando em Informática na UFPB