Prévia do material em texto
Página 1 de 12
UNIVERSIDADE VEIGA DE ALMEIDA
Curso Superior em Gestão da Tecnologia da Informação
PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS
AVA 1 – DESENVOLVIMENTO DE UM APLICATIVO PARA
CÁLCULO DA MÉDIA DAS DISCIPLINAS EAD
Campus: Polo Niterói – Centro
Turno: Virtual
Página 2 de 12
Enunciado da Avaliação
Analise o procedimento para o cálculo da média de sua disciplina e crie uma
aplicação (app) que seja capaz de receber as notas de A1, A2 e A3 de um
aluno e apresentar sua média final na disciplina.
Um aluno precisa calcular a média obtida em uma disciplina EaD na nossa
instituição, mas não sabe exatamente como fazer isso. O aluno em questão é
um exemplo de usuário para uma aplicação que solicite as notas de A1, A2 e
A3 e apresente sua média.
Procedimentos para elaboração do TD:
Crie um projeto no Android® Studio e desenvolva a aplicação. Prepare um
documento em Word com uma capa (apresentando a instituição, o curso, a
disciplina, o aluno e o professor), uma introdução, o conteúdo com os códigos
da tela (código XML da View) e os códigos de programação (códigos Java® da
Controller), a conclusão e a bibliografia.
Realize o envio da tarefa incluindo o arquivo em Word (ou em PDF).
Página 3 de 12
Entrega da Avaliação
De acordo com o solicitado, criei um aplicativo para que um aluno possa
realizar o cálculo da média entre as notas das avaliações A1, A2 e A3 de
determinada disciplina; de acordo com os critérios e pesos utilizados pela UVA
para calcular a nota final ponderada.
Avaliação Tipo da Avaliação Peso Nota
A1
Avaliação On-line 1
Avaliação On-line 2
Peso 4 0 a 10 pontos
A2
Avaliação
Presencial Regular
Peso 6 0 a 10 pontos
A3
Avaliação
Substitutiva da A2
Peso 6 0 a 10 pontos
Critérios:
• A nota da A1 não poderá ser substituída por outra nota.
o Uma nota igual a 0,0 (zero) pontos na A1 implicará na reprovação
do(a) aluno(a) na(s) disciplina(s).
• A nota da A2 e/ou A3 não poderá ser inferior a 5,0 (cinco), pois isso
implicará na reprovação do(a) aluno(a) na(s) disciplina(s).
• A nota da A3 terá as seguintes funções:
o Avaliação de 2ª chamada da A2.
o Avaliação substitutiva para o(a) aluno(a) melhorar sua Nota Final
Ponderada, substituindo a A2, caso a nota de A3 seja superior.
• Os campos para entrada das notas A1 e A2 são obrigatórios, sendo
assim, se algum deles estiver vazio, o cálculo não será realizado.
Página 4 de 12
Código XML da View:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/titleCalculadoraMedia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="29dp"
android:text="Calculadora de Média - UVA"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/inputA1"
android:layout_width="0dp"
android:layout_height="42dp"
android:layout_marginEnd="57dp"
android:layout_marginRight="57dp"
android:ems="10"
android:inputType="numberDecimal"
app:layout_constraintBaseline_toBaselineOf="@+id/labelA1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/labelA1" />
<TextView
android:id="@+id/labelA1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="65dp"
android:layout_marginLeft="65dp"
android:layout_marginTop="49dp"
android:layout_marginEnd="2dp"
android:layout_marginRight="2dp"
android:text="Nota da A1:"
android:textSize="15sp"
android:textStyle="bold"
Página 5 de 12
app:layout_constraintEnd_toStartOf="@+id/inputA1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleCalculadoraMedia" />
<TextView
android:id="@+id/labelCampoObrigatorio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:layout_marginLeft="2dp"
android:text="Campo obrigatório"
android:textColor="#FFF44336"
android:textSize="11sp"
android:textStyle="italic"
app:layout_constraintBottom_toBottomOf="@+id/inputA1"
app:layout_constraintStart_toStartOf="@+id/inputA1"
app:layout_constraintTop_toBottomOf="@+id/inputA1" />
<EditText
android:id="@+id/inputA2"
android:layout_width="0dp"
android:layout_height="42dp"
android:layout_marginEnd="59dp"
android:layout_marginRight="59dp"
android:ems="10"
android:inputType="numberDecimal"
app:layout_constraintBaseline_toBaselineOf="@+id/labelA2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/labelA2" />
<TextView
android:id="@+id/labelA2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="65dp"
android:layout_marginLeft="65dp"
android:layout_marginTop="129dp"
android:text="Nota da A2:"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/inputA2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleCalculadoraMedia" />
<TextView
android:id="@+id/labelCampoObrigatorio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:layout_marginLeft="2dp"
Página 6 de 12
android:text="Campo obrigatório"
android:textColor="#F44336"
android:textSize="11sp"
android:textStyle="italic"
app:layout_constraintBottom_toBottomOf="@+id/inputA2"
app:layout_constraintStart_toStartOf="@+id/inputA2"
app:layout_constraintTop_toBottomOf="@+id/inputA2" />
<EditText
android:id="@+id/inputA3"
android:layout_width="0dp"
android:layout_height="42dp"
android:layout_marginEnd="59dp"
android:layout_marginRight="59dp"
android:ems="10"
android:inputType="numberDecimal"
app:layout_constraintBaseline_toBaselineOf="@+id/labelA3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/labelA3" />
<TextView
android:id="@+id/labelA3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="65dp"
android:layout_marginLeft="65dp"
android:layout_marginTop="209dp"
android:text="Nota da A3:"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/inputA3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleCalculadoraMedia" />
<TextView
android:id="@+id/labelCampoSubsitutivo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:layout_marginLeft="2dp"android:text="Nota substitutiva da A2, caso seja superior."
android:textColor="#373D3E"
android:textSize="10sp"
android:textStyle="italic"
app:layout_constraintBottom_toBottomOf="@+id/inputA3"
app:layout_constraintStart_toStartOf="@+id/inputA3"
app:layout_constraintTop_toBottomOf="@+id/inputA3" />
<Button
android:id="@+id/calculate"
Página 7 de 12
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="65dp"
android:layout_marginLeft="65dp"
android:layout_marginTop="40dp"
android:onClick="calcular"
android:text="Calcular"
app:backgroundTint="@color/teal_700"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textAviso" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="80dp"
android:layout_marginLeft="80dp"
android:layout_marginTop="40dp"
android:onClick="limpar"
android:text="Limpar"
app:backgroundTint="?attr/colorError"
app:layout_constraintStart_toEndOf="@+id/calculate"
app:layout_constraintTop_toBottomOf="@+id/textAviso" />
<TextView
android:id="@+id/labelResultado"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="65dp"
android:layout_marginLeft="65dp"
android:layout_marginTop="45dp"
android:text="Nota final:"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/calculate" />
<TextView
android:id="@+id/textResultado"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="165dp"
android:layout_marginLeft="165dp"
android:layout_marginTop="45dp"
android:textColor="#673AB7"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/calculate" />
Página 8 de 12
<TextView
android:id="@+id/textAviso"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="65dp"
android:layout_marginLeft="65dp"
android:layout_marginTop="40dp"
android:textColor="#F40505"
android:textSize="11sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/inputA3" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_begin="20dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
Código Java:
package com.example.AVA1calculadorademedia;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText notaA1, notaA2, notaA3;
TextView resultado, aviso;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
notaA1 = (EditText) findViewById(R.id.inputA1);
notaA2 = (EditText) findViewById(R.id.inputA2);
notaA3 = (EditText) findViewById(R.id.inputA3);
resultado = (TextView) findViewById(R.id.textResultado);
aviso = (TextView) findViewById(R.id.textAviso);
Página 9 de 12
}
public void calcular(View v) {
String n1 = notaA1.getText().toString();
String n2 = notaA2.getText().toString();
String n3 = notaA3.getText().toString();
if(!n1.isEmpty() && !n2.isEmpty()) {
aviso.setText("");
float nota1 = Float.parseFloat(n1);
float nota2 = Float.parseFloat(n2);
float maiorNota = nota2;
if(!n3.isEmpty()) {
float nota3 = Float.parseFloat(n3);
if(nota3 > nota2) maiorNota = nota3;
}
if(nota1 < 0.1 || maiorNota < 5) {
double notaFinal = (nota1*0.4) + (maiorNota*0.6) / 2;
resultado.setText(String.format("%,.2f", notaFinal) + " - Reprovado");
} else {
double notaFinal = (nota1*0.4) + (maiorNota*0.6);
if(notaFinal >= 6) {
resultado.setText(String.format("%,.2f", notaFinal) + " - Aprovado");
} else {
resultado.setText(String.format("%,.2f", notaFinal) + " -
Reprovado");
}
}
} else {
resultado.setText("");
aviso.setText("Atenção: Os campos \"Nota da A1\" e \"Nota da A2\" são
obrigatórios");
}
}
public void limpar(View v) {
notaA1.setText("");
notaA2.setText("");
notaA3.setText("");
resultado.setText("");
aviso.setText("");
}
}
Página 10 de 12
Telas da Aplicação:
Página 11 de 12
Conclusão:
A aplicação foi desenvolvida a partir da IDE Android Studio utilizando a
linguagem de programação Java.
Foi possível utilizar vários recursos excelentes do Android Studio e que tornam
muito simples o desenvolvimento, como por exemplo o fato de podermos
arrastar os elementos diretamente para o layout da tela e configurar os
atributos de maneira bem rápida.
Outro ponto importante é que podemos testar a aplicação durante o
desenvolvimento a partir da criação de um dispositivo virtual, podendo ser
possível localizar possíveis bug para corrigir.
Página 12 de 12
Referências:
Fonte: Ebook – Desenvolvimento de Aplicações Mobile e Distribuídas.
Módulos, Unidades 1 e 2. Roteiro de Estudo UVA - acesso em: 18/08/2023.
Fonte: developers - ANDROID STUDIO. Conhecer o Android Studio. Disponível
em: https://developer.android.com/studio/intro?hl=pt-br - acesso em:
24/08/2023.
Fonte: Programação Android Iniciante - Exemplo 01 - Cálculo de Média de
Duas Notas. Por Paulo Ricardo. 7 de set. de 2017. Disponível em:
https://www.youtube.com/watch?v=6kpfXY4P3xI - acesso em: 25/08/2023.
Fonte: Trabalhando com a propriedade Font. Disponível em:
https://www.devmedia.com.br/trabalhando-com-a-propriedade-
font/24483#:~:text=A%20propriedade%20font%20%C3%A9%20respons%C3%
A1vel,valor%20normal%2C%20italic%20e%20oblique - acesso em:
24/08/2023.
Software utilizado: Android Studio.
https://developer.android.com/studio/intro?hl=pt-br
https://www.youtube.com/watch?v=6kpfXY4P3xI
https://www.devmedia.com.br/trabalhando-com-a-propriedade-font/24483#:~:text=A%20propriedade%20font%20%C3%A9%20respons%C3%A1vel,valor%20normal%2C%20italic%20e%20oblique
https://www.devmedia.com.br/trabalhando-com-a-propriedade-font/24483#:~:text=A%20propriedade%20font%20%C3%A9%20respons%C3%A1vel,valor%20normal%2C%20italic%20e%20oblique
https://www.devmedia.com.br/trabalhando-com-a-propriedade-font/24483#:~:text=A%20propriedade%20font%20%C3%A9%20respons%C3%A1vel,valor%20normal%2C%20italic%20e%20oblique