Você está na página 1de 12

Questões de Autoavaliação - Listas e procedimentos / Comunicação

entre objetos

1) Considere o conceito de Transação base e determine se a seguinte afirmação é


verdadeira ou falsa:

“O conceito de Transação base indica o nome da transação (e seu nível) cuja


tabela associada deseja-se percorrer no For each. Não é obrigatório indicar a
Transação base em um For each.”

2) A partir do desenho de transações apresentado, é necessária uma lista que


apresente todos os discos (Disc) de música pop (GenreId = 2) de cantores ingleses
(CountryId = 2).

Country Singer Disc


{ { {
CountryId* SingerId* DiscId*
CountryName SingerName DiscTitle
} CountryId GenreId
CountryName GenreName
Genre
} SingerId
{
SingerName
GenreId*
}
GenreName
}

a) For each Disc


Where GenreId = 2
For each Disc
Where CountryId = 2
Print Printblock1 – (DiscTitle, SingerName)
Endfor
Endfor

Questões de Autoavaliação |1
b) For each Disc
Where GenreId = 2
Where CountryId = 2
Print Printblock1 – (DiscTitle, SingerName)
Endfor

For each Genre


c)
Where GenreId = 2
For each Country
Where CountryId = 2
For each Disc
Print Printblock1 – (DiscTitle, SingerName)
Endfor
Endfor
Endfor

3) A partir do desenho de transações apresentado, é necessária uma lista que


apresente o detalhamento completo (cabeçalho e linhas) do disco DiscId = 4

Singer Disc DiscTitle SingerName


{ {
Song Title1
SingerId* DiscId*
Song Title2
SingerName DiscTitle
Song Title3
} SingerId
-----------
SingerName
Song
{
SongId*
SongName
}
}

Questões de Autoavaliação |2
a) For each Disc
Where DiscId = 4
Print Printblock1 – (DiscTitle, SingerName)
For each Disc.Song
Print Printblock2 – (SongTitle)
Endfor
Endfor

b)
For each Disc.Song
Where DiscId = 4
Print Printblock1 – (DiscTitle, SingerName)
Print Printblock2 – (SongTitle)
Endfor

c) For each Disc.Song


Where DiscId = 4
Print Printblock1 – (DiscTitle, SingerName)
For each Disc.Song
Print Printblock2 – (SongTitle)
Endfor
Endfor

Questões de Autoavaliação |3
4) A partir do desenho de transações apresentado, é necessária uma lista que
apresente todos os clientes com um total faturado maior que $5000. No caso
de não existir nenhum, será mostrada uma mensagem.

Customer Invoice
{ {
CustomerId* InvoiceId*
CustomerName InvoiceDate
} CustomerId
CustomerName
InvoiceAmount
}

a) For each Customer


Where Sum(InvoiceAmount) > 5000
For each Customer
Print Printblock1 – (CustomerId, CustomerName)
When none
Print printblock2 – (“There are no Customers registered”)
Endfor
Endfor

b) For each Customer


Where Sum(InvoiceAmount) > 5000
Print Printblock1 – (CustomerId, CustomerName)
When none
Print printblock2 – (“There are no Customers registered”)
Endfor

Questões de Autoavaliação |4
c) For each Customer
Where Sum(InvoiceAmount) > 5000
Print Printblock1 – (CustomerId, CustomerName)
Endfor
When none
Print printblock2 – (“There are no Customers registered”)

5) A partir do desenho de transações apresentado, é necessária uma lista das


disciplinas (Subject) agrupadas por professor (Teacher). Deseja-se ver todos os
professores, independentemente deste ministrar uma disciplina ou não.

Teacher Subject
{ {
TeacherId* SubjectId*
TeacherName SubjectName
} TeacherId
TeacherName
}

a) For each Teacher


Print Printblock1 – (TeacherName)
For each Subject
Print Printblock2 – (SubjectName)
Endfor
Endfor

b) For each Subject


Print Printblock1 – (TeacherName)
Print Printblock2 – (SubjectName)
Endfor

Questões de Autoavaliação |5
c) For each Teacher
Print Printblock1 – (TeacherName)
Endfor
For each Subject
Print Printblock2 – (SubjectName)
Endfor
Endfor

6) A partir do desenho de transações apresentado, é necessária uma lista das


disciplinas (Subject) agrupadas por professor (Teacher). Deseja-se ver somente
aqueles professores que ministram alguma disciplina.

Teacher Subject
{ {
TeacherId* SubjectId*
TeacherName SubjectName
} TeacherId
TeacherName
}

a) For each Teacher


Print Printblock1 – (TeacherName)
For each Subject
Print Printblock2 – (SubjectName)
Endfor
Endfor

Questões de Autoavaliação |6
b)
For each Subject
Print Printblock1 – (TeacherName)
For each Subject
Print Printblock2 – (SubjectName)
Endfor
Endfor

c) For each Subject order TeacherId


Print Printblock1 – (TeacherName)
For each Subject
Print Printblock2 – (SubjectName)
Endfor
Endfor

7) A partir da implementação apresentada, indique se a seguinte afirmação é


correta ou não:
“Para cada fornecedor (Supplier) recuperam-se todos os clientes registrados
(Customer).”

Customer Invoice Supplier


{ { {
CustomerId* InvoiceId* SupplierId*
CustomerName InvoiceDate SupplierName
} CustomerId }
CustomerName
}

For each Supplier


Print Printblock1 – (SupplierName)
For each Customer
Print Printblock2 – (CustomerName)
Endfor
Endfor

Questões de Autoavaliação |7
8) Considere o desenho de transações mostrado. É necessário listar, sem que sejam
vistos elementos repetidos, todas as salas (Room) onde é ministrado algum curso
(Course).

Room Course
{ {
RoomId* CourseId*
RoomDescription CourseName
} RoomId
RoomDescription
}

a) For each Course


Print Rooms --- (RoomId, RoomDescription)
Endfor

b) For each Room


Unique RoomId
Print Rooms --- (RoomId, RoomDescription)
Endfor

c) For each Course


Unique RoomId
Print Rooms --- (RoomId, RoomDescription)
Endfor

Questões de Autoavaliação |8
9) Considere o desenho de transações e implementação mostrados. Determine o
que considere correto.

Teacher Course
{ {
TeacherId* CourseId* For each Course
TeacherName CourseName Unique TeacherId
} TeacherId &Qty = Count(CourseName)
TeacherName Print Teachers
} Endfor

a) São listados todos os professores (Teacher), sem repetições, cada um com sua
respectiva quantidade de cursos.

b) São listados todos os professores (Teacher), sem repetições, mas o count retorna
a quantidade total de cursos, pois a tabela base do For each e da fórmula inline
é COURSE.

c) Nenhuma das opções anteriores está correta.

10) A partir da implementação mostrada, determine se a seguinte afirmação está


correta (verdadeira) ou não (falsa).

“A fórmula Count adicionará a partir do contexto uma condição implícita em sua


avaliação: Contará todos os cursos para o atributo declarado na cláusula unique,
TeacherId.”

Teacher Course
{ {
TeacherId* CourseId* For each Course
TeacherName CourseName Unique TeacherId
} TeacherId &Qty = Count(CourseName)
TeacherName Print Teachers
} Endfor

Questões de Autoavaliação |9
11) A partir do desenho de transações apresentado, é necessária uma lista que
mostre os alunos aprovados (StudentExamResult >= 70) em um determinado
exame recebido por parâmetro. Indique a opção que considere correta.

Student Exam
{ {
StudentId* ExamId*
StudentName ExamDate
} Student
{
StudentId*
StudentExam
StudentExamResult
}
}

a) Parm(ExamId);

For each Exam


Where StudentExamResult >= 70
Print Printblock1 – (StudentName)
Endfor

b) Parm(&ExamId);

For each Exam.Student


Where StudentExamResult >= 70
Print Printblock1 – (StudentName)
Endfor

Q u e s t õ e s d e A u t o a v a l i a ç ã o | 10
c) Parm(ExamId);

For each Exam.Student


Where StudentExamResult >= 70
Print Printblock1 – (StudentName)
Endfor

12) A partir da implementação apresentada, indique o que considere correto.

Product Supplier
{ {
ProductId* SupplierId*
ProductName SupplierName
SupplierId }
SupplierName
}

Parm(&SupplierId);

For each Product


Print Printblock1 – (ProductName)
Endfor

a) Serão listados apenas os produtos registrados para o valor do fornecedor


(&SupplierId) recebido por parâmetro. Automaticamente, GeneXus aplicará esse
filtro.

b) Serão listados todos os produtos, independentemente do valor recebido no


parâmetro. Ao se tratar de uma variável GeneXus, não aplicará nenhum filtro de
forma automática.

Q u e s t õ e s d e A u t o a v a l i a ç ã o | 11
13) Considere a regra Parm declarada no objeto B mostrada:

ObjectB

Rules:

Parm(out: &CountryId);

A partir de outro objeto A, é chamado este objeto B conforme mostrado:

ObjectA

ObjectB(CountryId)

Determine o que considere correto:

a) A chamada implementada no objeto A está totalmente correta.

b) A chamada está incorreta. A regra Parm do objeto B tem declarado o operador


out, o que estaria indicando que seja devolvido o valor resultante na variável
&CountryId. A chamada deve ser assim:

ObjectA

&CountryId = ObjectB()

c) Nenhuma das opções anteriores está correta.

Q u e s t õ e s d e A u t o a v a l i a ç ã o | 12

Você também pode gostar