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